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

Issue metadata

Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 2
Type: Bug


Sign in to add a comment
link

Issue 521692: Remove "ignore pending stylesheets" system and make sense of FOUC avoidance

Reported by esprehn@chromium.org, Aug 17 2015 Project Member

Issue description

We shouldn't freeze the stylesheets after the first usage of an API that ignores pending sheets. Today if three sheets are loading (A, B, C) and B loads, then you touch offsetTop, then C loads, you still only get answers as if B loaded. We ignore the finished sheet C until all sheets load.

We should also remove the system that paints white to avoid FOUC and just not pump frames if the sheets aren't loaded.

See design doc:
https://docs.google.com/document/d/1waQggCtPb44gwTp8PK5iz4B-YTiSOSBqbqtbopNrxNA/edit#heading=h.n3zedcnne4jx
 

Comment 1 by esprehn@chromium.org, Aug 17 2015

Already landed patches:

Don't resume commits after every layout.
https://codereview.chromium.org/1292143003

Remove FrameView::m_firstLayoutCallbackPending, nothing uses it.
https://codereview.chromium.org/1294713005

Remove FOUC avoidance from BlockPainter and DeprecatedPaintLayerPainter.
https://codereview.chromium.org/1297803002

Comment 2 by bugdroid1@chromium.org, Aug 17 2015

Project Member
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=200664

------------------------------------------------------------------
r200664 | esprehn@chromium.org | 2015-08-17T20:14:06.282824Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/frame/FrameView.cpp?r1=200664&r2=200663&pathrev=200664
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebViewImpl.cpp?r1=200664&r2=200663&pathrev=200664
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/frame/FrameView.h?r1=200664&r2=200663&pathrev=200664
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebViewImpl.h?r1=200664&r2=200663&pathrev=200664

Move dispatchDidFirstVisuallyNonEmptyLayout into WebViewImpl.

This removes the last user of didLayoutWithPendingStylesheets() and instead moves
the call to dispatchDidFirstVisuallyNonEmptyLayout into WebViewImpl so the
notification to the embedder is tied to the pumping of frames. This changes the
behavior of this notification to only dispatch for the top level frame,
but Chromium already has a check for that:

https://chromium.googlesource.com/chromium/src/+/976d4d9a2735bdc11e5a641c84b6382566d48f1d/content/renderer/render_frame_impl.cc#3472

RenderFrameImpl::didFirstVisuallyNonEmptyLayout's first check is

if (frame->parent())
    return;

so we already ignore all frames that are not the main frame. Future patches will
clean up this interface so it's obvious this really only happens for the main
frame.

BUG=521692
R=dglazkov@chromium.org

Review URL: https://codereview.chromium.org/1295053002 .
-----------------------------------------------------------------

Comment 3 by bugdroid1@chromium.org, Aug 17 2015

Project Member
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=200669

------------------------------------------------------------------
r200669 | esprehn@chromium.org | 2015-08-17T21:23:20.788961Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/frame/FrameView.cpp?r1=200669&r2=200668&pathrev=200669
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebViewImpl.cpp?r1=200669&r2=200668&pathrev=200669
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/frame/FrameView.h?r1=200669&r2=200668&pathrev=200669
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebViewImpl.h?r1=200669&r2=200668&pathrev=200669

