83 Commits

Author SHA1 Message Date
Ojan Vafai
ef1b30faf7 Move FilterEffectRenderer out of RenderLayer into RenderBox.
It doesn't do anything RenderLayer specific anymore. This
does mean adding another pointer to RenderBox. We might want
to do something about that eventually, but for now it seems fine
to make forward progress in terms of getting rid of the RenderLayer
tree.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/963253002
2015-02-27 13:42:29 -08:00
Ojan Vafai
4b60c28783 Simplify RenderLayer's handling of filters.
-Remove RenderLayerFilterInfo. It was just a static map for
FilterEffectRenderers. Instead, put the FilterEffectRenderer
directly on RenderLayer.
-Make FilterEffectRenderer not be RefCounted. This involved
deleting a ton of dead code around ReferenceFilters since they
were the other subclass of Filter. As best I can tell,
reference filters are already don't parse in Sky, so this should
just be removing dead code.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/962543003
2015-02-26 15:38:14 -08:00
Ojan Vafai
f36e7b49db Assorted cleanup of RenderLayer.
-Move perspectiveOrigin to RenderBox. It's only used in
one place and called on a RenderBox.
-Inline some methods that were just calling out to the renderer.
-Inline updateStackingNode() into the constructor and remove
the branch since requiresStackingNode is always true.
-Delete a bunch of dead code.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/961053002
2015-02-26 13:07:20 -08:00
Ojan Vafai
ba092f1cd5 Remove dead code from RenderLayer and inline filter methods.
Inline a couple methods that are only called from one place
and remove a bunch of dead code.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/961553003
2015-02-26 11:04:53 -08:00
Ojan Vafai
78691e3c21 Inline RenderLayer::beginTransparencyLayers into RenderBox::paintLayerContents.
This is the only remaining caller.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/954913002
2015-02-24 20:59:01 -08:00
Ojan Vafai
5a5460c54e Fix clipping of content outside the bounds of the window.
https://codereview.chromium.org/899753003 incorrectly passed down the
RenderView's clipping rect all the down through transforms instead of
using the one from the LayerPaintingInfo, which is adjusted for transforms
as you recurse down the tree.

TBR=abarth@chromium.org

Review URL: https://codereview.chromium.org/957643002
2015-02-24 20:40:10 -08:00
Ojan Vafai
0be786f62c Simplify and reduce calls to beginTransparencyLayers.
-Consolidate the beginTransparencyLayers calls. The call
on layer()->parent() was just not needed as best I can tell
and the filter one could just be shared with the non-filter
codepath. FWIW, blink has already made a similar set of changes.
-Don't walk up the tree calling beginTransparencyLayer.
We're doing this in a recursive call down, so we've already
created the transparency layer for any transparent ancestors.
-Remove unused TransparencyClipBoxMode argument.
-Inline the paintingExtent method.
-Removed unused REVEAL_TRANSPARENCY_LAYERS #define.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/959543002
2015-02-24 17:29:00 -08:00
Ojan Vafai
c885cea0f7 Cleanup transform-related methods in RenderLayer.
-Get rid of paintsWithTransform.
-Remove currentTransform. It was only ever called with
IncludeTransformOrigin and on non-null transforms.
-Remove renderableTransform. It was only called on
non-null transforms.
-Remove a layer()->parent() branch. The ASSERT had been
added in a previous patch, but the branch wasn't removed.
-Inline makeMatrixRenderable. It was only called in one
place.
-Add a test to make sure that transform origin is corrrectly
excluded from the transform computedStyle.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/958463002
2015-02-24 14:31:48 -08:00
Ojan Vafai
920920310e Delete RenderLayerModelObject.
Merge most of it into RenderBox. Only RenderBoxes can have
layers now. This also meant a bit of code could be cleaned up
since some virtuals (e.g. updateFromStyle) are no longer needed
since they're only called on RenderBoxes.

