| Implement Custom Elements | ||||||||||||||||||
| Project Member Reported by dominicc@chromium.org, Apr 23 2013 | Back to list | |||||||||||||||||
Custom Elements are described in this spec: <https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/index.html> There was an initial implementation inherited from WebKit, but it is incomplete. Completing the implementation requires a detailed reading of the spec, but at a high level, we need to: - Upgrade elements already in the document on registration (Issue 233775). - Implement the full set of callbacks. - Implement declarative syntax (the "element element").
,
May 2 2013
------------------------------------------------------------------------ r149560 | dominicc@chromium.org | 2013-05-02T00:54:20.114831Z Changed paths: M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/document-register-namespace-expected.txt?r1=149560&r2=149559&pathrev=149560 M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/document-register-namespace.html?r1=149560&r2=149559&pathrev=149560 M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistry.cpp?r1=149560&r2=149559&pathrev=149560 Extending a non-HTML, non-SVG element should throw NAMESPACE_ERR BUG=234509 Review URL: https://chromiumcodereview.appspot.com/14751008 ------------------------------------------------------------------------
,
May 2 2013
,
May 2 2013
,
May 3 2013
------------------------------------------------------------------------ r149644 | dominicc@chromium.org | 2013-05-03T09:11:25.641719Z Changed paths: M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementHelpers.cpp?r1=149644&r2=149643&pathrev=149644 Harden wrapping Custom Elements against empty creation contexts BUG=234509 Review URL: https://chromiumcodereview.appspot.com/14760007 ------------------------------------------------------------------------
,
May 13 2013
,
May 13 2013
This is on hold while I burn down the buglist a bit.
,
May 21 2013
,
May 21 2013
,
May 27 2013
Quick update on this: I am working on writing and submitting a test suite to the W3C for Custom Elements. I'm concurrently working on a design doc here: <https://docs.google.com/a/chromium.org/document/d/1qxqptcZx4nigN4m6zhmZaBpyoSHXlpEoQCrxfl8-2gk/edit> It is in rough shape--the most interesting part is the plan of work at the bottom of the doc.
,
May 29 2013
,
Jun 14 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=152427
------------------------------------------------------------------------
r152427 | dominicc@chromium.org | 2013-06-14T07:47:48.521313Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementDefinition.cpp?r1=152427&r2=152426&pathrev=152427
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistry.cpp?r1=152427&r2=152426&pathrev=152427
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementHelpers.h?r1=152427&r2=152426&pathrev=152427
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementDefinition.h?r1=152427&r2=152426&pathrev=152427
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistry.h?r1=152427&r2=152426&pathrev=152427
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8PerContextData.cpp?r1=152427&r2=152426&pathrev=152427
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementHelpers.cpp?r1=152427&r2=152426&pathrev=152427
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8PerContextData.h?r1=152427&r2=152426&pathrev=152427
Move Custom Element's prototype reference from core/dom to bindings.
BUG=234509
R=haraken@chromium.org
Review URL: https://codereview.chromium.org/15817010
------------------------------------------------------------------------
,
Jun 14 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=152430
------------------------------------------------------------------------
r152430 | dominicc@chromium.org | 2013-06-14T08:17:15.402481Z
Changed paths:
D http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/custom/V8CustomElementConstructorCustom.cpp?r1=152430&r2=152429&pathrev=152430
D http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8AdaptorFunction.cpp?r1=152430&r2=152429&pathrev=152430
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.idl?r1=152430&r2=152429&pathrev=152430
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/CodeGeneratorV8.pm?r1=152430&r2=152429&pathrev=152430
D http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8AdaptorFunction.h?r1=152430&r2=152429&pathrev=152430
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8HiddenPropertyName.h?r1=152430&r2=152429&pathrev=152430
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/bindings.gypi?r1=152430&r2=152429&pathrev=152430
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/results/V8TestObject.cpp?r1=152430&r2=152429&pathrev=152430
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistry.cpp?r1=152430&r2=152429&pathrev=152430
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.cpp?r1=152430&r2=152429&pathrev=152430
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/tests/idls/TestObject.idl?r1=152430&r2=152429&pathrev=152430
D http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementConstructor.idl?r1=152430&r2=152429&pathrev=152430
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8DOMWrapper.cpp?r1=152430&r2=152429&pathrev=152430
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistry.h?r1=152430&r2=152429&pathrev=152430
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.h?r1=152430&r2=152429&pathrev=152430
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8DOMWrapper.h?r1=152430&r2=152429&pathrev=152430
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/IDLAttributes.txt?r1=152430&r2=152429&pathrev=152430
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementHelpers.cpp?r1=152430&r2=152429&pathrev=152430
D http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementConstructor.cpp?r1=152430&r2=152429&pathrev=152430
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/IDLParser.pm?r1=152430&r2=152429&pathrev=152430
D http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementConstructor.h?r1=152430&r2=152429&pathrev=152430
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementHelpers.h?r1=152430&r2=152429&pathrev=152430
M http://src.chromium.org/viewvc/blink/trunk/Source/core/core.gypi?r1=152430&r2=152429&pathrev=152430
Simplify Custom Element constructors to be functions, not wrappers
Custom Element constructors are returned to script and not used by the bindings again. It is not necessary for them to be full-blown wrapped objects.
BUG=234509
R=haraken@chromium.org, morrita@chromium.org
Review URL: https://codereview.chromium.org/16708002
------------------------------------------------------------------------
,
Jun 20 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=152738
------------------------------------------------------------------------
r152738 | dominicc@chromium.org | 2013-06-20T00:57:20.659420Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementDefinition.h?r1=152738&r2=152737&pathrev=152738
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistry.h?r1=152738&r2=152737&pathrev=152738
A http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementConstructorBuilder.cpp?r1=152738&r2=152737&pathrev=152738
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/bindings.gypi?r1=152738&r2=152737&pathrev=152738
A http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementConstructorBuilder.h?r1=152738&r2=152737&pathrev=152738
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementHelpers.cpp?r1=152738&r2=152737&pathrev=152738
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistry.cpp?r1=152738&r2=152737&pathrev=152738
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.cpp?r1=152738&r2=152737&pathrev=152738
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementHelpers.h?r1=152738&r2=152737&pathrev=152738
Make CustomElementHelpers divest constructor generation code.
CustomElementHelpers is an unstructured mess. Make sense of it by
breaking it into pieces for constructor generation, wrapper creation,
callbacks, etc.
This pulls the methods related to constructor generation into their
own class. This does not bring sanity to the code that moved nor the
code that remains; just transferring the inmates to the right asylum
first without changing behavior.
BUG=234509
R=dglazkov@chromium.org, haraken@chromium.org
Review URL: https://codereview.chromium.org/16938010
------------------------------------------------------------------------
,
Jun 25 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=152982
------------------------------------------------------------------------
r152982 | dominicc@chromium.org | 2013-06-25T03:56:43.328909Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/CodeGeneratorV8.pm?r1=152982&r2=152981&pathrev=152982
A http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackDispatcher.cpp?r1=152982&r2=152981&pathrev=152982
A http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Microtask.cpp?r1=152982&r2=152981&pathrev=152982
M http://src.chromium.org/viewvc/blink/trunk/Source/WebKit/chromium/src/WebKit.cpp?r1=152982&r2=152981&pathrev=152982
A http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackDispatcher.h?r1=152982&r2=152981&pathrev=152982
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistry.cpp?r1=152982&r2=152981&pathrev=152982
M http://src.chromium.org/viewvc/blink/trunk/Source/core/core.gypi?r1=152982&r2=152981&pathrev=152982
A http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Microtask.h?r1=152982&r2=152981&pathrev=152982
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistry.h?r1=152982&r2=152981&pathrev=152982
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementConstructorBuilder.cpp?r1=152982&r2=152981&pathrev=152982
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8RecursionScope.cpp?r1=152982&r2=152981&pathrev=152982
M http://src.chromium.org/viewvc/blink/trunk/Source/core/html/parser/HTMLScriptRunner.cpp?r1=152982&r2=152981&pathrev=152982
This introduces one place, Microtask::performCheckpoint, to add checkpoint steps and teleports all calls to MutationObservers::deliverAllMutations to their new home.
It pulls the callback dispatching behavior that was left in CustomElementRegistry into its own class, CustomElementCallbackDispatcher. Custom Elements have evolved and how involve four callbacks with three timing semantics. CustomElementCallbackDispatcher will be the traffic cop when the latter three kinds of callbacks are implemented.
This is fixes two bad behaviors (1. run Custom Element lifecycle callbacks and Mutation Observers in an inconsistent order depending on callsite; 2. allow pending lifecycle callbacks, or mutation events begot by lifecycle callbacks, to persist until the next microtask.)
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/14660019
------------------------------------------------------------------------
,
Jun 25 2013
,
Jul 2 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=153395
------------------------------------------------------------------------
r153395 | dominicc@chromium.org | 2013-07-02T02:40:04.102636Z
Changed paths:
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/registration-context-delete-during-register-ready-retrieval.html?r1=153395&r2=153394&pathrev=153395
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/registration-context-delete-during-upgrade-expected.txt?r1=153395&r2=153394&pathrev=153395
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/registration-context-delete-during-register-prototype-retrieval.html?r1=153395&r2=153394&pathrev=153395
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementConstructorBuilder.cpp?r1=153395&r2=153394&pathrev=153395
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/registration-context-delete-then-register-expected.txt?r1=153395&r2=153394&pathrev=153395
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/registration-context-delete-during-upgrade.html?r1=153395&r2=153394&pathrev=153395
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/testutils.js?r1=153395&r2=153394&pathrev=153395
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementConstructorBuilder.h?r1=153395&r2=153394&pathrev=153395
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementHelpers.cpp?r1=153395&r2=153394&pathrev=153395
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/registration-context-delete-then-register.html?r1=153395&r2=153394&pathrev=153395
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/registration-context-delete-during-register-ready-retrieval-expected.txt?r1=153395&r2=153394&pathrev=153395
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/registration-context-delete-during-register-prototype-retrieval-expected.txt?r1=153395&r2=153394&pathrev=153395
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistry.cpp?r1=153395&r2=153394&pathrev=153395
Harden Custom Element registration processing against context destruction.
This adds tests for destroying the containing iframe when:
- Retrieving the 'prototype' option during registration.
- Retrieving the 'ready' callback during registration.
- Upgrading an element as a result of registration.
It also adds a test for destroying the containing iframe, then trying
to register a new custom element.
BUG=234509
R=abarth@chromium.org
Review URL: https://codereview.chromium.org/18335002
------------------------------------------------------------------------
,
Jul 4 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=153549
------------------------------------------------------------------------
r153549 | dominicc@chromium.org | 2013-07-04T02:17:58.549065Z
Changed paths:
A http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8CustomElementLifecycleCallbacks.cpp?r1=153549&r2=153548&pathrev=153549
D http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallback.h?r1=153549&r2=153548&pathrev=153549
D http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8CustomElementCallback.h?r1=153549&r2=153548&pathrev=153549
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackDispatcher.cpp?r1=153549&r2=153548&pathrev=153549
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/bindings.gypi?r1=153549&r2=153548&pathrev=153549
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementConstructorBuilder.h?r1=153549&r2=153548&pathrev=153549
A http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementLifecycleCallbacks.h?r1=153549&r2=153548&pathrev=153549
A http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8CustomElementLifecycleCallbacks.h?r1=153549&r2=153548&pathrev=153549
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackDispatcher.h?r1=153549&r2=153548&pathrev=153549
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementDefinition.cpp?r1=153549&r2=153548&pathrev=153549
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistry.cpp?r1=153549&r2=153548&pathrev=153549
M http://src.chromium.org/viewvc/blink/trunk/Source/core/core.gypi?r1=153549&r2=153548&pathrev=153549
D http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8CustomElementCallback.cpp?r1=153549&r2=153548&pathrev=153549
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementDefinition.h?r1=153549&r2=153548&pathrev=153549
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementConstructorBuilder.cpp?r1=153549&r2=153548&pathrev=153549
Rename CustomElementCallback to CustomElementLifecycleCallbacks.
BUG=234509
R=dglazkov@chromium.org
Review URL: https://codereview.chromium.org/18606003
------------------------------------------------------------------------
,
Jul 4 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=153550
------------------------------------------------------------------------
r153550 | dominicc@chromium.org | 2013-07-04T02:24:41.492809Z
Changed paths:
D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/constructor-calls-ready-synchronously-expected.txt?r1=153550&r2=153549&pathrev=153550
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/constructor-calls-created-synchronously-expected.txt?r1=153550&r2=153549&pathrev=153550
D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/ready-callback.html?r1=153550&r2=153549&pathrev=153550
D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-ready-innerHTML.html?r1=153550&r2=153549&pathrev=153550
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-createElement-reentrancy-expected.txt?r1=153550&r2=153549&pathrev=153550
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-innerHTML.html?r1=153550&r2=153549&pathrev=153550
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8CustomElementLifecycleCallbacks.cpp?r1=153550&r2=153549&pathrev=153550
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8HiddenPropertyName.h?r1=153550&r2=153549&pathrev=153550
D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-ready-parser-script-expected.txt?r1=153550&r2=153549&pathrev=153550
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementLifecycleCallbacks.h?r1=153550&r2=153549&pathrev=153550
D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-ready-creation-api.html?r1=153550&r2=153549&pathrev=153550
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-parser-script-expected.txt?r1=153550&r2=153549&pathrev=153550
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/created-callback-expected.txt?r1=153550&r2=153549&pathrev=153550
D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/registration-context-delete-during-register-ready-retrieval-expected.txt?r1=153550&r2=153549&pathrev=153550
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackDispatcher.h?r1=153550&r2=153549&pathrev=153550
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-parser-only-expected.html?r1=153550&r2=153549&pathrev=153550
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/registration-context-delete-during-register-created-retrieval-expected.txt?r1=153550&r2=153549&pathrev=153550
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/document-register-basic.html?r1=153550&r2=153549&pathrev=153550
D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/constructor-calls-ready-synchronously.html?r1=153550&r2=153549&pathrev=153550
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/constructor-calls-created-synchronously.html?r1=153550&r2=153549&pathrev=153550
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementConstructorBuilder.cpp?r1=153550&r2=153549&pathrev=153550
D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-ready-paste-expected.txt?r1=153550&r2=153549&pathrev=153550
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-createElement-reentrancy.html?r1=153550&r2=153549&pathrev=153550
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-creation-api-expected.txt?r1=153550&r2=153549&pathrev=153550
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-paste-expected.txt?r1=153550&r2=153549&pathrev=153550
D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-ready-parser-script.html?r1=153550&r2=153549&pathrev=153550
D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-ready-createElement-recursion-expected.txt?r1=153550&r2=153549&pathrev=153550
D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-ready-createElement-reentrancy-expected.txt?r1=153550&r2=153549&pathrev=153550
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-createElement-recursion-expected.txt?r1=153550&r2=153549&pathrev=153550
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-parser-script.html?r1=153550&r2=153549&pathrev=153550
D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/registration-context-delete-during-register-ready-retrieval.html?r1=153550&r2=153549&pathrev=153550
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/created-callback.html?r1=153550&r2=153549&pathrev=153550
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/registration-context-delete-during-register-created-retrieval.html?r1=153550&r2=153549&pathrev=153550
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/registration-context-delete-during-upgrade.html?r1=153550&r2=153549&pathrev=153550
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackDispatcher.cpp?r1=153550&r2=153549&pathrev=153550
D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/ready-callback-expected.txt?r1=153550&r2=153549&pathrev=153550
D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-ready-innerHTML-expected.txt?r1=153550&r2=153549&pathrev=153550
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8CustomElementLifecycleCallbacks.h?r1=153550&r2=153549&pathrev=153550
D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-ready-parser-only-expected.html?r1=153550&r2=153549&pathrev=153550
D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-ready-parser-only.html?r1=153550&r2=153549&pathrev=153550
D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-ready-paste.html?r1=153550&r2=153549&pathrev=153550
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-innerHTML-expected.txt?r1=153550&r2=153549&pathrev=153550
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistry.cpp?r1=153550&r2=153549&pathrev=153550
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-parser-only.html?r1=153550&r2=153549&pathrev=153550
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-creation-api.html?r1=153550&r2=153549&pathrev=153550
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-paste.html?r1=153550&r2=153549&pathrev=153550
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/element-upgrade.html?r1=153550&r2=153549&pathrev=153550
D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-ready-createElement-recursion.html?r1=153550&r2=153549&pathrev=153550
D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-ready-createElement-reentrancy.html?r1=153550&r2=153549&pathrev=153550
D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-ready-creation-api-expected.txt?r1=153550&r2=153549&pathrev=153550
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-createElement-recursion.html?r1=153550&r2=153549&pathrev=153550
Rename Custom Elements readyCallback to createdCallback.
This is in line with the proposal discussed on
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=22459>.
This just renames the callback; it does not implement the proposed
timing changes yet.
BUG=234509
R=abarth@chromium.org
Review URL: https://codereview.chromium.org/18592004
------------------------------------------------------------------------
,
Jul 4 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=153558
------------------------------------------------------------------------
r153558 | dominicc@chromium.org | 2013-07-04T06:39:56.321845Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/created-callback.html?r1=153558&r2=153557&pathrev=153558
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-innerHTML.html?r1=153558&r2=153557&pathrev=153558
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8CustomElementLifecycleCallbacks.cpp?r1=153558&r2=153557&pathrev=153558
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackDispatcher.cpp?r1=153558&r2=153557&pathrev=153558
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8CustomElementLifecycleCallbacks.h?r1=153558&r2=153557&pathrev=153558
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/created-callback-expected.txt?r1=153558&r2=153557&pathrev=153558
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistry.cpp?r1=153558&r2=153557&pathrev=153558
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-innerHTML-expected.txt?r1=153558&r2=153557&pathrev=153558
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-creation-api.html?r1=153558&r2=153557&pathrev=153558
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-paste.html?r1=153558&r2=153557&pathrev=153558
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistry.h?r1=153558&r2=153557&pathrev=153558
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementConstructorBuilder.cpp?r1=153558&r2=153557&pathrev=153558
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.cpp?r1=153558&r2=153557&pathrev=153558
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementUpgradeCandidateMap.cpp?r1=153558&r2=153557&pathrev=153558
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-creation-api-expected.txt?r1=153558&r2=153557&pathrev=153558
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-paste-expected.txt?r1=153558&r2=153557&pathrev=153558
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementConstructorBuilder.h?r1=153558&r2=153557&pathrev=153558
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Element.cpp?r1=153558&r2=153557&pathrev=153558
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementHelpers.cpp?r1=153558&r2=153557&pathrev=153558
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.h?r1=153558&r2=153557&pathrev=153558
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementUpgradeCandidateMap.h?r1=153558&r2=153557&pathrev=153558
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Element.h?r1=153558&r2=153557&pathrev=153558
Pow __proto__, sock :unresolved, and clunk the created callback at once.
This aligns the timing of the Custom Elements __proto__ swizzle,
changed applicability of the :unresolved pseudoclass, and call to the
created callback. Now instanceof, :unresolved and a Custom Element
having had a chance to initialize itself are all consistent.
This changes the order in which the created callbacks of
parser-created Custom Elements are processed to be reverse document
order, per a proposal being discussed on this bug:
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=22459>
For now, the created callbacks of upgrade candidates continues to be
processed in whimsical order (specfically, HashSet iteration order).
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/18258003
------------------------------------------------------------------------
,
Jul 5 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=153616
------------------------------------------------------------------------
r153616 | dominicc@chromium.org | 2013-07-05T08:05:07.707440Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/Source/core/core.gypi?r1=153616&r2=153615&pathrev=153616
A http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackQueue.cpp?r1=153616&r2=153615&pathrev=153616
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackDispatcher.cpp?r1=153616&r2=153615&pathrev=153616
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementLifecycleCallbacks.h?r1=153616&r2=153615&pathrev=153616
A http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackQueue.h?r1=153616&r2=153615&pathrev=153616
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackDispatcher.h?r1=153616&r2=153615&pathrev=153616
Reimplement CustomElementCallbackDispatcher to use a processing stack.
This starts to revise the way Custom Element callbacks are dispatched
to match this proposal:
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=22459>
Instead of a queue of callbacks, there is a processing stack which
reflects recursion arising from script; each entry in the stack is an
element queue that orders elements which have callbacks to be
processed at that level; and each element has a local queue of
callbacks.
CustomElementCallbackDispatcher implements the processing stack and
element queues using one flat vector; different stack entries are
delimited by indexes into the vector. This is makes it extremely cheap
to push and pop entries that end up not scheduling any callbacks,
which is nice because as new kinds of Custom Element callbacks are
added this processing will be necessary in many DOM bindings.
This is covered by existing tests. Because there is only one kind of
callback, CustomElementCallbackQueue::processInQueue is only trivially covered. New
kinds of callbacks which exercise this fully are coming right up.
BUG=234509
R=morrita@chromium.org
Review URL: https://codereview.chromium.org/18748002
------------------------------------------------------------------------
,
Jul 5 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=153623
------------------------------------------------------------------------
r153623 | jakerr@google.com | 2013-07-05T09:11:57.765447Z
Changed paths:
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/element-type.html?r1=153623&r2=153622&pathrev=153623
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistry.cpp?r1=153623&r2=153622&pathrev=153623
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistry.h?r1=153623&r2=153622&pathrev=153623
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/element-type-expected.txt?r1=153623&r2=153622&pathrev=153623
Custom Element Registry: Use the original type for definition lookup.
Use the type from instantiation time, not the current 'is' attribute,
when looking up the Element definition.
The spec (https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/index.html) says:
"After a custom element is instantiated, changing the value of the is attribute must not affect this element's custom element type."
It was possible to change a instantiated type extension's 'is' attribute before its definition was registered to break the above assertion.
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/18094005
------------------------------------------------------------------------
,
Jul 5 2013
,
Jul 8 2013
The plan this week is to finish implementing the callbacks and start making Custom Elements work across multiple documents. Stretch goal is to get all of the multiple-document work done this week.
,
Jul 8 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=153675
------------------------------------------------------------------------
r153675 | dominicc@chromium.org | 2013-07-08T12:36:46.863540Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementHelpers.cpp?r1=153675&r2=153674&pathrev=153675
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8PerContextData.h?r1=153675&r2=153674&pathrev=153675
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementHelpers.h?r1=153675&r2=153674&pathrev=153675
A http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementBinding.cpp?r1=153675&r2=153674&pathrev=153675
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementConstructorBuilder.cpp?r1=153675&r2=153674&pathrev=153675
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8CustomElementLifecycleCallbacks.cpp?r1=153675&r2=153674&pathrev=153675
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8PerContextData.cpp?r1=153675&r2=153674&pathrev=153675
A http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementBinding.h?r1=153675&r2=153674&pathrev=153675
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/bindings.gypi?r1=153675&r2=153674&pathrev=153675
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementConstructorBuilder.h?r1=153675&r2=153674&pathrev=153675
Divest functionality from CustomElementHelpers to reduce its users.
Different parts of CustomElementHelpers were used by
CustomElementConstructorBuilder and
V8(HTML|SVG)ElementWrapperFactory. This deports the parts used by
CustomElementConstructorBuilder to clarify CustomElementHelper's
purpose: It is now exclusively about Custom Element wrapper creation.
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/18245006
------------------------------------------------------------------------
,
Jul 8 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=153713
------------------------------------------------------------------------
r153713 | dominicc@chromium.org | 2013-07-08T22:11:54.423806Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/Source/core/scripts/make_names.pl?r1=153713&r2=153712&pathrev=153713
A http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementWrapper.cpp?r1=153713&r2=153712&pathrev=153713
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/bindings.gypi?r1=153713&r2=153712&pathrev=153713
D http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementHelpers.cpp?r1=153713&r2=153712&pathrev=153713
A http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementWrapper.h?r1=153713&r2=153712&pathrev=153713
D http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementHelpers.h?r1=153713&r2=153712&pathrev=153713
Simplify CustomElementHelpers and rename it CustomElementWrapper.
All this class does is wrap Custom Elements, and its only callers are
V8(HTML|SVG)ElementWrapperFactory. Rename it and make its API a
private club.
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/18825002
------------------------------------------------------------------------
,
Jul 9 2013
,
Jul 10 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=153853
------------------------------------------------------------------------
r153853 | dominicc@chromium.org | 2013-07-10T05:46:16.608247Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementConstructorBuilder.cpp?r1=153853&r2=153852&pathrev=153853
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8HiddenPropertyName.h?r1=153853&r2=153852&pathrev=153853
Give Custom Elements-related V8 hidden properties a common prefix.
V8 hidden properties form a shared namespace. Custom Elements was
sharing the "document" property with the window object. It seems
simpler and safer to keep the set of properties related Custom
Elements together.
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/18767003
------------------------------------------------------------------------
,
Jul 15 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=154208
------------------------------------------------------------------------
r154208 | jakerr@google.com | 2013-07-15T08:25:34.097081Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/element-upgrade-expected.txt?r1=154208&r2=154207&pathrev=154208
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/element-upgrade.html?r1=154208&r2=154207&pathrev=154208
Test that the order of Custom Element upgrades is as spec'd.
The order used to be non-deterministic but was recently fixed by: http://src.chromium.org/viewvc/blink?view=revision&revision=153873 to match the order implied by the spec: https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/index.html#dfn-element-upgrade-algorithm
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/18774003
------------------------------------------------------------------------
,
Jul 16 2013
toolkit-hotlist scrub - raising priority
,
Jul 17 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=154351
------------------------------------------------------------------------
r154351 | jakerr@google.com | 2013-07-17T02:17:10.542155Z
Changed paths:
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/element-names.html?r1=154351&r2=154350&pathrev=154351
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/document-register-basic.html?r1=154351&r2=154350&pathrev=154351
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistrationContext.cpp?r1=154351&r2=154350&pathrev=154351
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/element-names-expected.txt?r1=154351&r2=154350&pathrev=154351
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/document-register-basic-expected.txt?r1=154351&r2=154350&pathrev=154351
Custom Elements: Add annotation-xml to reservedNames.
Add a test to validate all reserved names listed in the spec are handled.
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/18835003
------------------------------------------------------------------------
,
Jul 26 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=155003
------------------------------------------------------------------------
r155003 | dominicc@chromium.org | 2013-07-26T19:22:47.329133Z
Changed paths:
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/isolated-world-expected.txt?r1=155003&r2=155002&pathrev=155003
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/isolated-world.html?r1=155003&r2=155002&pathrev=155003
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistry.cpp?r1=155003&r2=155002&pathrev=155003
Add a test using Custom Elements from an isolated world.
For now, throw an exception if an extension tries to use
document.register.
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/20698002
------------------------------------------------------------------------
,
Jul 27 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=155042
------------------------------------------------------------------------
r155042 | dominicc@chromium.org | 2013-07-27T02:40:01.335294Z
Changed paths:
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/entered-left-document.html?r1=155042&r2=155041&pathrev=155042
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackInvocation.cpp?r1=155042&r2=155041&pathrev=155042
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElement.cpp?r1=155042&r2=155041&pathrev=155042
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/entered-left-document-expected.txt?r1=155042&r2=155041&pathrev=155042
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElement.h?r1=155042&r2=155041&pathrev=155042
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Element.cpp?r1=155042&r2=155041&pathrev=155042
Don't invoke Custom Element entered, left callbacks in inactive documents.
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/20677002
------------------------------------------------------------------------
,
Jul 27 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=155059
------------------------------------------------------------------------
r155059 | dominicc@chromium.org | 2013-07-27T22:19:34.181555Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementWrapper.cpp?r1=155059&r2=155058&pathrev=155059
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/isolated-world.html?r1=155059&r2=155058&pathrev=155059
Wrap Custom Elements in isolated worlds at the undifferentiated prototype.
How Custom Elements should interact with isolated worlds hasn't been
thought out yet. For now, we follow the Prime Directive and don't
interfere with isolated worlds: Custom Elements accessed from isolated
worlds have ordinary prototypes. Previously accessing a custom element
upgraded in the main world from an isolated world caused the whole
enterprise to crash.
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/20897002
------------------------------------------------------------------------
,
Jul 29 2013
Update on this: I believe everything Polymer needs to start dogfooding Custom Elements is in the latest canary on Mac and Windows (30.0.1579.0). This includes: - document.register - created, entered, left and attribute callbacks - upgrade, including elements not in the tree, in different documents, etc. - :unresolved pseudoclass - shared definitions with and createHTMLDocument, template contents, imports - simple semantics when working with multiple documents (* explained below) The following are not implemented yet. I assume these are not needed right away: - the <element> element - the 'extends' option - prototype: null handling - "all elements upgraded" or "registered x-foo" events posited on bugs While I wait for feedback I am switching to work on the stability and performance of Custom Elements. I have already made some stability improvements related to extensions. An extension that touches a Custom Element in the latest canary (30.0.1579.0) is likely to lead to crashes, but these should all be fixed in the next canary. There exists a class of bugs where callbacks are delivered later than they should be. One known instance is modifications through the DOM Range API. If you notice callbacks being delivered later than they should be, please let me know. I am going for a systematic fix, but it might be performance sensitive, so it may be necessary to tackle it case-by-case. Getting coverage of all of the methods that might manipulate DOM is what is hard. Once identified the fix is not hard. Simple semantics when working with multiple documents ----------------------------------------------------- First sets of documents are "related": - a document and its imports are related - a document and its template contents' document are related - document.implementation.createHTMLDocument() is related to the original document - Not related: a document in a different frame; XHR.responseXML; etc. etc. Second, all of the Custom Element definitions created with document.register (for any document in the set) are shared between *all* of the documents in the set. For example, document.register in the main document may upgrade custom elements in the templates. Third, the document a custom element is created in is the one it is associated with for life. If it moves into another document (even one that is not "related") it doesn't get a new definition, re-upgraded or anything like that. This leads to the slight weirdness that you can be looking at two <x-foo>s in a document and they have different types. But it avoids a whole lot of other weirdness like downgrade, re-upgrade, etc.
,
Jul 29 2013
Oh, I forgot a proviso: In 30.0.1579.0, the entered document and left document callbacks are invoked for traffic in *any* document. In the next Canary (or more precisely after r155042) this is fixed; these callbacks are only invoked when the document has an "active view" (basically: it is the document in a frame or window). This is what was discussed at the callbacks pow-wow. Of course, it is easy to change these semantics so feedback is welcome.
,
Jul 30 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=155189
------------------------------------------------------------------------
r155189 | dominicc@chromium.org | 2013-07-30T23:25:13.789963Z
Changed paths:
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/leaks.html?r1=155189&r2=155188&pathrev=155189
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/testutils.js?r1=155189&r2=155188&pathrev=155189
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/leaks-expected.txt?r1=155189&r2=155188&pathrev=155189
Add a test that Custom Elements do not induce leaks.
BUG=234509
R=abarth@chromium.org
Review URL: https://codereview.chromium.org/21060003
------------------------------------------------------------------------
,
Aug 1 2013
,
Aug 1 2013
,
Aug 5 2013
Quick update: Last week I fixed a couple of stability and correctness bugs found by the Polymer team and myself through ad-hoc means--just playing with the feature. Looking forward, there's a known *class* of bugs where callbacks are delivered too late or not at all. These all stem from DOM-modifying methods that aren't tagged with DeliverCustomElementCallbacks. An example is DOM Range, which can insert and remove nodes but don't go through the callback-handling paths because they're not tagged with DeliverCustomElementCallbacks. The plan to tackle this is: 1. Change debug code generation to assert that callbacks aren't scheduled in methods that don't have this tag. 2. Measure the performance of just doing the callback check everywhere, and perhaps do that. Maybe make it opt-out instead of opt-in if there are performance sensitive areas. 3. Add extra measures in the processing stack so that if those assertions were to fail anyway, the only bad behavior is callbacks at the wrong time and not lost callbacks or use-after-free. Second, I'm working on stability in general. I'm hacking Chromium to treat a set of built-in elements--input, iframe, body, form, object, script, span, div--as Custom Elements and push them through custom element processing paths. Looking for crashes in layout tests, perf tests, etc. I have the fuzzing basically working but haven't started to look at results yet.
,
Aug 5 2013
Sounds great :)
,
Aug 5 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=155542
------------------------------------------------------------------------
r155542 | dominicc@chromium.org | 2013-08-05T22:17:16.065146Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/Source/core/scripts/make_names.pl?r1=155542&r2=155541&pathrev=155542
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/html-element-type-extension-assert.html?r1=155542&r2=155541&pathrev=155542
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/html-element-type-extension-assert-expected.txt?r1=155542&r2=155541&pathrev=155542
Don't assert wrapping Custom Element type extensions of HTMLElements.
Some HTML elements such as SECTION don't have a distinct DOM
interface; they just use HTMLElement. When one of these is used as a
Custom Elements type extension, Custom Elements wrapping machinery
needs to produce a "direct" wrapper, just like when they're wrapped by
usual means.
This defect was found by the fuzzing described in
<http://crbug.com/234509#c40>.
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/22057003
------------------------------------------------------------------------
,
Aug 6 2013
The fuzzing is working well. It has found a few bugs that would have probably been real head-scratchers: <https://codereview.chromium.org/22057003> and now <https://codereview.chromium.org/22320009/>. This is only very basic fuzzing--setting a type extension on every element created (x-foo for tag name foo), registering one definition (x-span), and looking for debug asserts. Once this is debug assert, crash clean (I think the latter issue is the last one?) I will: 1. Expand the set to the elements mentioned above--input, iframe, body, form, object, script, span, div. 2. Register some definitions in setTimeout. 3. Look for release crashes. 4. Try other loads, like parser perf tests.
,
Aug 6 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=155612
------------------------------------------------------------------------
r155612 | dominicc@chromium.org | 2013-08-06T13:58:17.794366Z
Changed paths:
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/type-extension-undo-assert.html?r1=155612&r2=155611&pathrev=155612
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistrationContext.cpp?r1=155612&r2=155611&pathrev=155612
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/type-extension-undo-assert-expected.txt?r1=155612&r2=155611&pathrev=155612
Don't come undone when undoing the editing of a Custom Element.
CustomElementRegistrationContext hitherto asserted that the parser
would only call setAttribute for the "is" attribute once (or for any
given attribute; but the "is" attribute has special significance
because it governs Custom Element type extensions).
However undoing ReplaceNodeWithSpan may pull an existing Custom
Element out and "parser set" the "is" attribute a second time. This
change weakens the assertion and simply makes subsequent sets of "is"
a no-op.
This defect was found by the fuzzing described in
<http://crbug.com/234509#c40>.
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/22320009
------------------------------------------------------------------------
,
Aug 7 2013
Having tried fuzzing all of the elements mentioned in Comment 43, in Debug and Release, eagerly and lazily (with successive seTimeouts) the only remaining crash is http/tests/plugins/interrupted-get-url.html; unfortunately the callstack isn't a smoking gun. For the fossil record, the hacks to Blink for fuzzing are at: <https://chromium.googlesource.com/experimental/chromium/blink/+/refs/wip/dominicc/custom-elements-stress>
,
Aug 7 2013
I accidentally let the debug tests retry failures (all tests fail with text diff because of logging in the callbacks created by the fuzzing) which runs them sequentially and that may be a source of crashes--I saw a cluster in css3/filters/custom. Will investigate that on a background thread. I tried running the fuzzed tests under ASAN; this yielded no new crashes.
,
Aug 8 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=155743
------------------------------------------------------------------------
r155743 | dominicc@chromium.org | 2013-08-08T07:18:44.667391Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/deprecated_code_generator_v8.pm?r1=155743&r2=155742&pathrev=155743
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.idl?r1=155743&r2=155742&pathrev=155743
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/shadow/ShadowRoot.idl?r1=155743&r2=155742&pathrev=155743
M http://src.chromium.org/viewvc/blink/trunk/Source/core/html/DOMTokenList.idl?r1=155743&r2=155742&pathrev=155743
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/IDLAttributes.txt?r1=155743&r2=155742&pathrev=155743
M http://src.chromium.org/viewvc/blink/trunk/Source/core/html/HTMLElement.idl?r1=155743&r2=155742&pathrev=155743
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.idl?r1=155743&r2=155742&pathrev=155743
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/NamedNodeMap.idl?r1=155743&r2=155742&pathrev=155743
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/ChildNode.idl?r1=155743&r2=155742&pathrev=155743
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Element.idl?r1=155743&r2=155742&pathrev=155743
Rename DeliverCustomElementCallbacks IDL attribute.
Now this is written as CustomElementCallbacks=Deliver. The other value
is None. This can be (but is not yet) used to suppress custom element
callbacks when they would otherwise be enabled by heuristic (for
example, Reflect attribute setters implicitly deliver custom element
callbacks.)
BUG=234509
R=haraken@chromium.org
Review URL: https://codereview.chromium.org/22300015
------------------------------------------------------------------------
,
Aug 8 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=155744
------------------------------------------------------------------------
r155744 | dominicc@chromium.org | 2013-08-08T07:22:22.611907Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/Source/core/html/DOMTokenList.idl?r1=155744&r2=155743&pathrev=155744
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/IDLAttributes.txt?r1=155744&r2=155743&pathrev=155744
M http://src.chromium.org/viewvc/blink/trunk/Source/core/html/HTMLElement.idl?r1=155744&r2=155743&pathrev=155744
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Attr.idl?r1=155744&r2=155743&pathrev=155744
M http://src.chromium.org/viewvc/blink/trunk/Source/core/xml/XSLTProcessor.idl?r1=155744&r2=155743&pathrev=155744
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.idl?r1=155744&r2=155743&pathrev=155744
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/shadow/ShadowRoot.idl?r1=155744&r2=155743&pathrev=155744
M http://src.chromium.org/viewvc/blink/trunk/Source/core/page/Selection.idl?r1=155744&r2=155743&pathrev=155744
M http://src.chromium.org/viewvc/blink/trunk/Source/core/html/HTMLInputElement.idl?r1=155744&r2=155743&pathrev=155744
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.idl?r1=155744&r2=155743&pathrev=155744
M http://src.chromium.org/viewvc/blink/trunk/Source/core/html/HTMLFormElement.idl?r1=155744&r2=155743&pathrev=155744
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/NamedNodeMap.idl?r1=155744&r2=155743&pathrev=155744
M http://src.chromium.org/viewvc/blink/trunk/Source/core/html/HTMLDocument.idl?r1=155744&r2=155743&pathrev=155744
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/ChildNode.idl?r1=155744&r2=155743&pathrev=155744
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Element.idl?r1=155744&r2=155743&pathrev=155744
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Range.idl?r1=155744&r2=155743&pathrev=155744
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/scripts/deprecated_code_generator_v8.pm?r1=155744&r2=155743&pathrev=155744
Mark a bunch of DOM modifying methods to deliver Custom Elements callbacks.
A DOM binding that could result in an element being created, inserted,
removed, or an attribute value changing could enqueue a Custom Element
callback. Tagging these with CustomElementCallbacks=Enable will
invoke the callbacks before returning to script.
BUG=234509
Review URL: https://codereview.chromium.org/22488006
------------------------------------------------------------------------
,
Aug 14 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=156063
------------------------------------------------------------------------
r156063 | dominicc@chromium.org | 2013-08-14T00:31:19.215006Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementUpgradeCandidateMap.cpp?r1=156063&r2=156062&pathrev=156063
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementUpgradeCandidateMap.h?r1=156063&r2=156062&pathrev=156063
Rename CustomElementUpgradeCandidateMap::DestructionObserverMap.
While they observe destruction, they more specifically observe
*element* destruction, so rename this ElementObserverMap. This is both
more specific and more flexible if this needs to observe other parts
of the element lifecycle in future.
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/22847004
------------------------------------------------------------------------
,
Aug 14 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=156072
------------------------------------------------------------------------
r156072 | dominicc@chromium.org | 2013-08-14T04:03:01.107128Z
Changed paths:
A http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementObserver.h?r1=156072&r2=156071&pathrev=156072
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElement.cpp?r1=156072&r2=156071&pathrev=156072
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementUpgradeCandidateMap.cpp?r1=156072&r2=156071&pathrev=156072
A http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementObserver.cpp?r1=156072&r2=156071&pathrev=156072
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementUpgradeCandidateMap.h?r1=156072&r2=156071&pathrev=156072
M http://src.chromium.org/viewvc/blink/trunk/Source/core/core.gypi?r1=156072&r2=156071&pathrev=156072
Split the element observation part out of CustomElementUpgradeCandidateMap.
Refactoring. No behavior change.
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/22969003
------------------------------------------------------------------------
,
Aug 15 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=156135
------------------------------------------------------------------------
r156135 | dominicc@chromium.org | 2013-08-15T04:19:23.851407Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.h?r1=156135&r2=156134&pathrev=156135
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElement.cpp?r1=156135&r2=156134&pathrev=156135
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistrationContext.cpp?r1=156135&r2=156134&pathrev=156135
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.cpp?r1=156135&r2=156134&pathrev=156135
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementUpgradeCandidateMap.cpp?r1=156135&r2=156134&pathrev=156135
Remove the Custom Element 'defined' state.
Refactoring. No behavior change (although less detailed asserts.)
Custom Elements processing used to depend on four states:
1. Not a custom element
2. An upgrade candidate (waiting for a definition)
3. Defined (with a definition, but waiting for upgrade processing)
4. Upgraded
This refactoring mushes the second and third states together. This is
in preparation for introducing a new state related to parsing.
Some of the structure (for example, consolidating more state setting
in CustomElementRegistrationContext; setting the WaitingForUpgrade
state relatively early in createCustomTagElement and setTypeExtension
instead of in didCreateUnresolvedElement) and naming
(WaitingForUpgrade instead of UpgradeCandidate) is in anticipation of
the introduction of the new state.
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/23130005
------------------------------------------------------------------------
,
Aug 15 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=156141
------------------------------------------------------------------------
r156141 | dominicc@chromium.org | 2013-08-15T06:01:38.341288Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-innerHTML.html?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackDispatcher.cpp?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackDispatcher.h?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-innerHTML-expected.txt?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-creation-api.html?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-paste.html?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/element-upgrade.html?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistrationContext.cpp?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/registration-context-delete-during-callback-recursion.html?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElement.cpp?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.cpp?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/registration-context-sharing.html?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementUpgradeCandidateMap.cpp?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-creation-api-expected.txt?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Element.cpp?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistrationContext.h?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElement.h?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-paste-expected.txt?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/element-upgrade-expected.txt?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.h?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementObserver.cpp?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementUpgradeCandidateMap.h?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackScheduler.cpp?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/Source/core/scripts/make_names.pl?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementObserver.h?r1=156141&r2=156140&pathrev=156141
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/created-callback.html?r1=156141&r2=156140&pathrev=156141
Process Custom Elements in post-order.
Custom Element upgrade + created callback invocation used to be
processed in reverse-creation order, which is an expedient way to
ensure that child elements are processed before parents (assuming no
tree modification) so authors can access an element's content in the
created callback.
This changes the order. Descendants are still processed first, so
authors can access an element's content in the created callback, but
siblings are processed in creation order. Because Custom Element
callbacks can have side effects, this makes Custom Elements behave
more like script tags: If authors build constructs like
<x-definition ...></>
<x-use ...></>
they can rely on the side effects of "definition" at the point of
"use".
This is based on a proposal described here:
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=22899>
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/23009004
------------------------------------------------------------------------
,
Aug 16 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=156198
------------------------------------------------------------------------
r156198 | dominicc@chromium.org | 2013-08-16T07:39:51.658370Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistry.cpp?r1=156198&r2=156197&pathrev=156198
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.cpp?r1=156198&r2=156197&pathrev=156198
M http://src.chromium.org/viewvc/blink/trunk/Source/core/scripts/make_names.pl?r1=156198&r2=156197&pathrev=156198
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElement.cpp?r1=156198&r2=156197&pathrev=156198
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistrationContext.cpp?r1=156198&r2=156197&pathrev=156198
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementWrapper.cpp?r1=156198&r2=156197&pathrev=156198
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElement.h?r1=156198&r2=156197&pathrev=156198
Merge CustomElement::isCustomTagName and isValidTypeName...
...and name it simply isValidName, which nicely reflects
Document::isValidName.
In theory custom tag names and type extension names could be separate
sets. However that's not how the spec or implementation are structured
today, so having a distinction in the Custom Elements interface is
specious, untested, etc.
Refactoring; no change in behavior.
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/23281002
------------------------------------------------------------------------
,
Aug 17 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=156258
------------------------------------------------------------------------
r156258 | dominicc@chromium.org | 2013-08-17T02:28:28.281622Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/Source/core/page/RuntimeEnabledFeatures.in?r1=156258&r2=156257&pathrev=156258
M http://src.chromium.org/viewvc/blink/trunk/Source/core/css/CSSSelector.cpp?r1=156258&r2=156257&pathrev=156258
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/DocumentInit.cpp?r1=156258&r2=156257&pathrev=156258
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.idl?r1=156258&r2=156257&pathrev=156258
M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebRuntimeFeatures.cpp?r1=156258&r2=156257&pathrev=156258
Rename the Custom Elements runtime feature to "CustomElements".
The name of the feature should match the name of the spec and the name
used in the implementation. It used to be called CustomDOMElements.
Refactoring; no change in behavior.
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/23189010
------------------------------------------------------------------------
,
Aug 19 2013
Brief update on this: Having digested "better error messages", "post-order upgrade" and "no callbacks during created" I believe that there are no high priority bugs or feature requests from Polymer. Sheriffing this week. Next goal is to port the tests to the W3C test harness and upstream them to W3C. Features still to do: - 'extends' attribute - default prototype handling - setting the constructor prototype for ES6 friendliness (note: needs spec) - relatively obscure spec compliance stuff Things on the sonar that might be torpedoes, friendly dolphins or methane bubbles: - these "definition registered" or "all upgrades done" event ideas that were knocking around - devtools support
,
Aug 27 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=156735
------------------------------------------------------------------------
r156735 | dominicc@chromium.org | 2013-08-27T00:26:17.720720Z
Changed paths:
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/custom-elements-expected.txt?r1=156735&r2=156734&pathrev=156735
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/custom-elements-expected.txt?r1=156735&r2=156734&pathrev=156735
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/custom-elements.html?r1=156735&r2=156734&pathrev=156735
Add a webexposed test for Custom Elements.
The expected result in virtual/stable/webexposed ensures that Custom
Elements don't affect the processing of elements by default.
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/23417002
------------------------------------------------------------------------
,
Aug 30 2013
Reviewed the spec with dglazkov, the outstanding spec compliance issues are: - We currently register type extensions based on the prototype. Actually we should predicate being a type extension on the 'extends' parameter. - enteredDocumentCallback, leftDocumentCallback should be enteredViewCallback, leftViewCallback. - In CustomElementRegistrationContext::didCreateUnresolvedElement, consider not adding the element to the upgrade candidates map until it is being popped by the parser. - Upgrade order across imports needs to be implemented.
,
Aug 31 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=157027
------------------------------------------------------------------------
r157027 | dominicc@chromium.org | 2013-08-30T23:59:07.995108Z
Changed paths:
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/default-prototype-expected.txt?r1=157027&r2=157026&pathrev=157027
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementConstructorBuilder.cpp?r1=157027&r2=157026&pathrev=157027
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8PerContextData.cpp?r1=157027&r2=157026&pathrev=157027
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/default-prototype.html?r1=157027&r2=157026&pathrev=157027
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementConstructorBuilder.h?r1=157027&r2=157026&pathrev=157027
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8PerContextData.h?r1=157027&r2=157026&pathrev=157027
Implement default prototype handling for document.register.
When registering a Custom Element you have the right to have a
prototype present. If you do not provide a prototype, a
court-appointed prototype will be provided at no cost to represent
you.
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/23558004
------------------------------------------------------------------------
,
Sep 10 2013
------------------------------------------------------------------------ r222376 | dominicc@google.com | 2013-09-10T22:46:44.519123Z Changed paths: M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/resources/extensions/web_view.js?r1=222376&r2=222375&pathrev=222376 Prepare Webview's browser plugin for coming Custom Elements API change. The Custom Elements spec has changed to require the "extends" option for type extensions. This updates browser plugin to pass that option ahead of the Blink-side change to implement "extends". TEST=WebViewTest.* BUG=234509 R=fsamuel@chromium.org Review URL: https://codereview.chromium.org/23702032 ------------------------------------------------------------------------
,
Sep 11 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=157559
------------------------------------------------------------------------
r157559 | dominicc@chromium.org | 2013-09-11T01:01:09.858694Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8PerContextData.cpp?r1=157559&r2=157558&pathrev=157559
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/type-extensions-expected.txt?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementConstructorBuilder.h?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/document-register-basic-expected.txt?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/isolated-world.html?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/document-register-namespace.html?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/document-register-reentrant-throwing-constructor-expected.txt?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/Source/core/scripts/make_names.pl?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-innerHTML.html?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementException.cpp?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/document-register-namespace-expected.txt?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/document-register-reentrant-null-constructor-expected.txt?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementException.h?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/element-type.html?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/unresolved-pseudoclass.html?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementRegistry.cpp?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/document-register-type-extensions.html?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-creation-api.html?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/resources/document-register-fuzz.js?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-paste.html?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/element-upgrade.html?r1=157559&r2=157558&pathrev=157559
A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/type-extensions.html?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/document-register-basic.html?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/document-register-reentrant-throwing-constructor.html?r1=157559&r2=157558&pathrev=157559
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementConstructorBuilder.cpp?r1=157559&r2=157558&pathrev=157559
Implement Custom Elements 'extends' option.
This enables creating type extensions of elements without a
differentiated prototype, like <section> (whose interface is
HTMLElement) and elements without a distinct prototype, like <ins> and
<del> (whose interface is HTMLModElement.)
This relaxes a lot of prototype chain checks, in line with recent
changes in the spec Working Draft.
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/23717043
------------------------------------------------------------------------
,
Sep 11 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=157562
------------------------------------------------------------------------
r157562 | dominicc@chromium.org | 2013-09-11T01:31:01.825528Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/CustomElementConstructorBuilder.cpp?r1=157562&r2=157561&pathrev=157562
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElement.cpp?r1=157562&r2=157561&pathrev=157562
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8CustomElementLifecycleCallbacks.cpp?r1=157562&r2=157561&pathrev=157562
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackScheduler.h?r1=157562&r2=157561&pathrev=157562
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/processing-stack-recursion.html?r1=157562&r2=157561&pathrev=157562
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8HiddenPropertyName.h?r1=157562&r2=157561&pathrev=157562
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementLifecycleCallbacks.h?r1=157562&r2=157561&pathrev=157562
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/isolated-world.html?r1=157562&r2=157561&pathrev=157562
M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/V8CustomElementLifecycleCallbacks.h?r1=157562&r2=157561&pathrev=157562
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/entered-left-document.html?r1=157562&r2=157561&pathrev=157562
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackInvocation.cpp?r1=157562&r2=157561&pathrev=157562
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/callback-context.html?r1=157562&r2=157561&pathrev=157562
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/leaks.html?r1=157562&r2=157561&pathrev=157562
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackScheduler.cpp?r1=157562&r2=157561&pathrev=157562
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/created-callback.html?r1=157562&r2=157561&pathrev=157562
Rename Custom Elements entered, left document callbacks.
These now refer to 'view', not 'document'.
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/23660007
------------------------------------------------------------------------
,
Sep 23 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=158076
------------------------------------------------------------------------
r158076 | dominicc@chromium.org | 2013-09-20T03:37:25.568402Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackScheduler.h?r1=158076&r2=158075&pathrev=158076
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackQueue.cpp?r1=158076&r2=158075&pathrev=158076
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackDispatcher.cpp?r1=158076&r2=158075&pathrev=158076
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackQueue.h?r1=158076&r2=158075&pathrev=158076
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackDispatcher.h?r1=158076&r2=158075&pathrev=158076
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/CustomElementCallbackScheduler.cpp?r1=158076&r2=158075&pathrev=158076
Refactor Custom Element callback scheduling.
CustomElementCallbackScheduler was split off from
CustomElementCallbackDispatcher. This moves more data and
functionality related to scheduling callbacks into the scheduler. This
is in preparation for implementing more elaborate callback scheduling
and dispatching for Custom Elements in HTML Imports.
BUG=234509
Review URL: https://chromiumcodereview.appspot.com/24125006
------------------------------------------------------------------------
,
Sep 24 2013
------------------------------------------------------------------------ r225086 | dominicc@chromium.org | 2013-09-24T22:24:49.816209Z Changed paths: M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/resources/extensions/web_view.js?r1=225086&r2=225085&pathrev=225086 Update Webview to new Custom Elements callback names. These will imminently be called entered/leftViewCallback, not entered/leftDocumentCallback. BUG=234509 Review URL: https://chromiumcodereview.appspot.com/23638010 ------------------------------------------------------------------------
,
Oct 11 2013
Custom Elements is blocked on HTML Imports. In general the upgrade ordering problem is quite tricky. Currently it is infeasible: The state to determine whether upgrade should proceed is inaccurate (Issue 306292) and HTMLImportLoaders sometimes aren't destructed.
,
Oct 15 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=159645
------------------------------------------------------------------------
r159645 | dominicc@chromium.org | 2013-10-15T05:50:16.503525Z
Changed paths:
A http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/custom/CustomElementBaseElementQueue.cpp?r1=159645&r2=159644&pathrev=159645
A http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/custom/CustomElementBaseElementQueue.h?r1=159645&r2=159644&pathrev=159645
M http://src.chromium.org/viewvc/blink/trunk/Source/core/core.gypi?r1=159645&r2=159644&pathrev=159645
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/custom/CustomElementCallbackDispatcher.cpp?r1=159645&r2=159644&pathrev=159645
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/custom/CustomElementCallbackDispatcher.h?r1=159645&r2=159644&pathrev=159645
Separate Custom Elements base element queue from the processing stack.
Custom Element callback processing is complicated by HTML Imports: The
Base Element Queue (BEQ) must not run ahead of loading imports so that
the author can rely on script blocks in the import having taken
effect.
This is a refactoring to separate the BEQ from the processing
stack. There's no change in behavior yet. In a follow-up change the
BEQ will maintain elements in import tree order.
BUG=234509
Review URL: https://codereview.chromium.org/26791002
------------------------------------------------------------------------
,
Nov 18 2013
,
Nov 18 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=162229
------------------------------------------------------------------------
r162229 | dominicc@chromium.org | 2013-11-18T20:24:51.585312Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-innerHTML.html?r1=162229&r2=162228&pathrev=162229
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/custom/CustomElementRegistrationContext.h?r1=162229&r2=162228&pathrev=162229
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.cpp?r1=162229&r2=162228&pathrev=162229
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/element-upgrade-expected.txt?r1=162229&r2=162228&pathrev=162229
M http://src.chromium.org/viewvc/blink/trunk/Source/build/scripts/templates/ElementFactory.cpp.tmpl?r1=162229&r2=162228&pathrev=162229
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Element.cpp?r1=162229&r2=162228&pathrev=162229
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Node.h?r1=162229&r2=162228&pathrev=162229
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/lifecycle-created-innerHTML-expected.txt?r1=162229&r2=162228&pathrev=162229
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Element.h?r1=162229&r2=162228&pathrev=162229
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/custom/CustomElement.cpp?r1=162229&r2=162228&pathrev=162229
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/custom/CustomElementRegistrationContext.cpp?r1=162229&r2=162228&pathrev=162229
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/element-upgrade.html?r1=162229&r2=162228&pathrev=162229
Upgrade parser-created Custom Elements in creation order.
Originally, parser-created Custom Elements were upgraded in reverse
order (which quickly and dirtily ensured that an element's children
were upgraded before the element itself.) Then we rethought this and
upgraded them post-order (which meant an element's children were still
upgraded before the element itself, but siblings were upgraded in
order.)
Now parser-created Custom Elements are upgraded in creation order (ie
pre-order.) This is consistent with how Custom Elements are upgraded
when cloning a subtree of nodes.
This is described here:
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=23778>
BUG=234509
Review URL: https://codereview.chromium.org/69533003
------------------------------------------------------------------------
,
Nov 19 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=162284
------------------------------------------------------------------------
r162284 | dominicc@chromium.org | 2013-11-19T08:34:39.559458Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/leaks.html?r1=162284&r2=162283&pathrev=162284
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/registration-context-sharing-expected.txt?r1=162284&r2=162283&pathrev=162284
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/entered-left-document-expected.txt?r1=162284&r2=162283&pathrev=162284
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/registration-context-isolation-expected.txt?r1=162284&r2=162283&pathrev=162284
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/test-harness-utils.js?r1=162284&r2=162283&pathrev=162284
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/testutils.js?r1=162284&r2=162283&pathrev=162284
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/leaks-expected.txt?r1=162284&r2=162283&pathrev=162284
Make Custom Element layout tests run on an attached Android device.
BUG=234509
Review URL: https://codereview.chromium.org/65043012
------------------------------------------------------------------------
,
Nov 19 2013
The following revision refers to this bug:
http://src.chromium.org/viewvc/blink?view=rev&rev=162301
------------------------------------------------------------------------
r162301 | dominicc@chromium.org | 2013-11-19T15:30:57.900355Z
Changed paths:
M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/Document.cpp?r1=162301&r2=162300&pathrev=162301
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/registration-context-sharing-expected.txt?r1=162301&r2=162300&pathrev=162301
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/registration-context-isolation-expected.txt?r1=162301&r2=162300&pathrev=162301
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/registration-context-sharing.html?r1=162301&r2=162300&pathrev=162301
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/HTMLTemplateElement/custom-element-wrapper-gc.html?r1=162301&r2=162300&pathrev=162301
M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/registration-context-isolation.html?r1=162301&r2=162300&pathrev=162301
Don't share the Custom Element registration context with templates.
Elements in templates are meant to be inert. (Scripts don't run, for
example.) So that Custom Elements aren't "live" (upgraded, running
callbacks) in templates, stop sharing the main document's registration
context with the template document.
Authors that want Custom Element definitions to be active in templates
can register definitions with the template document directly.
This is described here:
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=23839>
BUG=234509
Review URL: https://codereview.chromium.org/72773003
------------------------------------------------------------------------
,
Nov 27 2013
,
Nov 27 2013
The implementation is basically complete. There are some known bugs, clean-up work and performance work which we'll deal with in separate specific bugs. I'm unblocking this from Issue 313384, which is about the ordering of Custom Element upgrade in HTML Imports. Turns out the process went faster for Custom Elements than HTML Imports, so we can do the Custom Elements-HTML Imports integration work behind the HTML Imports flag if necessary; we don't need to hold up Custom Elements on HTML Imports. So I'm marking this fixed. Follow Issue 180965 for launch tracking. |
||||||||||||||||||
| ► Sign in to add a comment | ||||||||||||||||||
Owner: dominicc@chromium.org
Status: Started