Index: LayoutTests/fast/dom/custom/transfer-callbacks.html |
diff --git a/LayoutTests/fast/dom/custom/transfer-callbacks.html b/LayoutTests/fast/dom/custom/transfer-callbacks.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4a2af92e2164f24093661f033f029771cfc0245c |
--- /dev/null |
+++ b/LayoutTests/fast/dom/custom/transfer-callbacks.html |
@@ -0,0 +1,51 @@ |
+<!DOCTYPE html> |
+<script src="../../../resources/testharness.js"></script> |
+<script src="../../../resources/testharnessreport.js"></script> |
+<body> |
+<script> |
+t = async_test('transfer callbacks'); |
+t.gets = []; |
+t.calls = []; |
+ |
+t.step(function () { |
+ function getter(name) { |
+ return function () { |
+ t.gets.push(name); |
+ return function () { |
+ t.calls.push(name); |
+ }; |
+ }; |
+ } |
+ |
+ var proto = Object.create(HTMLElement.prototype, { |
+ insertedCallback: { |
+ get: getter('inserted') |
+ }, |
+ readyCallback: { |
+ get: getter('ready') |
+ }, |
+ removedCallback: { |
+ get: getter('removed') |
+ } |
+ }); |
+ |
+ var ctor = document.register('x-a', {prototype: proto}); |
+ assert_array_equals(t.gets, ['ready', 'inserted', 'removed'], 'the callbacks must have been retrieved in the correct order'); |
+ |
+ function failer() { |
+ assert_unreached('the callbacks must not be retrieved after registration'); |
+ } |
+ proto.readyCallback = proto.insertedCallback = proto.removedCallback = failer; |
+ |
+ var element = new ctor(); |
+ document.body.appendChild(element); |
+ element.remove(); |
+}); |
+</script> |
+<script> |
+t.step(function () { |
+ assert_array_equals(t.calls, ['ready', 'inserted', 'removed'], 'the retrieved callbacks should have been invoked'); |
+ t.done(); |
+ t = null; |
+}); |
+</script> |