collectSelfPaintingLayers is the only bit that's moved into
RenderBoxModelObject instead of RenderBox. That's because we
need to be able to recurse down into RenderInlines since they
may contain RenderBoxes that have selfPaintingLayers.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/953673002
2015-02-23 17:24:38 -08:00
Ojan Vafai
a267c39c01 Remove the concept of staticly positioned absolutes.
On the web, if you set position:absolute, but not
top/right/bottom/left, then the absolute goes where it
would have gone if it wasn't positioned. The use-cases for
this are slim and it introduces a lot of complexity to the
engine.

Also changes behavior in the presence of direction:rtl.
On the web, direction:rtl and top/left:auto would
sometimes set right:0. Instead we always position at
0,0 if the opposing values are auto.

This removes the code for this positioning and allows
simplifying a bunch of dirty bit handling code since
we don't need to setNeedsLayout if lines move around
or wrap differently.

The test cases did change their output, but the new
positioning all looks correct to me.

Review URL: https://codereview.chromium.org/944073006
2015-02-20 20:26:59 -08:00
Ojan Vafai
788bb15b3b Address TODOs in the new layer painting and hit testing.
-ASSERT(layer()->parent()) in all the transform codepaths since
the RenderView cannot have a transform.
-Early return if the content rect does not intersect the
damage rect in the painting code. We don't need to do
any of the filter and/or transparency dance if we're
not going to paint anything. This also allowed for
removing the shouldPaintContent bool.
-Remove a random style() null check that can't be hit.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/950553002
2015-02-20 18:19:29 -08:00
Ojan Vafai
8ba8641a1d Remove LayoutState.
The only bit that was still used was the
containingBlockLogicalWidthChanged check in
RenderBlock::widthAvailableToChildrenHasChanged.
a4f1e657ff
is the patch that added that code. I added a
test to confirm we still pass the test case
that code was added for.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/945003002
2015-02-20 14:02:42 -08:00
Ojan Vafai
a42e249b69 Remove dead position:relative code.
There are some cases in this patch where it's not
obvious that the code only applies to position:relative,
but the code asserts that it does. In those cases,
I trusted the asserts and deleted the code.

R=esprehn@chromium.org

Review URL: https://codereview.chromium.org/938193004
2015-02-20 11:37:17 -08:00
Ojan Vafai
74290d5007 Move hit testing out of RenderLayer into RenderBox.
Change hit testing to walk over the render tree instead of
the RenderLayer tree. This is a step in the direction of
removing the RenderLayer tree entirely.

For now, there's a few calls back into RenderLayer that
will be removed in a followup patch. This patch also
breaks hit testing on transformed inlines. I'll be
removing the ability to transform inlines in a
followup patch anyways, so it's ok for hit testing
to give the wrong result temporarily here.

Almost all of this patch is just moving code from
RenderLayer to RenderBox. The primary substantive change
is in RenderBox::hitTestLayer. Instead of having
hitTestChildren calls, we call collectSelfPaintingLayers,
reverse sort by z-index (so we start at the top),
and then iterate over the result.

The test-case also exposes that we don't correctly hit
transformed elements inside inline-blocks. I went back as
far as 4153b8a515d54275934d4244aaf2d5a7a8fe3333 and the
bug still happened.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/945693002
2015-02-19 21:31:42 -08:00
Adam Barth
dff66fb1b7 Remove the concept of document.documentElement
Now documents can have many element children, all created equal.

R=esprehn@chromium.org, ojan@chromium.org

Review URL: https://codereview.chromium.org/928393003
2015-02-17 16:20:07 -08:00
Ojan Vafai
0b9a9f98c2 Remove HitTestAction.
We no longer paint background and foreground separately,
so we don't need to hit test them separately.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/924273003
2015-02-13 21:08:59 -08:00
Ojan Vafai
6ee8440f27 Walk render tree instead of render layers for paint.
This is the first step of getting rid of RenderLayer.
Instead of walking the RenderLayer tree, wall the RenderObject
tree and add any layers encountered to a vector to paint later.

This patch just consolidates and move the code from RenderLayer
to RenderBox and then changes the children painting to
iterate over the vector. Therefore we walk the RenderObject tree.
We still call out to RenderLayer in a bunch of places.
A followup patch will get rid of those.