Revert of Move dispatchDidFirstVisuallyNonEmptyLayout into WebViewImpl. (patchset #2 id:20001 of https://codereview.chromium.org/1295053002/ )

Reason for revert:
Looks like it caused a race in:

ProfileErrorBrowserTestInstance/ProfileErrorBrowserTest.CorruptedProfile


Original issue's description:
> Move dispatchDidFirstVisuallyNonEmptyLayout into WebViewImpl.
> 
> This removes the last user of didLayoutWithPendingStylesheets() and instead moves
> the call to dispatchDidFirstVisuallyNonEmptyLayout into WebViewImpl so the
> notification to the embedder is tied to the pumping of frames. This changes the
> behavior of this notification to only dispatch for the top level frame,
> but Chromium already has a check for that:
> 
> https://chromium.googlesource.com/chromium/src/+/976d4d9a2735bdc11e5a641c84b6382566d48f1d/content/renderer/render_frame_impl.cc#3472
> 
> RenderFrameImpl::didFirstVisuallyNonEmptyLayout's first check is
> 
> if (frame->parent())
>     return;
> 
> so we already ignore all frames that are not the main frame. Future patches will
> clean up this interface so it's obvious this really only happens for the main
> frame.
> 
> BUG=521692
> R=dglazkov@chromium.org
> 
> Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=200664

TBR=dglazkov@chromium.org,ojan@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=521692

Review URL: https://codereview.chromium.org/1294683004
-----------------------------------------------------------------

Comment 4 by bugdroid1@chromium.org, Aug 18 2015

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0ea17fce0d5218c909985e2216051eab79419463

commit 0ea17fce0d5218c909985e2216051eab79419463
Author: esprehn <esprehn@chromium.org>
Date: Tue Aug 18 05:06:33 2015

ProfileErrorBrowserTest should wait for layout.

The test was checking for the Startup.FirstWebContents.NonEmptyPaint
histogram metric which is recorded by the didFirstVisuallyNonEmptyLayout
client callback out of blink. The test doesn't actually wait until after
the page does a layout though so it'll randomly fail when it loses the
race. Currently blink issues this callback too early when loading pages,
but soon (https://codereview.chromium.org/1295053002) it will start
only issuing the callback after stylesheets have loaded and the page
has started painting matching the usage in Chromium where this callback
maps to painting, not to layout.

To fix the race we now wait for requestAnimationFrame to run which will
ensure that the blink pipeline has been run, and layout and paint
processed before testing for the values of the UMA metrics.

BUG=521692

Review URL: https://codereview.chromium.org/1284383007

Cr-Commit-Position: refs/heads/master@{#343796}

[modify] http://crrev.com/0ea17fce0d5218c909985e2216051eab79419463/chrome/browser/ui/profile_error_browsertest.cc

Comment 5 by bugdroid1@chromium.org, Aug 18 2015

Project Member
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=200761

------------------------------------------------------------------
r200761 | esprehn@chromium.org | 2015-08-18T22:42:51.870630Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/page/PageAnimator.cpp?r1=200761&r2=200760&pathrev=200761

Merge the multiple frame tree walks in PageAnimator::serviceScriptedAnimations.

There's no real reason to do all this work in multiple passes over the Vector
of Documents. This change does alter the web exposed behavior slightly since
now given two same origin iframes that are siblings in the frame tree:

   A
  / \
 B   C

when B runs if it looks at C's scroll position during a scroll animation and
SMIL animation state it may see slightly different results, especially if the
B frame actually started the animation in the C frame. This is already very
racing and unpredictable in browsers since it's an obscure edge case, so I'm
not too worried it'll break content.

This will allow easily skipping iframes that are still loading when processing
the blink pipeline.

BUG=521692

Review URL: https://codereview.chromium.org/1298253003
-----------------------------------------------------------------

Comment 6 by bugdroid1@chromium.org, Aug 19 2015

Project Member
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=200783

------------------------------------------------------------------
r200783 | esprehn@chromium.org | 2015-08-19T02:16:08.525430Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.cpp?r1=200783&r2=200782&pathrev=200783
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebViewImpl.cpp?r1=200783&r2=200782&pathrev=200783
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.h?r1=200783&r2=200782&pathrev=200783
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebViewImpl.h?r1=200783&r2=200782&pathrev=200783

Centralize deferred commit conditions.

Instead of having many callbacks that implicitly have conditions for when the
blink frame pipeline should run, have a function on Document that checks them
explicitly and make WebViewImpl call it.

This will allow checking if iframes are ready to begin running their lifecycle
phases when iterating the frame tree in ::beginFrame and ::layout().

BUG=521692

Review URL: https://codereview.chromium.org/1300043003
-----------------------------------------------------------------

Comment 7 by bugdroid1@chromium.org, Aug 20 2015

Project Member
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=200865

------------------------------------------------------------------
r200865 | esprehn@chromium.org | 2015-08-20T00:52:40.077113Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/public/platform/WebLayerTreeView.h?r1=200865&r2=200864&pathrev=200865
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/WebFrameTest.cpp?r1=200865&r2=200864&pathrev=200865

Make all methods on WebLayerTreeView optional.

This should make creating a subclass in a test easier, and hopefully
combined with FrameTestHelpers::WebViewHelper and some cleverness will
allow writing FOUC tests.

BUG=521692

Review URL: https://codereview.chromium.org/1287403005
-----------------------------------------------------------------

Comment 8 by bugdroid1@chromium.org, Aug 20 2015

Project Member
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=200934

------------------------------------------------------------------
r200934 | esprehn@chromium.org | 2015-08-20T21:09:09.368938Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/frame/FrameView.h?r1=200934&r2=200933&pathrev=200934
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebViewImpl.h?r1=200934&r2=200933&pathrev=200934
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/frame/FrameView.cpp?r1=200934&r2=200933&pathrev=200934
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebViewImpl.cpp?r1=200934&r2=200933&pathrev=200934

Reland: Move dispatchDidFirstVisuallyNonEmptyLayout into WebViewImpl.

This removes a user of didLayoutWithPendingStylesheets() and instead moves
the call to dispatchDidFirstVisuallyNonEmptyLayout into WebViewImpl so the
notification to the embedder is tied to the pumping of frames. This changes the
behavior of this notification to only dispatch for the top level frame,
but Chromium already has a check for that:

https://chromium.googlesource.com/chromium/src/+/976d4d9a2735bdc11e5a641c84b6382566d48f1d/content/renderer/render_frame_impl.cc#3472

RenderFrameImpl::didFirstVisuallyNonEmptyLayout's first check is

if (frame->parent())
    return;

so we already ignore all frames that are not the main frame. Future patches will
clean up this interface so it's obvious this really only happens for the main
frame.

This was originally comitted as r200664, but got reverted due to making a test
flaky in Chromium that was depending on very specific timing of this callback.
That test was fixed by:
https://crrev.com/0ea17fce0d5218c909985e2216051eab79419463

BUG=521692
R=dglazkov@chromium.org

Review URL: https://codereview.chromium.org/1295053002
-----------------------------------------------------------------

Comment 9 by bugdroid1@chromium.org, Aug 21 2015

Project Member
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=201003

------------------------------------------------------------------
r201003 | esprehn@chromium.org | 2015-08-21T19:03:43.953616Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/blink_platform.gypi?r1=201003&r2=201002&pathrev=201003
   A http://src.chromium.org/viewvc/blink/trunk/Source/platform/exported/WebURLLoaderTestDelegate.cpp?r1=201003&r2=201002&pathrev=201003
   M http://src.chromium.org/viewvc/blink/trunk/public/platform/WebUnitTestSupport.h?r1=201003&r2=201002&pathrev=201003
   A http://src.chromium.org/viewvc/blink/trunk/public/platform/WebURLLoaderTestDelegate.h?r1=201003&r2=201002&pathrev=201003

Expand the interface to WebURLLoaderTestDelegate.

To implement FOUC tests we need to be able to control both the
didReceiveData and the didFinishLoading callbacks to have precise
control over when resources finish loading.

This patch expands the interface of WebURLLoaderTestDelegate to delegate
all the steps called in WebURLLoaderMock::ServeAsynchronousRequest. It
also provides a default implementation of each one so tests don't need to
add each proxy method. It also allows this patch to avoid being multiple
steps to handle the Chromium changes.

The next patch in Chromium will update ServeAsynchronousRequest
to use the new methods.

BUG=521692
R=pdr@chromium.org

Review URL: https://codereview.chromium.org/1303953003
-----------------------------------------------------------------

Comment 10 by bugdroid1@chromium.org, Aug 25 2015

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

commit df044de45c5cbc2c73bbde1c2d6d91ca6eaca7f1
Author: esprehn <esprehn@chromium.org>
Date: Tue Aug 25 15:36:16 2015

Switch WebURLLoaderMock::ServeAsynchronousRequest to delegate all calls.

So blink unit tests can precicely control the didReceiveData and
didFinishLoading callbacks to simulate network requests coming in
at specific times we switch to using the rest of the newly
expanded API of WebURLLoaderTestDelegate which now can proxy all
the related callbacks for network requests.

Now blink unit tests can buffer the data and delay the response
and finishedLoading callbacks to create specific timing situations
like having certain stylesheets return before others or running
script before sheets have loaded.

R=dcheng@chromium.org
BUG=521692

Review URL: https://codereview.chromium.org/1313473002

Cr-Commit-Position: refs/heads/master@{#345333}

[modify] http://crrev.com/df044de45c5cbc2c73bbde1c2d6d91ca6eaca7f1/content/test/weburl_loader_mock.cc

Comment 11 by bugdroid1@chromium.org, Aug 26 2015

Project Member
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=201232

------------------------------------------------------------------
r201232 | esprehn@chromium.org | 2015-08-26T15:17:27.563079Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.h?r1=201232&r2=201231&pathrev=201232
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebViewImpl.h?r1=201232&r2=201231&pathrev=201232
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.cpp?r1=201232&r2=201231&pathrev=201232
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebViewImpl.cpp?r1=201232&r2=201231&pathrev=201232

Revert of Centralize deferred commit conditions. (patchset #1 id:1 of https://codereview.chromium.org/1300043003/ )

Reason for revert:
Perf regression due to an error. willInsertBody is actually before the body is available which means the check for body() in this patch would not succeed and we'd end up not resuming commits until we finished parsing if all sheets were done loading before we got to the <body>.

BUG= 524172 

Original issue's description:
> Centralize deferred commit conditions.
> 
> Instead of having many callbacks that implicitly have conditions for when the
> blink frame pipeline should run, have a function on Document that checks them
> explicitly and make WebViewImpl call it.
> 
> This will allow checking if iframes are ready to begin running their lifecycle
> phases when iterating the frame tree in ::beginFrame and ::layout().
> 
> BUG=521692
> 
> Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=200783

TBR=ojan@chromium.org,dglazkov@chromium.org,skyostil@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=521692

Review URL: https://codereview.chromium.org/1317883002
-----------------------------------------------------------------

Comment 12 by bugdroid1@chromium.org, Aug 27 2015

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

commit c2a4a231d6d11c6cae4b1fac6ef3f56e31549827
Author: esprehn <esprehn@chromium.org>
Date: Thu Aug 27 00:39:27 2015

Change WebURLLoaderMockFactory for future FOUC tests in blink.

In future FOUC unit tests blink will need to control the responses of
network requests. This means blink may buffer the calls to
didReceiveResponse, didReceiveData, didFail and didFinishLoading.

To enable this we need to make it not an error to cancel() a load that
doesn't exist. This is because ServeAsynchronousRequests will always
do pending_loaders_.erase(loader); even if the request was actually
buffered inside blink. That means later when blink replays the
callbacks the request will already have been removed from
pending_loaders_ when blink calls cancel() and then this would crash.

I also updated ReadFile to support loading empty paths instead of
needing to load an empty.txt file. This is because blink is going to
simulate the response data in chunks and not actually load it from
files.

BUG=521692
R=dcheng@chromium.org

Review URL: https://codereview.chromium.org/1310153003

Cr-Commit-Position: refs/heads/master@{#345748}

[modify] http://crrev.com/c2a4a231d6d11c6cae4b1fac6ef3f56e31549827/content/test/weburl_loader_mock_factory.cc
[modify] http://crrev.com/c2a4a231d6d11c6cae4b1fac6ef3f56e31549827/content/test/weburl_loader_mock_factory.h

Comment 14 by bugdroid1@chromium.org, Aug 28 2015

Project Member
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=201405

------------------------------------------------------------------
r201405 | esprehn@chromium.org | 2015-08-28T15:05:11.936082Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.cpp?r1=201405&r2=201404&pathrev=201405
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim?r1=201405&r2=201404&pathrev=201405
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimWebViewClient.cpp?r1=201405&r2=201404&pathrev=201405
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/DocumentLoadingRenderingTest.cpp?r1=201405&r2=201404&pathrev=201405
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.h?r1=201405&r2=201404&pathrev=201405
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimWebViewClient.h?r1=201405&r2=201404&pathrev=201405
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/loader/DocumentLoader.cpp?r1=201405&r2=201404&pathrev=201405
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebViewImpl.cpp?r1=201405&r2=201404&pathrev=201405
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimLayerTreeView.cpp?r1=201405&r2=201404&pathrev=201405
   M http://src.chromium.org/viewvc/blink/trunk/public/web/WebViewClient.h?r1=201405&r2=201404&pathrev=201405
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimRequest.cpp?r1=201405&r2=201404&pathrev=201405
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimNetwork.cpp?r1=201405&r2=201404&pathrev=201405
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimLayerTreeView.h?r1=201405&r2=201404&pathrev=201405
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimRequest.h?r1=201405&r2=201404&pathrev=201405
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimNetwork.h?r1=201405&r2=201404&pathrev=201405
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/web.gypi?r1=201405&r2=201404&pathrev=201405

Add a test that we resume commits after inserting the body.

To test our loading behavior we add a new framework of mocks for writing tests.
These allow simulating network responses in specific chunks so you can test how
the rendering engine reacts to having the content come off the wire. This
framework will be used to write future tests for various sub-systems as pages
are loading. Future loading/FOUC tests will check painting, layout and if frames
have been scheduled as well.

The test added in this patch writes html in chunks and checks that we only resume
pumping frames after the body has been inserted.

The test caught a bug in blink where we would resume commits when loading the
initial empty document because the document would insert an implicit <body>
calling into WebViewImpl::willInsertBody which then triggers a
resumeTreeViewCommits. This bug doesn't manifest when loading real tabs because
we always call resize(non-zero) after creating the WebView to set the initial
size. This then triggers a layout since the size is non-zero which then does
DeprecatedPaintLayerCompositor::didLayout and finally
enableCompositingModeIfNeeded which calls back into
WebViewImpl::setRootGraphicsLayer(nullptr) which then does setDeferCommits(true)
turning back on deferred commits. It looks like this bug may have manifested in
0x0 Android WebViews if they were created and then resized after they started
loading.

BUG=521692

Review URL: https://codereview.chromium.org/1313013005
-----------------------------------------------------------------

Comment 15 by bugdroid1@chromium.org, Aug 29 2015

Project Member
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=201450

------------------------------------------------------------------
r201450 | esprehn@chromium.org | 2015-08-29T06:20:50.410193Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/DocumentLoadingRenderingTest.cpp?r1=201450&r2=201449&pathrev=201450

Add a bunch more tests for deferred commit handling.

This adds tests for the various conditions of when to resume commits.

BUG=521692

Review URL: https://codereview.chromium.org/1308043003
-----------------------------------------------------------------

Comment 16 by mikelawther@chromium.org, Sep 2 2015

Will this make us match other browsers? Could this be classified as Hotlist-Interop?

Comment 17 by esprehn@chromium.org, Sep 2 2015

It makes us match Firefox, I don't know what Edge does, the old comments about IE in our codebase imply that IE actually suspends all script when sheets are loading to avoid this problem but I don't know if we want to do that. Safari has our old (confusing) behavior.

Comment 18 by bugdroid1@chromium.org, Sep 3 2015

Project Member
Labels: merge-merged-2490
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=201729

------------------------------------------------------------------
r201729 | esprehn@chromium.org | 2015-09-03T18:19:18.575213Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/branches/chromium/2490/Source/core/dom/Document.cpp?r1=201729&r2=201728&pathrev=201729
   M http://src.chromium.org/viewvc/blink/branches/chromium/2490/Source/web/WebViewImpl.cpp?r1=201729&r2=201728&pathrev=201729
   M http://src.chromium.org/viewvc/blink/branches/chromium/2490/Source/core/dom/Document.h?r1=201729&r2=201728&pathrev=201729
   M http://src.chromium.org/viewvc/blink/branches/chromium/2490/Source/web/WebViewImpl.h?r1=201729&r2=201728&pathrev=201729

Merge 201232 "Revert of Centralize deferred commit conditions. (..."

> Revert of Centralize deferred commit conditions. (patchset #1 id:1 of https://codereview.chromium.org/1300043003/ )
> 
> Reason for revert:
> Perf regression due to an error. willInsertBody is actually before the body is available which means the check for body() in this patch would not succeed and we'd end up not resuming commits until we finished parsing if all sheets were done loading before we got to the <body>.
> 
> BUG= 524172 
> 
> Original issue's description:
> > Centralize deferred commit conditions.
> > 
> > Instead of having many callbacks that implicitly have conditions for when the
> > blink frame pipeline should run, have a function on Document that checks them
> > explicitly and make WebViewImpl call it.
> > 
> > This will allow checking if iframes are ready to begin running their lifecycle
> > phases when iterating the frame tree in ::beginFrame and ::layout().
> > 
> > BUG=521692
> > 
> > Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=200783
> 
> TBR=ojan@chromium.org,dglazkov@chromium.org,skyostil@chromium.org
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=521692
> 
> Review URL: https://codereview.chromium.org/1317883002

TBR=esprehn@chromium.org
BUG= 524172 

Review URL: https://codereview.chromium.org/1324263002
-----------------------------------------------------------------

Comment 19 by bugdroid1@chromium.org, Sep 8 2015

Project Member
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=201928

------------------------------------------------------------------
r201928 | chrome-bot@google.com | 2015-09-08T20:05:11.106012Z

Changed paths:
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/android/svg/custom/js-update-stop-linked-gradient-expected.txt?r1=201928&r2=201927&pathrev=201928
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/android/svg/custom/js-update-stop-expected.txt?r1=201928&r2=201927&pathrev=201928
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/android/svg/repaint/image-animation-with-zoom-expected.txt?r1=201928&r2=201927&pathrev=201928
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/svg/overflow/overflow-visible-repaint-expected.txt?r1=201928&r2=201927&pathrev=201928
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/android/svg/custom/js-update-gradient-expected.txt?r1=201928&r2=201927&pathrev=201928
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/android/virtual/spv2/fast/repaint/delete-into-nested-block-expected.txt?r1=201928&r2=201927&pathrev=201928
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/android/svg/custom/js-update-pattern-child-expected.txt?r1=201928&r2=201927&pathrev=201928
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/android/fast/repaint/shift-relative-positioned-container-with-image-addition-expected.txt?r1=201928&r2=201927&pathrev=201928
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/frame/FrameView.cpp?r1=201928&r2=201927&pathrev=201928
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/layout/compositing/DeprecatedPaintLayerCompositor.cpp?r1=201928&r2=201927&pathrev=201928
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/android/svg/custom/deep-dynamic-updates-expected.txt?r1=201928&r2=201927&pathrev=201928
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/android/svg/custom/use-disappears-after-style-update-expected.txt?r1=201928&r2=201927&pathrev=201928
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/frame/FrameView.h?r1=201928&r2=201927&pathrev=201928
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/android/fast/repaint/video-mute-repaint-expected.txt?r1=201928&r2=201927&pathrev=201928
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/android/fast/repaint/selection-after-remove-expected.txt?r1=201928&r2=201927&pathrev=201928
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/android/fast/repaint/delete-into-nested-block-expected.txt?r1=201928&r2=201927&pathrev=201928
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/android/svg/custom/js-update-pattern-expected.txt?r1=201928&r2=201927&pathrev=201928
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/android/svg/filters/feImage-target-reappend-to-document-expected.txt?r1=201928&r2=201927&pathrev=201928
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/android/svg/custom/repaint-moving-svg-and-div-expected.txt?r1=201928&r2=201927&pathrev=201928
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/android/fast/repaint/selection-gap-overflow-scroll-2-expected.txt?r1=201928&r2=201927&pathrev=201928
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/platform/android/fast/repaint/selection-gap-overflow-scroll-expected.txt?r1=201928&r2=201927&pathrev=201928

Remove old repaint rect tracking from FrameView.

This code only worked when we weren't using FCM mode, but now we always do for
tests. We also always run tests with asserts turned on, even for release builds
so this code clearly is never used since it contains a
RELEASE_ASSERT_NOT_REACHED().

Lets remove it!

I also removed the old baselines from tests that used this. These tests must all
be disabled on the platforms where these baselines would have been used since we
no longer were capable of producing this output without crashing on the
ASSERT_NOT_REACHED().

BUG= 368518 ,521692

Review URL: https://codereview.chromium.org/1309243006
-----------------------------------------------------------------

Comment 20 by bugdroid1@chromium.org, Sep 9 2015

Project Member
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=201944

------------------------------------------------------------------
r201944 | esprehn@chromium.org | 2015-09-09T00:54:46.678547Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/DocumentLoadingRenderingTest.cpp?r1=201944&r2=201943&pathrev=201944
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.h?r1=201944&r2=201943&pathrev=201944
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimDisplayItemList.cpp?r1=201944&r2=201943&pathrev=201944
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/loader/DocumentLoader.cpp?r1=201944&r2=201943&pathrev=201944
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimDisplayItemList.h?r1=201944&r2=201943&pathrev=201944
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/frame/FrameView.cpp?r1=201944&r2=201943&pathrev=201944
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/layout/compositing/DeprecatedPaintLayerCompositor.cpp?r1=201944&r2=201943&pathrev=201944
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimRequest.cpp?r1=201944&r2=201943&pathrev=201944
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/frame/FrameView.h?r1=201944&r2=201943&pathrev=201944
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimLayerTreeView.h?r1=201944&r2=201943&pathrev=201944
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimRequest.h?r1=201944&r2=201943&pathrev=201944
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimCompositor.cpp?r1=201944&r2=201943&pathrev=201944
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimNetwork.h?r1=201944&r2=201943&pathrev=201944
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/web.gypi?r1=201944&r2=201943&pathrev=201944
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/graphics/GraphicsLayer.cpp?r1=201944&r2=201943&pathrev=201944
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimCompositor.h?r1=201944&r2=201943&pathrev=201944
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.cpp?r1=201944&r2=201943&pathrev=201944
   M http://src.chromium.org/viewvc/blink/trunk/public/platform/WebDisplayItemList.h?r1=201944&r2=201943&pathrev=201944
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/graphics/GraphicsLayer.h?r1=201944&r2=201943&pathrev=201944

Add a FOUC painting test.

This expands the Sim(ulation) testing framework to support a very rudimentary
compositor that can run a simple BeginMainFrame which runs the WebView's
beginFrame() and layout() steps followed by a simplified paint step which paints
the main layer of every composited layer mapping. This is a very rough
approximation of what the real compositor would do, but is enough to test the
code for avoiding FOUC in DeprecatedPaintLayerPainter's shouldSuppressPaintingLayer
and BlockPainter::paintContents. It's also enough to test the paint invalidation
logic in Document::styleResolverChanged for when we painted by skipping painting
the actual content because of the previously mentioned FOUC avoidance logic.

I also went and added a bunch of comments to the Sim* classes to explain what
they do and how to use the testing framework. A future patch may add a README
so we can use this framework to write future pipeline tests.

BUG=521692

Review URL: https://codereview.chromium.org/1329553004
-----------------------------------------------------------------

Comment 21 by ericwilligers@chromium.org, Sep 9 2015

Labels: Hotlist-Polish

Comment 22 by bugdroid1@chromium.org, Sep 9 2015

Project Member
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=201960

------------------------------------------------------------------
r201960 | mkwst@chromium.org | 2015-09-09T08:26:14.636201Z

Changed paths:
   D http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimDisplayItemList.cpp?r1=201960&r2=201959&pathrev=201960
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/loader/DocumentLoader.cpp?r1=201960&r2=201959&pathrev=201960
   D http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimDisplayItemList.h?r1=201960&r2=201959&pathrev=201960
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/frame/FrameView.cpp?r1=201960&r2=201959&pathrev=201960
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/layout/compositing/DeprecatedPaintLayerCompositor.cpp?r1=201960&r2=201959&pathrev=201960
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimRequest.cpp?r1=201960&r2=201959&pathrev=201960
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/frame/FrameView.h?r1=201960&r2=201959&pathrev=201960
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimLayerTreeView.h?r1=201960&r2=201959&pathrev=201960
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimRequest.h?r1=201960&r2=201959&pathrev=201960
   D http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimCompositor.cpp?r1=201960&r2=201959&pathrev=201960
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimNetwork.h?r1=201960&r2=201959&pathrev=201960
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/web.gypi?r1=201960&r2=201959&pathrev=201960
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/graphics/GraphicsLayer.cpp?r1=201960&r2=201959&pathrev=201960
   D http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimCompositor.h?r1=201960&r2=201959&pathrev=201960
   M http://src.chromium.org/viewvc/blink/trunk/public/platform/WebDisplayItemList.h?r1=201960&r2=201959&pathrev=201960
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.cpp?r1=201960&r2=201959&pathrev=201960
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/graphics/GraphicsLayer.h?r1=201960&r2=201959&pathrev=201960
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/DocumentLoadingRenderingTest.cpp?r1=201960&r2=201959&pathrev=201960
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.h?r1=201960&r2=201959&pathrev=201960

Revert of Add a FOUC painting test. (patchset #6 id:100001 of https://codereview.chromium.org/1329553004/ )

Reason for revert:
This patch is failing on debug bots, all platforms. For example:

* https://build.chromium.org/p/chromium.webkit/builders/WebKit%20Linux%20%28dbg%29/builds/3244

* https://build.chromium.org/p/chromium.webkit/builders/WebKit%20Mac10.7%20%28dbg%29/builds/24575

Original issue's description:
> Add a FOUC painting test.
> 
> This expands the Sim(ulation) testing framework to support a very rudimentary
> compositor that can run a simple BeginMainFrame which runs the WebView's
> beginFrame() and layout() steps followed by a simplified paint step which paints
> the main layer of every composited layer mapping. This is a very rough
> approximation of what the real compositor would do, but is enough to test the
> code for avoiding FOUC in DeprecatedPaintLayerPainter's shouldSuppressPaintingLayer
> and BlockPainter::paintContents. It's also enough to test the paint invalidation
> logic in Document::styleResolverChanged for when we painted by skipping painting
> the actual content because of the previously mentioned FOUC avoidance logic.
> 
> I also went and added a bunch of comments to the Sim* classes to explain what
> they do and how to use the testing framework. A future patch may add a README
> so we can use this framework to write future pipeline tests.
> 
> BUG=521692
> 
> Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=201944

TBR=dglazkov@chromium.org,pdr@chromium.org,esprehn@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=521692

Review URL: https://codereview.chromium.org/1316673009
-----------------------------------------------------------------

Comment 23 by bugdroid1@chromium.org, Sep 11 2015

Project Member
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=202099

------------------------------------------------------------------
r202099 | esprehn@chromium.org | 2015-09-11T03:31:40.713171Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/web.gypi?r1=202099&r2=202098&pathrev=202099
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/graphics/GraphicsLayer.cpp?r1=202099&r2=202098&pathrev=202099
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimCompositor.h?r1=202099&r2=202098&pathrev=202099
   M http://src.chromium.org/viewvc/blink/trunk/public/platform/WebDisplayItemList.h?r1=202099&r2=202098&pathrev=202099
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.cpp?r1=202099&r2=202098&pathrev=202099
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/graphics/GraphicsLayer.h?r1=202099&r2=202098&pathrev=202099
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/DocumentLoadingRenderingTest.cpp?r1=202099&r2=202098&pathrev=202099
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.h?r1=202099&r2=202098&pathrev=202099
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimCanvas.cpp?r1=202099&r2=202098&pathrev=202099
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimCanvas.h?r1=202099&r2=202098&pathrev=202099
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimDisplayItemList.cpp?r1=202099&r2=202098&pathrev=202099
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/loader/DocumentLoader.cpp?r1=202099&r2=202098&pathrev=202099
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimDisplayItemList.h?r1=202099&r2=202098&pathrev=202099
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/frame/FrameView.cpp?r1=202099&r2=202098&pathrev=202099
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/layout/compositing/DeprecatedPaintLayerCompositor.cpp?r1=202099&r2=202098&pathrev=202099
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimRequest.cpp?r1=202099&r2=202098&pathrev=202099
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimLayerTreeView.h?r1=202099&r2=202098&pathrev=202099
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/frame/FrameView.h?r1=202099&r2=202098&pathrev=202099
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimRequest.h?r1=202099&r2=202098&pathrev=202099
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimNetwork.h?r1=202099&r2=202098&pathrev=202099
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/tests/sim/SimCompositor.cpp?r1=202099&r2=202098&pathrev=202099

Add a FOUC painting test.

This expands the Sim(ulation) testing framework to support a very rudimentary
compositor that can run a simple BeginMainFrame which runs the WebView's
beginFrame() and layout() steps followed by a simplified paint step which paints
the main layer of every composited layer mapping. This is a very rough
approximation of what the real compositor would do, but is enough to test the
code for avoiding FOUC in DeprecatedPaintLayerPainter's shouldSuppressPaintingLayer
and BlockPainter::paintContents. It's also enough to test the paint invalidation
logic in Document::styleResolverChanged for when we painted by skipping painting
the actual content because of the previously mentioned FOUC avoidance logic.

I also went and added a bunch of comments to the Sim* classes to explain what
they do and how to use the testing framework. A future patch may add a README
so we can use this framework to write future pipeline tests.

This was originally committed as:
https://src.chromium.org/viewvc/blink?view=rev&revision=201944

and reverted because the red background fill in debug builds makes the number
of draw commands vary from Debug to Release. This new patch introduces a
SimCanvas that collects the drawing commands and also disables the red debug
fill. This lets the test use stronger assertions and also means it works in
both Debug and Release builds.

BUG=521692

Review URL: https://codereview.chromium.org/1329553004
-----------------------------------------------------------------

Comment 24 by bugdroid1@chromium.org, Sep 23 2015

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

commit c392fc4039f9b2c8baa1060b527fc1e37777bab6
Author: esprehn@chromium.org <esprehn@chromium.org>
Date: Mon Aug 17 20:14:06 2015

Move dispatchDidFirstVisuallyNonEmptyLayout into WebViewImpl.

This removes the last user of didLayoutWithPendingStylesheets() and instead moves
the call to dispatchDidFirstVisuallyNonEmptyLayout into WebViewImpl so the
notification to the embedder is tied to the pumping of frames. This changes the
behavior of this notification to only dispatch for the top level frame,
but Chromium already has a check for that:

https://chromium.googlesource.com/chromium/src/+/976d4d9a2735bdc11e5a641c84b6382566d48f1d/content/renderer/render_frame_impl.cc#3472

RenderFrameImpl::didFirstVisuallyNonEmptyLayout's first check is

if (frame->parent())
    return;

so we already ignore all frames that are not the main frame. Future patches will
clean up this interface so it's obvious this really only happens for the main
frame.

BUG=521692
R=dglazkov@chromium.org

Review URL: https://codereview.chromium.org/1295053002 .

git-svn-id: svn://svn.chromium.org/blink/trunk@200664 bbb929c8-8fbe-4397-9dbb-9b2b20218538

[modify] http://crrev.com/c392fc4039f9b2c8baa1060b527fc1e37777bab6/third_party/WebKit/Source/core/frame/FrameView.cpp
[modify] http://crrev.com/c392fc4039f9b2c8baa1060b527fc1e37777bab6/third_party/WebKit/Source/core/frame/FrameView.h
[modify] http://crrev.com/c392fc4039f9b2c8baa1060b527fc1e37777bab6/third_party/WebKit/Source/web/WebViewImpl.cpp
[modify] http://crrev.com/c392fc4039f9b2c8baa1060b527fc1e37777bab6/third_party/WebKit/Source/web/WebViewImpl.h

Comment 25 by bugdroid1@chromium.org, Sep 23 2015

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6021716f1b3272e3781a0f1c5d93bfa7e8b8f512

commit 6021716f1b3272e3781a0f1c5d93bfa7e8b8f512
Author: esprehn@chromium.org <esprehn@chromium.org>
Date: Mon Aug 17 21:23:20 2015

Revert of Move dispatchDidFirstVisuallyNonEmptyLayout into WebViewImpl. (patchset #2 id:20001 of https://codereview.chromium.org/1295053002/ )

Reason for revert:
Looks like it caused a race in:

ProfileErrorBrowserTestInstance/ProfileErrorBrowserTest.CorruptedProfile


Original issue's description:
> Move dispatchDidFirstVisuallyNonEmptyLayout into WebViewImpl.
> 
> This removes the last user of didLayoutWithPendingStylesheets() and instead moves
> the call to dispatchDidFirstVisuallyNonEmptyLayout into WebViewImpl so the
> notification to the embedder is tied to the pumping of frames. This changes the
> behavior of this notification to only dispatch for the top level frame,
> but Chromium already has a check for that:
> 
> https://chromium.googlesource.com/chromium/src/+/976d4d9a2735bdc11e5a641c84b6382566d48f1d/content/renderer/render_frame_impl.cc#3472
> 
> RenderFrameImpl::didFirstVisuallyNonEmptyLayout's first check is
> 
> if (frame->parent())
>     return;
> 
> so we already ignore all frames that are not the main frame. Future patches will
> clean up this interface so it's obvious this really only happens for the main
> frame.
> 
> BUG=521692
> R=dglazkov@chromium.org
> 
> Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=200664

TBR=dglazkov@chromium.org,ojan@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=521692

Review URL: https://codereview.chromium.org/1294683004

git-svn-id: svn://svn.chromium.org/blink/trunk@200669 bbb929c8-8fbe-4397-9dbb-9b2b20218538

[modify] http://crrev.com/6021716f1b3272e3781a0f1c5d93bfa7e8b8f512/third_party/WebKit/Source/core/frame/FrameView.cpp
[modify] http://crrev.com/6021716f1b3272e3781a0f1c5d93bfa7e8b8f512/third_party/WebKit/Source/core/frame/FrameView.h
[modify] http://crrev.com/6021716f1b3272e3781a0f1c5d93bfa7e8b8f512/third_party/WebKit/Source/web/WebViewImpl.cpp
[modify] http://crrev.com/6021716f1b3272e3781a0f1c5d93bfa7e8b8f512/third_party/WebKit/Source/web/WebViewImpl.h

Comment 26 by bugdroid1@chromium.org, Sep 23 2015

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

commit e5ab5d23ad83b903e1b8663f1974ba455148a72f
Author: esprehn@chromium.org <esprehn@chromium.org>
Date: Tue Aug 18 22:42:51 2015

Merge the multiple frame tree walks in PageAnimator::serviceScriptedAnimations.

There's no real reason to do all this work in multiple passes over the Vector
of Documents. This change does alter the web exposed behavior slightly since
now given two same origin iframes that are siblings in the frame tree:

   A
  / \
 B   C

when B runs if it looks at C's scroll position during a scroll animation and
SMIL animation state it may see slightly different results, especially if the
B frame actually started the animation in the C frame. This is already very
racing and unpredictable in browsers since it's an obscure edge case, so I'm
not too worried it'll break content.

This will allow easily skipping iframes that are still loading when processing
the blink pipeline.

BUG=521692

Review URL: https://codereview.chromium.org/1298253003

git-svn-id: svn://svn.chromium.org/blink/trunk@200761 bbb929c8-8fbe-4397-9dbb-9b2b20218538

[modify] http://crrev.com/e5ab5d23ad83b903e1b8663f1974ba455148a72f/third_party/WebKit/Source/core/page/PageAnimator.cpp

Comment 27 by bugdroid1@chromium.org, Sep 23 2015

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/068dfea73a2f28a390b68c4cb73b9d1dee4e045b

commit 068dfea73a2f28a390b68c4cb73b9d1dee4e045b
Author: esprehn@chromium.org <esprehn@chromium.org>
Date: Wed Aug 19 02:16:08 2015

Centralize deferred commit conditions.

Instead of having many callbacks that implicitly have conditions for when the
blink frame pipeline should run, have a function on Document that checks them
explicitly and make WebViewImpl call it.

This will allow checking if iframes are ready to begin running their lifecycle
phases when iterating the frame tree in ::beginFrame and ::layout().

BUG=521692

Review URL: https://codereview.chromium.org/1300043003

git-svn-id: svn://svn.chromium.org/blink/trunk@200783 bbb929c8-8fbe-4397-9dbb-9b2b20218538

[modify] http://crrev.com/068dfea73a2f28a390b68c4cb73b9d1dee4e045b/third_party/WebKit/Source/core/dom/Document.cpp
[modify] http://crrev.com/068dfea73a2f28a390b68c4cb73b9d1dee4e045b/third_party/WebKit/Source/core/dom/Document.h
[modify] http://crrev.com/068dfea73a2f28a390b68c4cb73b9d1dee4e045b/third_party/WebKit/Source/web/WebViewImpl.cpp
[modify] http://crrev.com/068dfea73a2f28a390b68c4cb73b9d1dee4e045b/third_party/WebKit/Source/web/WebViewImpl.h

Comment 28 by bugdroid1@chromium.org, Sep 23 2015

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/436a732b1dfb0db09181718e6b7c28e9c40e8087

commit 436a732b1dfb0db09181718e6b7c28e9c40e8087
Author: esprehn@chromium.org <esprehn@chromium.org>
Date: Thu Aug 20 00:52:40 2015

Make all methods on WebLayerTreeView optional.

This should make creating a subclass in a test easier, and hopefully
combined with FrameTestHelpers::WebViewHelper and some cleverness will
allow writing FOUC tests.

BUG=521692

Review URL: https://codereview.chromium.org/1287403005

git-svn-id: svn://svn.chromium.org/blink/trunk@200865 bbb929c8-8fbe-4397-9dbb-9b2b20218538

[modify] http://crrev.com/436a732b1dfb0db09181718e6b7c28e9c40e8087/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
[modify] http://crrev.com/436a732b1dfb0db09181718e6b7c28e9c40e8087/third_party/WebKit/public/platform/WebLayerTreeView.h

Comment 29 by bugdroid1@chromium.org, Sep 23 2015

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/03c21ed17087f20e09504fcce59ef2d27751fb0d

commit 03c21ed17087f20e09504fcce59ef2d27751fb0d
Author: esprehn@chromium.org <esprehn@chromium.org>
Date: Thu Aug 20 21:09:09 2015

Reland: Move dispatchDidFirstVisuallyNonEmptyLayout into WebViewImpl.

This removes a user of didLayoutWithPendingStylesheets() and instead moves
the call to dispatchDidFirstVisuallyNonEmptyLayout into WebViewImpl so the
notification to the embedder is tied to the pumping of frames. This changes the
behavior of this notification to only dispatch for the top level frame,
but Chromium already has a check for that:

https://chromium.googlesource.com/chromium/src/+/976d4d9a2735bdc11e5a641c84b6382566d48f1d/content/renderer/render_frame_impl.cc#3472

RenderFrameImpl::didFirstVisuallyNonEmptyLayout's first check is

if (frame->parent())
    return;

so we already ignore all frames that are not the main frame. Future patches will
clean up this interface so it's obvious this really only happens for the main
frame.

This was originally comitted as r200664, but got reverted due to making a test
flaky in Chromium that was depending on very specific timing of this callback.
That test was fixed by:
https://crrev.com/0ea17fce0d5218c909985e2216051eab79419463

BUG=521692
R=dglazkov@chromium.org

Review URL: https://codereview.chromium.org/1295053002

git-svn-id: svn://svn.chromium.org/blink/trunk@200934 bbb929c8-8fbe-4397-9dbb-9b2b20218538

[modify] http://crrev.com/03c21ed17087f20e09504fcce59ef2d27751fb0d/third_party/WebKit/Source/core/frame/FrameView.cpp
[modify] http://crrev.com/03c21ed17087f20e09504fcce59ef2d27751fb0d/third_party/WebKit/Source/core/frame/FrameView.h
[modify] http://crrev.com/03c21ed17087f20e09504fcce59ef2d27751fb0d/third_party/WebKit/Source/web/WebViewImpl.cpp
[modify] http://crrev.com/03c21ed17087f20e09504fcce59ef2d27751fb0d/third_party/WebKit/Source/web/WebViewImpl.h

Comment 30 by bugdroid1@chromium.org, Sep 23 2015

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

commit ada969c808b29efc963f87d2c3228e33405712cb
Author: esprehn@chromium.org <esprehn@chromium.org>
Date: Fri Aug 21 19:03:43 2015

Expand the interface to WebURLLoaderTestDelegate.

To implement FOUC tests we need to be able to control both the
didReceiveData and the didFinishLoading callbacks to have precise
control over when resources finish loading.

This patch expands the interface of WebURLLoaderTestDelegate to delegate
all the steps called in WebURLLoaderMock::ServeAsynchronousRequest. It
also provides a default implementation of each one so tests don't need to
add each proxy method. It also allows this patch to avoid being multiple
steps to handle the Chromium changes.

The next patch in Chromium will update ServeAsynchronousRequest
to use the new methods.

BUG=521692
R=pdr@chromium.org

Review URL: https://codereview.chromium.org/1303953003

git-svn-id: svn://svn.chromium.org/blink/trunk@201003 bbb929c8-8fbe-4397-9dbb-9b2b20218538

[modify] http://crrev.com/ada969c808b29efc963f87d2c3228e33405712cb/third_party/WebKit/Source/platform/blink_platform.gypi
[add] http://crrev.com/ada969c808b29efc963f87d2c3228e33405712cb/third_party/WebKit/Source/platform/exported/WebURLLoaderTestDelegate.cpp
[add] http://crrev.com/ada969c808b29efc963f87d2c3228e33405712cb/third_party/WebKit/public/platform/WebURLLoaderTestDelegate.h
[modify] http://crrev.com/ada969c808b29efc963f87d2c3228e33405712cb/third_party/WebKit/public/platform/WebUnitTestSupport.h

Comment 31 by bugdroid1@chromium.org, Sep 23 2015

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

commit 8a367bf27ac03d3263153ade3bad98e8da3721f5
Author: esprehn@chromium.org <esprehn@chromium.org>
Date: Thu Sep 03 18:19:18 2015

Merge 201232 "Revert of Centralize deferred commit conditions. (..."

> Revert of Centralize deferred commit conditions. (patchset #1 id:1 of https://codereview.chromium.org/1300043003/ )
> 
> Reason for revert:
> Perf regression due to an error. willInsertBody is actually before the body is available which means the check for body() in this patch would not succeed and we'd end up not resuming commits until we finished parsing if all sheets were done loading before we got to the <body>.
> 
> BUG= 524172 
> 
> Original issue's description:
> > Centralize deferred commit conditions.
> > 
> > Instead of having many callbacks that implicitly have conditions for when the
> > blink frame pipeline should run, have a function on Document that checks them
> > explicitly and make WebViewImpl call it.
> > 
> > This will allow checking if iframes are ready to begin running their lifecycle
> > phases when iterating the frame tree in ::beginFrame and ::layout().
> > 
> > BUG=521692
> > 
> > Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=200783
> 
> TBR=ojan@chromium.org,dglazkov@chromium.org,skyostil@chromium.org
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=521692
> 
> Review URL: https://codereview.chromium.org/1317883002

TBR=esprehn@chromium.org
BUG= 524172 

Review URL: https://codereview.chromium.org/1324263002

git-svn-id: svn://svn.chromium.org/blink/branches/chromium/2490@201729 bbb929c8-8fbe-4397-9dbb-9b2b20218538

[modify] http://crrev.com/8a367bf27ac03d3263153ade3bad98e8da3721f5/third_party/WebKit/Source/core/dom/Document.cpp
[modify] http://crrev.com/8a367bf27ac03d3263153ade3bad98e8da3721f5/third_party/WebKit/Source/core/dom/Document.h
[modify] http://crrev.com/8a367bf27ac03d3263153ade3bad98e8da3721f5/third_party/WebKit/Source/web/WebViewImpl.cpp
[modify] http://crrev.com/8a367bf27ac03d3263153ade3bad98e8da3721f5/third_party/WebKit/Source/web/WebViewImpl.h

Comment 36 by kinuko@chromium.org, Nov 25 2015

Cc: kinuko@chromium.org

Comment 37 by pmeenan@chromium.org, Dec 11 2015

Blocking: chromium:481122

Comment 38 by dglazkov@chromium.org, Mar 1 2016

Cc: dglazkov@chromium.org

Comment 39 by dglazkov@chromium.org, Mar 2 2016

Anything I can do to help? I am in the area...

Comment 40 by dglazkov@chromium.org, Mar 2 2016

Blocking: 586241

Comment 41 by esprehn@chromium.org, Apr 26 2016

Blockedon: 606620

Comment 42 by bugdroid1@chromium.org, Apr 26 2016

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

commit e10293b755e7e28e5f82adeebee7a2f1b630a6a6
Author: esprehn <esprehn@chromium.org>
Date: Tue Apr 26 18:57:02 2016

Move deferred commit logic from WebViewImpl to Document.

This is more natural here, and will make it easy to add a bit that
tracks if a document would be in "deferred commits" mode even if its
not the main document. Then we can use that bit to trigger pipeline
throttling for iframes when they're loading avoiding FOUC in a sane
way.

This patch doesn't change any behavior and only moves the logic.

BUG=521692
TEST=DocumentLoadingRenderingTest.*

Review URL: https://codereview.chromium.org/1922793002

Cr-Commit-Position: refs/heads/master@{#389829}

[modify] https://crrev.com/e10293b755e7e28e5f82adeebee7a2f1b630a6a6/third_party/WebKit/Source/core/dom/Document.cpp
[modify] https://crrev.com/e10293b755e7e28e5f82adeebee7a2f1b630a6a6/third_party/WebKit/Source/core/dom/Document.h
[modify] https://crrev.com/e10293b755e7e28e5f82adeebee7a2f1b630a6a6/third_party/WebKit/Source/core/html/HTMLFrameSetElement.cpp
[modify] https://crrev.com/e10293b755e7e28e5f82adeebee7a2f1b630a6a6/third_party/WebKit/Source/core/html/ImageDocument.cpp
[modify] https://crrev.com/e10293b755e7e28e5f82adeebee7a2f1b630a6a6/third_party/WebKit/Source/core/html/parser/HTMLConstructionSite.cpp
[modify] https://crrev.com/e10293b755e7e28e5f82adeebee7a2f1b630a6a6/third_party/WebKit/Source/core/loader/EmptyClients.h
[modify] https://crrev.com/e10293b755e7e28e5f82adeebee7a2f1b630a6a6/third_party/WebKit/Source/core/loader/FrameLoaderClient.h
[modify] https://crrev.com/e10293b755e7e28e5f82adeebee7a2f1b630a6a6/third_party/WebKit/Source/core/page/ChromeClient.h
[modify] https://crrev.com/e10293b755e7e28e5f82adeebee7a2f1b630a6a6/third_party/WebKit/Source/web/ChromeClientImpl.cpp
[modify] https://crrev.com/e10293b755e7e28e5f82adeebee7a2f1b630a6a6/third_party/WebKit/Source/web/ChromeClientImpl.h
[modify] https://crrev.com/e10293b755e7e28e5f82adeebee7a2f1b630a6a6/third_party/WebKit/Source/web/FrameLoaderClientImpl.cpp
[modify] https://crrev.com/e10293b755e7e28e5f82adeebee7a2f1b630a6a6/third_party/WebKit/Source/web/FrameLoaderClientImpl.h
[modify] https://crrev.com/e10293b755e7e28e5f82adeebee7a2f1b630a6a6/third_party/WebKit/Source/web/WebViewImpl.cpp
[modify] https://crrev.com/e10293b755e7e28e5f82adeebee7a2f1b630a6a6/third_party/WebKit/Source/web/WebViewImpl.h

Comment 43 by esprehn@chromium.org, May 6 2016

Cc: morrita@chromium.org adamk@chromium.org mmcnulty@chromium.org esprehn@chromium.org msrchandra@chromium.org kenjibaheux@chromium.org
 Issue 389566  has been merged into this issue.

Comment 44 by esprehn@chromium.org, May 6 2016

Cc: kochi@chromium.org
 Issue 581176  has been merged into this issue.

Comment 45 by esprehn@chromium.org, May 6 2016

Cc: mikelawther@chromium.org ojan@chromium.org shans@chromium.org le...@chromium.org timloh@chromium.org
 Issue 516550  has been merged into this issue.

Comment 46 by esprehn@chromium.org, Nov 7 2016

Description: Show this description

Comment 47 by esprehn@chromium.org, Nov 8 2016

Blockedon: 663193

Comment 48 by bugdroid1@chromium.org, Nov 9 2016

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1489b47d07ee66f530d0bb99fff53e0cdd84c8dd

commit 1489b47d07ee66f530d0bb99fff53e0cdd84c8dd
Author: esprehn <esprehn@chromium.org>
Date: Wed Nov 09 00:33:49 2016

Turn on render throttling for iframes with pending sheets.

This prevents us from doing layout, style, paint and requestAnimationFrame
for frames that are waiting on pending stylesheets and are not actually painting.

This puts the feature behind the --experimental-web-platform-features flag pending
approval of the Intent to Ship.

BUG= 663193 , 521692

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

[modify] https://crrev.com/1489b47d07ee66f530d0bb99fff53e0cdd84c8dd/third_party/WebKit/Source/core/dom/Document.cpp
[modify] https://crrev.com/1489b47d07ee66f530d0bb99fff53e0cdd84c8dd/third_party/WebKit/Source/core/frame/FrameView.cpp
[modify] https://crrev.com/1489b47d07ee66f530d0bb99fff53e0cdd84c8dd/third_party/WebKit/Source/core/frame/FrameView.h
[modify] https://crrev.com/1489b47d07ee66f530d0bb99fff53e0cdd84c8dd/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in
[modify] https://crrev.com/1489b47d07ee66f530d0bb99fff53e0cdd84c8dd/third_party/WebKit/Source/web/tests/DocumentLoadingRenderingTest.cpp

Comment 49 by pmeenan@chromium.org, Jan 3 2017

Blocking: -481122

Comment 50 by ericwilligers@chromium.org, Feb 13 2017

Components: -Blink>CSS
Removing Blink>CSS for clear ownership. Please undo if this is incorrect.

Comment 51 by esprehn@chromium.org, Feb 13 2017

Components: -Blink>Paint Blink>CSS
This is part of the style system.

Comment 52 by suzyh@chromium.org, Feb 13 2017

Labels: Update-Quarterly

Comment 53 by esprehn@chromium.org, Mar 23 2017

Cc: pmeenan@chromium.org sorvell@chromium.org dbeam@chromium.org
 Issue 638074  has been merged into this issue.

Comment 54 by esprehn@chromium.org, Mar 23 2017

Blockedon: 481122

Comment 55 by esprehn@chromium.org, May 11 2017

Cc: r...@opera.com
Owner: ----
Status: Available (was: Assigned)
Finishing this work would be a huge improvement, I hope someone gets there. :)

Comment 56 by nainar@chromium.org, Nov 27 2017

Labels: HardBug

Comment 57 by nainar@chromium.org, Dec 6 2017

Labels: -Update-Quarterly

Comment 58 by futhark@chromium.org, Apr 19 2018

Cc: -r...@opera.com futhark@chromium.org

Comment 59 by pmeenan@chromium.org, May 14 2018

I think we can significantly simplify the removal of all of the logic with a few other changes.  I threw together a quick doc with a proposal and I'm happy to chip away at the work if it looks like an acceptable path: https://docs.google.com/document/d/1VmcQfDiyqbKmK8phGUWrVpRb8exTUqGe8EhMKoKPFrw/edit?usp=sharing

tl;dr:  Remove the concept of pending stylesheets (and imports):
1 - Unship HTML Imports (deprecated and replaced by es6 modules)
2 - Make all stylesheets parser-blocking (not just in-body stylesheets)

At that point, anything in the DOM can be styled/layout at any time since it won't exist unless the styles have already loaded.

Unshipping imports may be a little controversial but since it is deprecated, only supported in Chrome and is usually feature-detected I think it is going to be doable (I'll open a bug to track it in a second).

Making all CSS blocking is trivial and a simplification of the code that is already in the tree that treats body stylesheets as parser-blocking.

Are there other parts of the FOUC avoidance this won't help with?  I'm hoping that we'll be able to rip out most of the logic and make things a lot simpler.

Comment 60 by phistuck@gmail.com, May 14 2018

#59 - issue 766694 already exists for removing HTML imports.

Comment 61 by pmeenan@chromium.org, May 14 2018

Blockedon: 842671

Comment 62 by pmeenan@chromium.org, May 14 2018

Blockedon: 766694

Comment 63 by bugdroid1@chromium.org, Oct 12

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/369b6fca37d5b416775fd7fafdbc6bde78a18bf8

commit 369b6fca37d5b416775fd7fafdbc6bde78a18bf8
Author: Rune Lillesveen <futhark@chromium.org>
Date: Fri Oct 12 12:16:38 2018

Don't update style for focusability when render-blocking.

WebNode::IsFocusable() updated style and layout tree, without ignoring
pending stylesheets, which meant generating a display:none placeholder
style for the root node. Instead, early return from IsFocusable() when
we are blocking rendering.

Bug: 521692

Change-Id: Idd6cfcf800e4173cfc1bdcb916728c7a0186edf9
Reviewed-on: https://chromium-review.googlesource.com/c/1245787
Reviewed-by: Stefan Zager <szager@chromium.org>
Commit-Queue: Rune Lillesveen <futhark@chromium.org>
Cr-Commit-Position: refs/heads/master@{#599181}
[modify] https://crrev.com/369b6fca37d5b416775fd7fafdbc6bde78a18bf8/third_party/blink/renderer/core/exported/web_node.cc
[modify] https://crrev.com/369b6fca37d5b416775fd7fafdbc6bde78a18bf8/third_party/blink/renderer/core/exported/web_node_test.cc

Comment 64 by bugdroid1@chromium.org, Nov 15

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/477e29d86f2f530b6c34b396b96b8d24c50c5b7b

commit 477e29d86f2f530b6c34b396b96b8d24c50c5b7b
Author: Stefan Zager <szager@chromium.org>
Date: Thu Nov 15 01:03:21 2018

Clear pending stylesheet flag when xml-stylesheet loads

When an xml-stylesheet is declared before the <html> element, the
document's pending stylesheet count is incremented; but the count is
not decremented when the xml-stylesheet finishes loading.

This has no effect when UpdateStyleAndLayoutIgnorePendingStylesheets
is used; but when that mechanism is removed, it blocks rendering,
causing the test named below to fail.

BUG=521692
TEST=fast/dom/StyleSheet/detached-style-pi-2.xhtml

Change-Id: Ibadae4b66d5351cd58ed00ad654247f53fba6861
Reviewed-on: https://chromium-review.googlesource.com/c/1334946
Commit-Queue: Stefan Zager <szager@chromium.org>
Reviewed-by: Rune Lillesveen <futhark@chromium.org>
Cr-Commit-Position: refs/heads/master@{#608204}
[modify] https://crrev.com/477e29d86f2f530b6c34b396b96b8d24c50c5b7b/third_party/blink/renderer/core/dom/processing_instruction.cc
[modify] https://crrev.com/477e29d86f2f530b6c34b396b96b8d24c50c5b7b/third_party/blink/renderer/core/dom/processing_instruction.h

Comment 65 by bugdroid1@chromium.org, Nov 20

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4f35b999c1e4159ded31f7c16b71ca3e0e7ddfee

commit 4f35b999c1e4159ded31f7c16b71ca3e0e7ddfee
Author: Stefan Zager <szager@chromium.org>
Date: Tue Nov 20 17:59:57 2018

Disable ignore-pending-stylesheets mechanism

This disables the machinery of running layout while ignoring pending
stylesheets, and gets rid of display:none "placeholder" style. With
this patch, a forced layout that occurs while a stylesheet is pending
will resolve styles and run layout based on whatever style information
is available at the time.

There is a bunch of code cleanup to do after this patch,
but this should be the only functional change.

BUG=521692
R=chrishtr@chromium.org,futhark@chromium.org

Change-Id: I9b836c16aef67c43bd6170b23a39161302d6f810
Reviewed-on: https://chromium-review.googlesource.com/c/1334967
Reviewed-by: Rune Lillesveen <futhark@chromium.org>
Cr-Commit-Position: refs/heads/master@{#609744}
[modify] https://crrev.com/4f35b999c1e4159ded31f7c16b71ca3e0e7ddfee/third_party/blink/renderer/core/css/resolver/style_resolver.cc
[modify] https://crrev.com/4f35b999c1e4159ded31f7c16b71ca3e0e7ddfee/third_party/blink/renderer/core/css/resolver/style_resolver.h
[modify] https://crrev.com/4f35b999c1e4159ded31f7c16b71ca3e0e7ddfee/third_party/blink/renderer/core/css/style_engine.h
[modify] https://crrev.com/4f35b999c1e4159ded31f7c16b71ca3e0e7ddfee/third_party/blink/renderer/core/dom/document.cc
[modify] https://crrev.com/4f35b999c1e4159ded31f7c16b71ca3e0e7ddfee/third_party/blink/renderer/core/exported/web_meaningful_layouts_test.cc
[modify] https://crrev.com/4f35b999c1e4159ded31f7c16b71ca3e0e7ddfee/third_party/blink/renderer/core/frame/document_loading_rendering_test.cc
[modify] https://crrev.com/4f35b999c1e4159ded31f7c16b71ca3e0e7ddfee/third_party/blink/renderer/core/html/html_frame_set_element.cc
[modify] https://crrev.com/4f35b999c1e4159ded31f7c16b71ca3e0e7ddfee/third_party/blink/renderer/core/style/computed_style.cc
[modify] https://crrev.com/4f35b999c1e4159ded31f7c16b71ca3e0e7ddfee/third_party/blink/renderer/core/style/computed_style.h

Sign in to add a comment