21 Commits

Author SHA1 Message Date
Elliott Sprehn
0275d42ac7 Add the <t> element and ignore whitespace outside it.
We now only preserve the whitespace inside a <t> element inside
the parser. This removes the known n^2 from reattaching whitespace
which should make parsing and appending nodes faster. I also
removed the dead WhitespaceMode code from the parser, and made
the dom-seralizer.sky auto indent the markup so the test output
would be readable.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/867963006
2015-01-23 16:50:00 -08:00
Elliott Sprehn
f0599689e6 Merge ShadowRootRareData into ShadowRoot.
In Sky most elements with a ShadowRoot will have rare data since they'll
have elements inside them with more ShadowRoots which would increment
the m_childShadowRootCount field, or they'll contain a <content> element
which would increment m_descendantContentElementCount. Only leaf elements
that don't contain either will not get one, and everyone pays the price
for the rare data ptr.

This should be mostly net netural for memory usage and it makes the code
simpler. We can add it back later if we realize there's lots of leaf
widgets.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/862183003
2015-01-22 11:47:34 -08:00
Elliott Sprehn
04288dc280 Simplify tree scope tracking in StyleEngine.
ShadowRoot should deal with adding and removing itself from the active
scope list. HTMLStyleElement should just add/remove itself directy from
the StyleSheetCollection on the scope its entering or leaving in
insertedInto/removedFrom.

R=ojan@chromium.org

Review URL: https://codereview.chromium.org/844133002
2015-01-09 20:12:00 -08:00
Elliott Sprehn
344d558935 Remove global list map of TreeScope to StyleSheetCollection.
StyleSheetCollection is tied to TreeScope in lifetime, and should
really just be a member of it like the ScopedStyleResolver. Doing
this makes the StyleEngine simpler and removes the error prone
manual clean up.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/815653002
2014-12-17 18:03:54 -08:00
Elliott Sprehn
e84233f202 Null check StyleEngine in ~ShadowRoot.
Not all documents have a StyleEngine, only displayed (active) ones.
We need a null check to avoid crashing in the ShadowRoot destructor.

BUG=443423
R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/814713002
2014-12-17 17:20:30 -08:00
Elliott Sprehn
28b94b796c Remove <video controls> hack.
insertedInto and removedFrom should always be paired, there's no
reason to track this state separately when updating the childShadowRoot
bits.

I also removed the inDocument() checks from ShadowRoot::insertedInto
and removed from since distribution happens in detached subtrees too.
It appears that while they were wrong, it didn't matter because the
state was only used together with containsContentElements() in a check
of the form:

if (!containsShadowRoots() && !containsContentElements())
  return;

which meant that while the containsShadowRoots bit might be wrong false
incorrectly, the containsContentElements is always correct so we'd
never take the early out incorrectly.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/801643009
2014-12-17 17:20:13 -08:00
Elliott Sprehn
586a535b7f Delete StyleSheetList and support code.
We don't need this since we don't expose the list of sheets from Document
or ShadowRoot in Sky. After removing this code I also simplified the
system and deleted StyleSheetCandidate and DocumentStyleSheetCollector
which don't really do anything anymore.

Even if we do want to add back a list of sheets later it won't need code
because we don't have a concept of a remote sheet like <link rel> did,
and we don't have to deal with non-CSS sheets.

R=ojan@chromium.org

Review URL: https://codereview.chromium.org/803673003
2014-12-12 15:47:57 -08:00
Elliott Sprehn
e1c6f5561c Remove style element counting in ShadowRoot.
This optimization doesn't make sense, all it does is avoid adding
the ScopedStyleResolver for the ShadowRoot when looking for host
styles, but having that extra resolver shouldn't be slow, and in
sky it's very rare to have a ShadowRoot without styles unlike
on the web where <input> is very common and gets its style from
the UA instead of from a <style> like a normal component.

R=ojan@chromium.org

