W3C home > Mailing lists > Public > public-webapps@w3.org > April to June 2012

Re: Should MutationObservers be able to observe work done by the HTML parser?

From: Rafael Weinstein <rafaelw@google.com>
Date: Sat, 30 Jun 2012 08:56:57 -0700
Message-ID: <CABMdHiQ46Ld2fUgXKfJsm1Oyf_cWwNaKwCYhkSx9pYU0S7tZag@mail.gmail.com>
To: Jonas Sicking <jonas@sicking.cc>
Cc: Adam Klein <adamk@chromium.org>, olli@pettay.fi, Anne van Kesteren <annevk@annevk.nl>, Ian Hickson <ian@hixie.ch>, WebApps WG <public-webapps@w3.org>
On Fri, Jun 29, 2012 at 6:14 PM, Jonas Sicking <jonas@sicking.cc> wrote:
> On Fri, Jun 29, 2012 at 8:25 PM, Adam Klein <adamk@chromium.org> wrote:
>> On Fri, Jun 29, 2012 at 2:44 AM, Jonas Sicking <jonas@sicking.cc> wrote:
>>> All in all I think that as soon as we introduce exceptions to when
>>> MutationObserver callbacks fire we change the API from being a
>>> reliable way to track DOM mutations to a unreliable way where all
>>> callers have to be aware of exceptions and deal with them in other
>>> ways. I.e. it feels like it significantly reduces the value of
>>> MutationObservers.
>>> And so far I don't see any good arguments made for making that
>>> reduction in value. Did I miss any arguments other then the randomness
>>> argument?
>> Performance was one concern that's come up in discussing this with Ojan and
>> Rafael. Imagine a MutationObserver attached to the document near the top of
>> the page. Now we need to create basically one MutationRecord per node
>> inserted (because the parser operates in a depth-first sort of order). I'm
>> not at all sure this is a show-stopper (we might be able to introduce some
>> new MutationRecord type that could compactly represent parser-style
>> operation), but it definitely seems worrisome, especially given that one of
>> the common uses for MutationObservers is extensions which might run on many
>> (all?) pages.
> Hmm.. is there actually anything requiring that nodes are inserted one
> at a time? Internally in mozilla we do insert nodes one at a time, but
> the notifications we send out to the various subsystems make it seem
> like nodes are inserted in big chunks. This has previously been to

Are the chunks arbitrarily shaped fragments? I.e. is their any
restriction on their shape other than "a tree"?

> give us good performance from the layout engine which benefits from
> getting notified by large chunks being inserted rather than nodes
> being inserted one at a time. The MutationObserver implementation
> hangs off of the same notification system and thus also sees nodes as
> being inserted in big chunks.
> / Jonas
Received on Saturday, 30 June 2012 15:57:25 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 18:13:34 UTC