Files
sdk/tests/html/custom/constructor_calls_created_synchronously_test.dart
T
jmesserly@google.com d700bba3e4 fix custom elements that extend tags like "section"
Some tags don't have their own HTMLElement subclass (because they lack unique DOM properties), but it should still be possible to extend them.

R=blois@google.com

Review URL: https://codereview.chromium.org//90113002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30833 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-03 23:46:43 +00:00

67 lines
1.7 KiB
Dart

// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
library constructor_calls_created_synchronously_test;
import 'package:unittest/unittest.dart';
import 'package:unittest/html_config.dart';
import 'dart:html';
import '../utils.dart';
import 'dart:mirrors';
class A extends HtmlElement {
static final tag = 'x-a';
factory A() => new Element.tag(tag);
A.created() : super.created() {
ncallbacks++;
}
static int ncallbacks = 0;
}
main() {
useHtmlConfiguration();
// Adapted from Blink's
// fast/dom/custom/constructor-calls-created-synchronously test.
var registered = false;
setUp(() {
return loadPolyfills().then((_) {
if (!registered) {
registered = true;
document.register(A.tag, A);
}
});
});
test('createdCallback', () {
var x = new A();
expect(A.ncallbacks, 1);
});
test('clone node', () {
A.ncallbacks = 0;
var a = new A();
expect(A.ncallbacks, 1);
var b = a.clone(false);
expect(A.ncallbacks, 2);
expect(b is A, isTrue);
});
test("can extend elements that don't have special prototypes", () {
document.register('fancy-section', FancySection, extendsTag: 'section');
var fancy = document.createElement('section', 'fancy-section');
expect(fancy is FancySection, true, reason: 'fancy-section was registered');
expect(fancy.wasCreated, true, reason: 'FancySection ctor was called');
});
}
class FancySection extends HtmlElement {
bool wasCreated = false;
FancySection.created() : super.created() {
wasCreated = true;
}
}