On Thu, Jan 8, 2015 at 5:54 PM, Boris Zbarsky <bzbar...@mit.edu> wrote:
> On 1/8/15 10:56 AM, Anne van Kesteren wrote:
>> 2) For normal elements we act directly when they are cloned or
>> adopted. How much interest is there in delaying what happens for
>> normal elements to align them with custom elements?
> Which things are we talking about delaying?

As much as possible.

> I'm pretty sure the prototype change that happens in Gecko on adopt right
> now is part of our security model and can't easily be delayed.

I think we did actually discuss delaying this as part of how we wanted
to solve this bug:


The idea was that for normal elements the callback would change the
prototype, but for custom elements the custom element would have to
write that implementation themselves. Thinking of this now however
makes me think that such a solution would not exactly be ideal for a
proper subclassing story (you would expect to inherit the callback
behavior of normal elements).

> The other
> main thing that happens sync on clone is state propagation (e.g. copying of
> values for inputs, right)?  There are some security considerations there too
> that would need to be considered for every bit of state that's propagated;
> consider:
>   var input = document.createElement("input");
>   input.value = "file:///etc/passwd";
>   var newInput = input.cloneNode();
>   newInput.type = "file";
> I would like to see an actual list of the things we're considering delaying
> so we can think about the implications of doing that.

Note that in the above example cloning callbacks would happen after
the cloneNode() call but still before type is being set. So that might
be okay?

Custom elements have callbacks for these things (speculate ones marked with *):

* created
* attached
* detached
* attribute changed
* adopted*
* cloned*

So far I've only been looking at the implications for aligning the
last three. The first three seem a lot harder (and it's not entirely
clear to me the "created" design even works that well, see the
upgrading thread).


Reply via email to