278 Commits

Author SHA1 Message Date
Ojan Vafai
fc1dff4288 Expose minContentWidth/maxContentWidth and a callback for computing them.
This exposes the last hooks needed to implement flexbox layout. For now,
I didn't worry too much about the exact API we're exposing since this will
all change with the upcoming redesign (e.g. https://codereview.chromium.org/1093633002).

minContentWidth == the width if the element were to wrap at every wrapping point (not including border/padding)

maxContentWidth == the width if the element were to only wrap at hard wrapping points (e.g. \n inside a whitespace: pre).

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/1101793003
2015-04-24 13:14:41 -07:00
Eric Seidel
cc43ccec9a Remove LineFragmentationData it's unused
TBR=ojan@chromium.org

Review URL: https://codereview.chromium.org/1063633006
2015-04-10 13:34:37 -07:00
Eric Seidel
3f96f9344e Remove -webkit-user-drag
Also cleaned up some uneeded comments in CSSValueKeywords.in

TBR=ojan@chromium.org

Review URL: https://codereview.chromium.org/1076353003
2015-04-10 13:01:18 -07:00
Ojan Vafai
9a7eb76c46 Remove dead code around anonymous renderers.
There's no way to create anonymous renderers anymore.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/1070233002
2015-04-10 11:34:46 -07:00
Hixie
64a36de094 remove 'page' and 'size' since those are for printing, and that's obsolete in our world now
Also it seems we're not parsing @page rules anyway, so this was presumably dead code.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/1078883003
2015-04-09 15:07:21 -07:00
Eric Seidel
51e1b37ba2 Remove empty-cells
The world may never know what to do with empty cells?

Besides.  This was mislabled as layout, it was clearly a paint
property. :p

R=ianh@google.com

Review URL: https://codereview.chromium.org/1074953004
2015-04-09 14:54:17 -07:00
Eric Seidel
8b5c8d86df Remove CSS table-layout property.
It's dead Jim.

R=ianh@google.com

Review URL: https://codereview.chromium.org/1075023002
2015-04-09 14:45:06 -07:00
Eric Seidel
bfbf14317f Remove page-break properties and captions
We want some sort of per-screen breaking, but this
CSS is not the way to do it.  All of this was already
dead code.

R=ianh@google.com

Review URL: https://codereview.chromium.org/1070313003
2015-04-09 14:39:17 -07:00
Hixie
9d8066aa56 remove 'widows' property because paged media support is gone so this does nothing now
R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/1078943002
2015-04-09 14:35:27 -07:00
Eric Seidel
9cdf9ad09f remove CSS quotes property
The support was gone, this is just dead code.

R=ianh@google.com, ojan@chromium.org

Review URL: https://codereview.chromium.org/1070263002
2015-04-09 14:22:29 -07:00
Eric Seidel
9d740cb769 Remove CSSPropertySpeak
This does not belong in CSS in Sky.

R=ojan@chromium.org

Review URL: https://codereview.chromium.org/1068383005
2015-04-09 13:25:41 -07:00
Ojan Vafai
a8eda9b380 Remove dead createAnonymous functions.
R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/1077453002
2015-04-09 11:40:53 -07:00
Ojan Vafai
b9f182a6bd Stop rendering text inside flex boxes.
Text can only only inside paragraphs and inlines. This patch makes it
so we stop putting such text nodes in the render tree at all if their
parent is not a paragraph or an inline.

This is the final step in making it so that we don't create anonymous
renderers, which fixes a crash in the new custom layout code.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/1077473002
2015-04-09 11:40:03 -07:00
Hixie
ac53fad655 drop 'orphan' property, since it's for paged media and we don't support paged media any more
R=ojan@chromium.org

Review URL: https://codereview.chromium.org/1068073002
2015-04-09 09:24:49 -07:00
Viet-Trung Luu
4a90c329d1 Fix Android build.
RenderStyle apparently got smaller.

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

Review URL: https://codereview.chromium.org/1067293003
2015-04-08 16:37:40 -07:00
Eric Seidel
a118cc707c Remove CSS list-style
We don't have lists.  So they can't be styled.

Dead code be dead.

R=ojan@chromium.org

Review URL: https://codereview.chromium.org/1069403003
2015-04-08 15:03:38 -07:00
Eric Seidel
afaac6ec79 Remove our impressive amount of CSS Cursor code.
With this gone, cursors will no longer change
on hover when running Sky on a desktop.

Then again the iGeneration doesn't
probably even know what a mouse is, let alone
have a burning desire to set a CSS3 custom-cursor.

R=ojan@chromium.org

Review URL: https://codereview.chromium.org/1076623002
2015-04-08 14:23:13 -07:00
Ojan Vafai
3029d211d7 Fix ink splashes in stocks app.
https://codereview.chromium.org/1061163002 lost the default
value of stretch for align-items on flex boxes. We used to
have complicated rules where only flex boxes would default to
stretch. Now that we only have flex boxes, we can just make
it the default in RenderStyle.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/1076543002
2015-04-08 12:27:49 -07:00
Ojan Vafai
b9df2edb7d Delete RenderBlockFlow.
We only ever create RenderParagraphs now. The only non-trivial change here
is making RenderView a RenderFlexibleBox. This required changing custom.sky.
That test was written in a fragile way that behaved differently if we
did multiple layouts. Instead, having it be less racy and only change
values during the test itself.

This also throws a wrench in moving all the layout code to dart
because we can't set the layout manager on the RenderView. Maybe
we need to explicitly let you do so.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/1068683002
2015-04-07 16:59:36 -07:00
Ojan Vafai
970f42b8d7 Remove parsing for display:block/inline-block.
The default is now column flexboxes, which are almost the
same as blocks.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/1060223002
2015-04-06 19:19:36 -07:00
Ojan Vafai
88f38ce0e6 Remove all uses of display:block and display:inline-block.
-Make display:flex, flex-direction: column, flex-shrink: 1 the default.
-Simplify StyleAdjuster::adjustStyleForAlignment to remove special cases we
won't need as we make flex the default and remove absolute positioning.
-Fix a bug this exposed in column flexboxes where we'd apply the wrong edge
of border/padding/margin.
-For now leave the default of align-items:stretch. The main change here is
that iframe/img will do width:auto the same as blocks (i.e. the width of
the parent). I think this is a good change, but we'll have to see how it feels
in practice.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/1061163002
2015-04-06 16:44:12 -07:00
Ojan Vafai
6bfa21b190 Make custom layout actually work.
-Temporarily add setting override width as well so that we correctly bypass in RenderBox::computeLogicalWidth.
-Add setNeedsLayout so that the author code can force layouts (e.g. when the container's width changes).
-Have setLayoutManager force a reattach of the element if it's renderer wasn't a custom layout one before.
-Remove the laying out of children from RenderCustomLayout::layout. This is the job of the author code.
-Add a test case.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/1055263002
2015-04-06 12:53:35 -07:00
Ojan Vafai
ef34102c3b Revert "Revert "First iteration on custom layout.""
This reverts commit 44cf3b689cda2632fa649e2cd3fdbfcb7174f352.
https://codereview.chromium.org/1060443002 fixes the cause
of the test breakage.

TBR=eseidel@chromium.org

Review URL: https://codereview.chromium.org/1055243002
2015-04-02 15:17:10 -07:00
Benjamin Lerman
f1ee3cc379 Revert "First iteration on custom layout."
This reverts commit 4223122b79f5f7740bb2957138d14a63a2cea8d2.

This breaks sky tests.

TBR=ojan@chromium.org

Review URL: https://codereview.chromium.org/1051713007
2015-04-02 10:38:03 +02:00
Ojan Vafai
aecc73f1f5 First iteration on custom layout.
This allows setting x/y/width/height directly on an element
during a synchronous layout callback. At the moment, you can do
dangerous things (e.g. change tree structure). In a followup patch
we'll make that impossible via an IDL guard.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/1023753007
2015-04-01 19:16:29 -07:00
Adam Barth
0dd797975c Remove <canvas>
Folks should use custom paint instead (see sky/engine/core/painting for a
sketch).

R=ojan@chromium.org

Review URL: https://codereview.chromium.org/1001913003
2015-03-25 16:15:05 -07:00
Adam Barth
f8b3596df6 Use StyleNode in StockMenu
StockMenu was creating a container for the sole purpose of applying style to
PopupMenu. Now we just use a StyleNode.

Also, I've reverted the change to make box-sizing default to border-box. It
turns out that CL wasn't effective because we didn't use the initialBoxSizing
function to initialize box sizing. I've made us use initialBoxSizing but switch
the default back to content-box because actually using border-box breaks a
bunch of stuff.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/1024083003
2015-03-20 10:16:24 -07:00
Adam Barth
81233b6df9 Add a basic custom painting facility to Sky
This CL adds just enough custom painting to Sky to make
sky/examples/painting/circle.sky draw a circle. Over time, we should be able to
elaborate this system into something interesting and to make it actually work
in a reasonable way.

R=ojan@chromium.org

Review URL: https://codereview.chromium.org/1017593005
2015-03-19 16:00:21 -07:00
Adam Barth
953145ba63 Default box-sizing to border-box
content-box is crazy banana-pants.

R=ojan@chromium.org

Review URL: https://codereview.chromium.org/1015253002
2015-03-19 10:55:03 -07:00
Ojan Vafai
5968e0308a Fix hit-testing in the stocks apps when scrolled.
We were not passing the transformed HitTestLocation when we recursed
into child layers, which meant that we wouldn't take transforms
correctly into account when hit testing.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/1019723002
2015-03-18 18:55:54 -07:00
Ojan Vafai
a0c612c89b Fix hit-testing of elements with the same z-index.
hit-testing needs to walk in backwards order from paint.
The previous attempt at reverse sorting by z-index didn't
reverse things with the same z-index. Instead, forward
sort the same way as we do with paint and then reverse
the whole vector.

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

Review URL: https://codereview.chromium.org/986793002
2015-03-06 15:53:02 -08:00
Ojan Vafai
76f01e9f0e Some minor cleanup to RenderLayerClipper.
-Remove AbsoluteClipRects. It's never used.
-Inline some static functions. In the process,
noticed that the clip rects for CSS clip are broken.
In theory, this patch fixes that, but I didn't test it
since we probably want to just remove the feature anyways.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/964723004
2015-03-02 15:26:47 -08:00
Ojan Vafai
2fa3e52b6d Make removing a transform not crash.
This broke with https://codereview.chromium.org/965013003.
Before that patch, updateTransform was only called on the
RenderLayer itself. Now it's called on the RenderBox,
so we need to null check the RenderLayer.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/969893002
2015-03-02 14:37:12 -08:00
Adam Barth
ff51816b5a Images don't appear when they finish loading
RenderImage needs to notify its base class unconditionally so that it will
schedule a visual update.

This broke in https://codereview.chromium.org/791023006.

R=ojan@chromium.org
BUG=https://github.com/domokit/mojo/issues/55

Review URL: https://codereview.chromium.org/969863002
2015-03-02 13:03:36 -08:00
Ojan Vafai
ece11cc9ed Remove unused foregroundRect argument to RenderLayerClipper::calculateRects.
The only thing that uses it is RenderTreeAsText.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/964023002
2015-03-02 12:10:05 -08:00
Ojan Vafai
f01bea301b Move transforms from RenderLayer to RenderBox.
This is more member data on RenderLayer that is now only
used by RenderBox.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/965013003
2015-02-27 17:18:07 -08:00
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
cec128f499 Remove some dead RenderLayer code.
-m_hasSelfPaintingLayerDescendant is never read.
-remove showLayerTree. The layer tree is going away. We won't need this.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/952343003
2015-02-25 15:48:59 -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
82ab56a89b Remove some dead filters related code.
R=abarth@chromium.org

Review URL: https://codereview.chromium.org/943333005
2015-02-24 20:45:53 -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
c93e7093c1 Never layer-ize RenderInlines.
This removes support for opacity, filters and clip-path
on RenderInlines. If you want inline content that uses
these properties you need to use an inline-block. We
may want to add back support for opacity or filters
on inlines eventually, but we'd implement it differently
and right now they're getting in the way.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/950963003
2015-02-23 16:40:15 -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
0c37a8a322 Fix painting of position:absolute inside display: paragraphs.
We only need to walk the immediate children of the paragraph.
The other inline children of the paragraph will get paint called
on them and they will then appropriately add the self painting
layers to the array inside their paint calls.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/945223002
2015-02-20 20:24:57 -08:00