R=esprehn@chromium.org

Review URL: https://codereview.chromium.org/899753003
2015-02-06 11:38:25 +11:00
Ojan Vafai
b264b3c269 Remove the last remnant of paint phases.
R=esprehn@chromium.org

Review URL: https://codereview.chromium.org/895483002
2015-02-01 21:09:10 -08:00
Ojan Vafai
bd590c7b05 Remove mask painting.
Now that we don't have -webkit-mask-*, this is dead code.

R=esprehn@chromium.org

Review URL: https://codereview.chromium.org/886263003
2015-02-01 20:37:32 -08:00
Ojan Vafai
194360db4f Inline two methods with only one caller.
TBR=esprehn@chromium.org

Review URL: https://codereview.chromium.org/886923003
2015-01-29 21:02:16 -08:00
Ojan Vafai
030073714c Removed a bunch of unneeded paint phase checks.
We only have two paint phases now, so we don't
need to do as many checks. Also, remove some
early returns that are not possible to hit since
the earlier code checks that phase already.

R=abarth@chromium.org, esprehn@chromium.org

Review URL: https://codereview.chromium.org/891573002
2015-01-29 18:57:06 -08:00
Ojan Vafai
bdc24bf049 Remove painting roots.
These appear to have been for ensuring that you
only paint elements in a given subtree. It's not clear
to me exactly how you get to painting an element that
is not rooted at the RenderLayer you started with.
I think it's just not possible in Sky anymore.
This code was added in 2004 for drag images, which
we no longer support.

R=esprehn@chromium.org

Review URL: https://codereview.chromium.org/882223005
2015-01-28 19:53:44 -08:00
Ojan Vafai
b4c4004f56 Merge outline paint phases into the foreground phase.
Mostly just mechanical changes. The one surprising bit
is that RenderLayer no longer needs to explictly paint
outlines. I tested manually that before this patch,
the paintOutline call in RenderLayer was needed for
outlines on positioned elements and that after this
patch it's not.

R=esprehn@chromium.org

Review URL: https://codereview.chromium.org/878023002
2015-01-27 17:45:04 -08:00
Adam Barth
54809a8877 Remove more scrolling code from Sky
None of this code does anything anymore.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/878303002
2015-01-27 15:20:14 -08:00
Adam Barth
4e74d9df30 Remove RenderLayerScrollableArea
This CL is a first step towards removing the scrolling machinery from the
engine. Notice that we pay a tax for scrolling in RenderBlockFlow::layout.

R=esprehn@chromium.org, ojan@chromium.org

Review URL: https://codereview.chromium.org/877043002
2015-01-27 09:58:45 -08:00
Ojan Vafai
88f2015c22 Remove dead control clip code.
TBR=abarth@chromium.org

Review URL: https://codereview.chromium.org/883583003
2015-01-26 21:09:31 -08:00
Ojan Vafai
785f64ed86 Remove outline painting on inlines.
Jagged edge outlines are more complexity than is justified
for the use-cases. We should enable to use-cases like this,
but with a lower-level line-box + custom painting API.

Removes the paintOutline method on RenderInline. Also removed
a number of dead methods that call absoluteRects so we can delete
that method and related code.

R=esprehn@chromium.org

Review URL: https://codereview.chromium.org/867653005
2015-01-26 18:58:02 -08:00
Ojan Vafai
81341480bf Merge the background paint phase into the foreground phase.
First step in getting rid of paint phases. Verified that
deleting this phase entirely would cause flights-app-pixel.sky
to fail and that it still passes in this patch, which just does
the background painting as part of the foreground phase.

R=esprehn@chromium.org

Review URL: https://codereview.chromium.org/867463005
2015-01-26 15:52:47 -08:00
Elliott Sprehn
543049dd5c Remove viewportDefiningElement.
This was used for quirky scrollbar behavior on the web related to
which element defined in the viewport (body, html, etc.). In Sky we plan to
allow multiple elements as direct children of the Document so we need to get
rid of checks like this. The good news is this already does nothing in sky
because the root never has scrollbars automatically.