Review URL: https://codereview.chromium.org/797873002
2014-12-11 17:33:56 -08:00
Elliott Sprehn
0af96f055d Turn StyleSharing to 11.
In Sky we can style share if our TreeScopes have the same styles, our :host
styles are the same, and we'd inherit the same styles. This allows a lot of
simplification to the style sharing logic since we don't need to deal with
descendant selectors or tree boundary crossing rules:

- We can remove the logic that was checking that we were distributed
to the same insertion points since there's no ::content selectors.

- We can check the actual inherited values instead of looking at the
parentOrSHadowHostNode(). We used to look at the node in Blink because we
were checking that you'd get the same descendant selectors applied. In Sky
we instead want to make sure you'd inherit the same values. This also
means we don't need the element().parentOrShadowHostElement() != parent case
in the SharedStyleFinder which was trying to deal with descendant selectors
again.

I also removed the checks that were redundant with the checks inside
supportsStyleSharing() which we always check before adding sharing
candidates.

Finally by refactoring the code to make the TreeScope style check work it
exposed that the Document::styleSheets() and TreeScope::styleSheets() APIs
are now dead. A future patch will delete the now dead StyleSheetList class
as well.

This change makes the city-list application share between all the items in
the list, and all of the headers of the same type now share as well.

R=ojan@chromium.org

Review URL: https://codereview.chromium.org/796713002
2014-12-11 15:34:24 -08:00
Elliott Sprehn
dea3b116e6 Remove dead markup serialization code.
R=ojan@chromium.org

Review URL: https://codereview.chromium.org/771933002
2014-12-02 10:12:21 -08:00
Elliott Sprehn
253b5bed74 Only allow one shadowRoot.
R=ojan@chromium.org

Review URL: https://codereview.chromium.org/759663003
2014-11-26 13:54:14 -05:00
Elliott Sprehn
c4cc8dd831 Remove didNotifySubtreeInsertionsToDocument.
This hook existed because some elements wanted to run script inside
::insertedInto, but that wasn't a safe time. Now nothing can run script
inside there so we don't need this extra hook.

HTMLStyleElement's usage of this hook is not clear, but it seems like
it might have related to a pre-lazy attach bug.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/758623002
2014-11-25 02:53:43 -05: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
42d362ff6b Remove tons of OILPAN.
This removes ::trace, traceAfterDispatch and finalizeGarbageCollectedObject.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/723253004
2014-11-13 16:56:13 -08:00
Elliott Sprehn
9e042f0d70 Remove HTMLShadowElement.
R=ojan@chromium.org

Review URL: https://codereview.chromium.org/704413007
2014-11-10 18:38:30 -08:00
Adam Barth
84faf899bc Remove nop ScriptWrappable::init calls
These calls don't do anything.

TBR=eseidel@chromium.org

Review URL: https://codereview.chromium.org/706123005
2014-11-10 16:41:18 -08:00
Elliott Sprehn
0d95d6d59e Remove custom style callbacks.
R=ojan@chromium.org

Review URL: https://codereview.chromium.org/709573002
2014-11-06 15:16:41 -08:00
Eric Seidel
64b5cb61a1 Remove all oilpan transitional types
I used do-webcore-rename from Blink/WebKit
which is very good at doing this kind
of search-replace.

Also removed toRefPrtNativeArray after
conversion since it previously had two
separate flavors.  Both versions are no longer
used so I've removed the code until we
need one again.

https://www.irccloud.com/pastebin/5C16p5cE
is the diff I used to do-webcore-rename

TBR=abarth@chromium.org
2014-10-27 14:13:01 -07:00
Adam Barth
b07dff7033 Remove the ability to parse HTML fragments
Also, removed a bunch of show() function from the custom element microtask
queue that bottom out in innerHTML.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/665613003
2014-10-24 16:51:11 -07:00
Adam Barth
08164a0e81 Delete ScriptableDocumentParser
There's only one parser: the HTMLDocumentParser. No need for the complex class
hierarchy.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/680583003
2014-10-24 11:04:40 -07:00
Adam Barth
ae72930937 Open the Sky 2014-10-23 11:17:19 -07:00