> On Feb 23, 2015, at 6:42 AM, Boris Zbarsky <bzbar...@mit.edu> wrote:
> 
> On 2/23/15 4:27 AM, Anne van Kesteren wrote:
> 
>> 1) If we run the constructor synchronously, even during cloning. If
>> the constructor did something unexpected, is that actually
>> problematic? It is not immediately clear to me what invariants we
>> might want to preserve. Possibly it's just that the code would get
>> more complicated when not self-hosted? Similar to mutation events? If
>> someone has a list of reasons in mind that would be appreciated. This
>> type of question keeps popping up.
> 
> So these are the things that come to mind offhand for me, which may or may 
> not be problems:
> 
> 1)  If cloning can have sync side-effects, then we need to either accept that 
> cloneNode can go into an infinite loop or ... I'm not sure what. And yes, 
> non-self-hosted implementation gets more complicated.
> 
> 2)  There are various non-obvious cloning operations UAs can perform right 
> now because cloning is side-effect free.  For example, when you print Gecko 
> clones the document and then does the printing stuff async on the cloned 
> document instead of blocking the UI thread while the (fairly long-running) 
> print operation completes.  If cloning became observable, we'd need to figure 
> out what to do here internally (e.g. introduce a new sort of cloning that 
> doesn't run the constructors?).

It seems like this would be an issue regardless of whether callbacks are 
synchronous or not.  Because even if created callback/constructor were to run 
asynchronously, it would still be observable.

In that regard, perhaps what we need another option (although 4 might be a 
developer friendly superset of this):
5) Don't do anything.  Custom elements will be broken upon cloning if there are 
internal states other than attributes just like cloning a canvas element will 
lose its context.

- R. Niwa


Reply via email to