R=ojan@chromium.org

Review URL: https://codereview.chromium.org/858713002
2015-01-16 18:35:12 -08:00
Ojan Vafai
4256d4a224 Remove background obscuration checks.
This is an optimization to avoid painting backgrounds
that are obscured. It's a lot of complexity that it's
not clear we'll need given that we're using a GL backend.
Also, we can add it back in more easily/efficiently in the future
once we have a display list architecture.

This also means we can remove the needsPaintInvalidation
dirty bit and some opacity information on filters.

R=esprehn@chromium.org

Review URL: https://codereview.chromium.org/856563006
2015-01-15 17:11:44 -08:00
Ojan Vafai
8e3f746bad Remove assorted dead paint invalidation code.
R=abarth@chromium.org

Review URL: https://codereview.chromium.org/850763008
2015-01-14 13:46:39 -08:00
Ojan Vafai
3e26389e5d Delete PaintInvalidationState. It's unused.
Delete selection paint invalidation code.

There is a slight change in behavior in FrameSelection::revealSelection.
If you have a non-collapsed selection, then we'll center the start
of the selection instead of the whole selection in some cases. There's
a ton of callers of this code, so it's hard to be sure if any of this
actually changes behavior for sky. In manual testing, I couldn't find
any scenarios where there was a difference. Almost universally,
when we call revealSelection, we have a CaretSelection. The only
case I could think of where we have a RangeSelection is when
modifying an off-screen selection (e.g. shift+right), but in that case
we pass the RevealExtent option, so this patch doesn't change behavior
there.

Removing that caller makes all the rest of this rect computing
code into dead code.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/823123003
2015-01-14 13:25:49 -08:00
Ojan Vafai
5f718d3e63 Delete selection paint invalidation code.
There is a slight change in behavior in FrameSelection::revealSelection.
If you have a non-collapsed selection, then we'll center the start
of the selection instead of the whole selection in some cases. There's
a ton of callers of this code, so it's hard to be sure if any of this
actually changes behavior for sky. In manual testing, I couldn't find
any scenarios where there was a difference. Almost universally,
when we call revealSelection, we have a CaretSelection. The only
case I could think of where we have a RangeSelection is when
modifying an off-screen selection (e.g. shift+right), but in that case
we pass the RevealExtent option, so this patch doesn't change behavior
there.

Removing that caller makes all the rest of this rect computing
code into dead code.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/847303003
2015-01-14 13:25:16 -08:00
Ojan Vafai
a198a95ea6 Delete invalidateTreeIfNeeded.
This is just setting and clearing paint invalidation dirty bits.
Also remove a bunch of the paint invalidation dirty bits entirely.
There's plenty more to do.

R=esprehn@chromium.org

Review URL: https://codereview.chromium.org/791023006
2015-01-12 13:29:12 -08:00
Ojan Vafai
cfbabf0397 Delete a bunch of paint invalidation rect computing code.
R=esprehn@chromium.org

Review URL: https://codereview.chromium.org/845873004
2015-01-09 19:05:59 -08:00
Ojan Vafai
69fa7db132 Delete InvalidationReason.
Also delete some other paint invalidation code that
doesn't do anything in Sky.

R=esprehn@chromium.org

Review URL: https://codereview.chromium.org/844023003
2015-01-09 18:01:27 -08:00
Ojan Vafai
ce43f3d0c1 First pass at deleting paint invalidation code.
This is all wasted effort in sky since we invalidate
the whole viewport on every frame. We'll probably eventually
add back in some invalidation, but it likely won't
be rect-based.

R=esprehn@chromium.org

Review URL: https://codereview.chromium.org/840403003
2015-01-09 15:20:35 -08:00
Ojan Vafai
1492a0d635 Remove the straggling DisableCompositingQueryAsserts.
We don't have compositing query asserts anymore,
so there's nothing to disable.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/787293002
2014-12-09 20:25:18 -08:00
Ojan Vafai
6a4ca1bc83 Remove PaintPhaseClippingMask.
I believe it was only used for regions/multi-column.
It's never set now.

R=esprehn@chromium.org

Review URL: https://codereview.chromium.org/786003002
2014-12-08 10:18:34 -08:00
Ojan Vafai
ec0519a888 Remove some dead paint flags.
These are all dead code.

R=rafaelw@chromium.org

Review URL: https://codereview.chromium.org/766303002
2014-12-01 16:08:07 -08:00
Rafael Weinstein
12a09d9d9c Remove uses of PaintBehaviorFlattenCompositingLayers
R=ojan@chromium.org

Review URL: https://codereview.chromium.org/766943003
2014-11-29 20:24:38 -08:00
Rafael Weinstein
d6605f71f9 Remove a bunch of dead code from RenderLayer
R=ojan@chromium.org

Review URL: https://codereview.chromium.org/735033003
2014-11-28 19:59:55 -08:00
Rafael Weinstein
2a5db1aa98 Remove webkit-line-clamp
R=ojan@chromium.org

Review URL: https://codereview.chromium.org/761283002
2014-11-28 05:22:23 -08:00
Ojan Vafai
edbc055885 Get rid of CompositingState.
It's always NotComposited. Also removed some DisableCompositingQueryAsserts.
The asserts they are disabling no longer exist.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/768493002
2014-11-26 18:49:36 -08:00
Ojan Vafai
82b607721d Make fixed-width elements not center by default.
e223e0c6d51f027196a2597b556641328a65d4b5 accidentally
sent all elements down the margin:auto codepath.
The patch incorrectly removed just the
"&& containingBlockStyle->textAlign() == WEBKIT_CENTER"
instead of the whole clause.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/760143002
2014-11-26 16:39:41 -08:00
Ojan Vafai
32bd99e95a Delete most of rendering/compositing.
Particularly, this deletes RenderLayerCompositor. After this,
there's just CompositingState left to remove.

This is all dead code, so there should be no change in behavior.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/758843004
2014-11-26 15:15:23 -08:00
Eric Seidel
e0fd75b5ab Make absolute and sort all Sky headers
This caused us to lose our gn check certification. :(

Turns out gn check was just ignoring all the header
paths it didn't understand and so gn check passing
for sky wasn't meaning much.  I tried to straighten
out some of the mess in this CL, but its going to take
several more rounds of massaging before gn check
passes again.  On the bright side (almost) all of
our headers are absolute now.  Turns out my script
(attached to the bug) didn't notice ../ includes
but I'll fix that in the next patch.

R=abarth@chromium.org
BUG=435361

Review URL: https://codereview.chromium.org/746023002
2014-11-20 17:42:05 -08:00
Elliott Sprehn
3eb9946952 Remove lots of things from RenderObject
R=abarth@chromium.org

Review URL: https://codereview.chromium.org/735193002
2014-11-18 16:06:22 -08:00
Ojan Vafai
7a37fa8c09 First step at getting rid of anonymous blocks and continuations.
-Add RenderParagraph and display:paragraph. This is the only
render type that's allowed to contain inlines or text.
-If you put text nodes directly in a non-paragraph, wrap them
in an anonymous paragraph. This may not be the place we want
to end up, but it's a good stopgap to make it so we don't
crash in this case.
-Make StyleAdjuster force that non-paragraph blocks only contain
RenderBlock subclasses and that paragraphs and inlines only contain
inlines.
-Considerably simplify addChildIgnoringAnonymousColumnBlocks
now that we only create anonymous blocks for the case of
text nodes in non-paragraphs. Also get rid of the behavior
where we try to group multiple nodes into a single
anonymous block.

R=esprehn@chromium.org

Review URL: https://codereview.chromium.org/729693003
2014-11-17 18:39:52 -08:00
Ojan Vafai
aadd9d43cf Remove some more assorted code from RenderBox.
R=esprehn@chromium.org

Review URL: https://codereview.chromium.org/691223003
2014-11-11 10:16:03 -08:00