[dart:html] rename register to registerElement per spec

BUG= https://code.google.com/p/dart/issues/detail?id=18621
R=jacobr@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35829 260f80e4-7a28-3924-810f-c04153c831b5
This commit is contained in:
jmesserly@google.com 2014-05-06 20:41:07 +00:00
parent a9a1b40491
commit 1102849f15
17 changed files with 112 additions and 75 deletions

View file

@ -7752,11 +7752,15 @@ class Document extends Node native "Document"
ElementList queryAll(String relativeSelectors) =>
querySelectorAll(relativeSelectors);
/// Checks if [register] is supported on the current platform.
bool get supportsRegister {
/// Checks if [registerElement] is supported on the current platform.
bool get supportsRegisterElement {
return JS('bool', '("registerElement" in #)', this);
}
/// *Deprecated*: use [supportsRegisterElement] instead.
@deprecated
bool get supportsRegister => supportsRegisterElement;
@DomName('Document.createElement')
Element createElement(String tagName, [String typeExtension]) {
return _createElement(tagName, typeExtension);
@ -9317,7 +9321,7 @@ abstract class Element extends Node implements GlobalEventHandlers, ParentNode,
* // Perform any element initialization.
* }
* }
* document.register('x-custom', CustomElement);
* document.registerElement('x-custom', CustomElement);
*/
Element.created() : super._created() {
// Validate that this is a custom element & perform any additional
@ -14352,7 +14356,7 @@ class HtmlDocument extends Document native "HTMLDocument" {
* }
*
* main() {
* document.register('x-foo', FooElement);
* document.registerElement('x-foo', FooElement);
* var myFoo = new Element.tag('x-foo');
* // prints 'FooElement created!' to the console.
* }
@ -14369,7 +14373,7 @@ class HtmlDocument extends Document native "HTMLDocument" {
* }
*
* main() {
* document.register('x-bar', BarElement);
* document.registerElement('x-bar', BarElement);
* var myBar = new Element.tag('input', 'x-bar');
* // prints 'BarElement created!' to the console.
* }
@ -14378,11 +14382,19 @@ class HtmlDocument extends Document native "HTMLDocument" {
* `<input is="x-bar"></input>`
*
*/
void register(String tag, Type customElementClass, {String extendsTag}) {
void registerElement(String tag, Type customElementClass,
{String extendsTag}) {
_registerCustomElement(JS('', 'window'), this, tag, customElementClass,
extendsTag);
}
/** *Deprecated*: use [registerElement] instead. */
@deprecated
@Experimental()
void register(String tag, Type customElementClass, {String extendsTag}) {
return registerElement(tag, customElementClass, extendsTag: extendsTag);
}
/**
* Static factory designed to expose `visibilitychange` events to event
* handlers that are not necessarily instances of [Document].

View file

@ -7930,11 +7930,15 @@ class Document extends Node
ElementList queryAll(String relativeSelectors) =>
querySelectorAll(relativeSelectors);
/// Checks if [register] is supported on the current platform.
bool get supportsRegister {
/// Checks if [registerElement] is supported on the current platform.
bool get supportsRegisterElement {
return true;
}
/// *Deprecated*: use [supportsRegisterElement] instead.
@deprecated
bool get supportsRegister => supportsRegisterElement;
@DomName('Document.createElement')
Element createElement(String tagName, [String typeExtension]) {
if (typeExtension != null) {
@ -9492,7 +9496,7 @@ abstract class Element extends Node implements GlobalEventHandlers, ParentNode,
* // Perform any element initialization.
* }
* }
* document.register('x-custom', CustomElement);
* document.registerElement('x-custom', CustomElement);
*/
Element.created() : super._created() {
// Validate that this is a custom element & perform any additional
@ -14347,7 +14351,7 @@ class HtmlDocument extends Document {
* }
*
* main() {
* document.register('x-foo', FooElement);
* document.registerElement('x-foo', FooElement);
* var myFoo = new Element.tag('x-foo');
* // prints 'FooElement created!' to the console.
* }
@ -14364,7 +14368,7 @@ class HtmlDocument extends Document {
* }
*
* main() {
* document.register('x-bar', BarElement);
* document.registerElement('x-bar', BarElement);
* var myBar = new Element.tag('input', 'x-bar');
* // prints 'BarElement created!' to the console.
* }
@ -14373,10 +14377,18 @@ class HtmlDocument extends Document {
* `<input is="x-bar"></input>`
*
*/
void register(String tag, Type customElementClass, {String extendsTag}) {
void registerElement(String tag, Type customElementClass,
{String extendsTag}) {
_Utils.register(this, tag, customElementClass, extendsTag);
}
/** *Deprecated*: use [registerElement] instead. */
@deprecated
@Experimental()
void register(String tag, Type customElementClass, {String extendsTag}) {
return registerElement(tag, customElementClass, extendsTag: extendsTag);
}
/**
* Static factory designed to expose `visibilitychange` events to event
* handlers that are not necessarily instances of [Document].

View file

@ -52,8 +52,8 @@ main() {
setUp(() => customElementsReady.then((_) {
if (!registered) {
registered = true;
document.register(A.tag, A);
document.register(B.tag, B);
document.registerElement(A.tag, A);
document.registerElement(B.tag, B);
}
}));

View file

@ -30,7 +30,7 @@ main() {
return customElementsReady.then((_) {
if (!registered) {
registered = true;
document.register(A.tag, A);
document.registerElement(A.tag, A);
}
});
});
@ -51,7 +51,8 @@ main() {
});
test("can extend elements that don't have special prototypes", () {
document.register('fancy-section', FancySection, extendsTag: 'section');
document.registerElement('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');

View file

@ -65,15 +65,15 @@ main() {
return customElementsReady.then((_) {
if (!registered) {
registered = true;
document.register(B.tag, B);
document.register(C.tag, C);
ErrorConstructorElement.register();
document.registerElement(B.tag, B);
document.registerElement(C.tag, C);
ErrorConstructorElement.registerElement();
}
});
});
test('transfer created callback', () {
document.register(A.tag, A);
document.registerElement(A.tag, A);
var x = new A();
expect(A.createdInvocations, 1);
});
@ -107,7 +107,8 @@ main() {
test('cannot register without created', () {
expect(() {
document.register(MissingCreatedElement.tag, MissingCreatedElement);
document.registerElement(MissingCreatedElement.tag,
MissingCreatedElement);
}, throws);
});
@ -149,7 +150,8 @@ main() {
test('cannot register created with params', () {
expect(() {
document.register('x-created-with-params', CreatedWithParametersElement);
document.registerElement('x-created-with-params',
CreatedWithParametersElement);
}, throws);
});
@ -171,7 +173,7 @@ class NestedElement extends HtmlElement {
NestedElement.created() : super.created();
static void register() {
document.register(tag, NestedElement);
document.registerElement(tag, NestedElement);
}
static void test() {
@ -203,7 +205,7 @@ class AccessWhileUpgradingElement extends HtmlElement {
}
static void register() {
document.register(tag, AccessWhileUpgradingElement);
document.registerElement(tag, AccessWhileUpgradingElement);
}
static void test() {
@ -239,7 +241,7 @@ class ErrorConstructorElement extends HtmlElement {
}
static void register() {
document.register(tag, ErrorConstructorElement);
document.registerElement(tag, ErrorConstructorElement);
}
}
@ -254,7 +256,7 @@ class NestedCreatedConstructorElement extends HtmlElement {
NestedCreatedConstructorElement.created() : super.created();
static void register() {
document.register(tag, NestedCreatedConstructorElement);
document.registerElement(tag, NestedCreatedConstructorElement);
}
// Try to run the created constructor, and record the results.

View file

@ -47,23 +47,23 @@ main() {
setUp(() => customElementsReady);
test('Testing document.register() basic behaviors', () {
document.register(Foo.tag, Foo);
test('Testing document.registerElement() basic behaviors', () {
document.registerElement(Foo.tag, Foo);
// Cannot register an existing dart:html type.
expect(() => document.register('x-bad-a', HtmlElement), throws);
expect(() => document.registerElement('x-bad-a', HtmlElement), throws);
// Invalid user type. Doesn't inherit from HtmlElement.
expect(() => document.register('x-bad-b', BadB), throws);
expect(() => document.registerElement('x-bad-b', BadB), throws);
// Not a type.
expect(() => document.register('x-bad-c', null), throws);
expect(() => document.registerElement('x-bad-c', null), throws);
// Cannot register system type.
expect(() => document.register('x-bad-d', Object), throws);
expect(() => document.registerElement('x-bad-d', Object), throws);
// Must extend HtmlElement, not just implement it.
expect(() => document.register(BadE.tag, BadE), throws);
expect(() => document.registerElement(BadE.tag, BadE), throws);
// Constructor initiated instantiation
var createdFoo = new Foo();
@ -104,14 +104,14 @@ main() {
expect(someProperty[container.firstChild], someProperty[parsedFoo]);
// Having another constructor
document.register(Bar.tag, Bar);
document.registerElement(Bar.tag, Bar);
var createdBar = new Bar();
expect(createdBar is Bar, isTrue);
expect(createdBar is Foo, isFalse);
expect(createdBar.tagName, "X-BAR");
// Having a subclass
document.register(Baz.tag, Baz);
document.registerElement(Baz.tag, Baz);
var createdBaz = new Baz();
expect(createdBaz.tagName, "X-BAZ");
expect(createdBaz.thisIsACustomClass, isTrue);

View file

@ -93,12 +93,12 @@ main() {
return;
}
registeredTypes = true;
document.register(Foo.tag, Foo);
document.register(Bar.tag, Bar, extendsTag: 'input');
document.register(Baz.tag, Baz);
document.register(Qux.tag, Qux, extendsTag: 'input');
document.register(MyCanvas.tag, MyCanvas, extendsTag: 'canvas');
document.register(CustomCustomDiv.tag, CustomCustomDiv, extendsTag: 'div');
document.registerElement(Foo.tag, Foo);
document.registerElement(Bar.tag, Bar, extendsTag: 'input');
document.registerElement(Baz.tag, Baz);
document.registerElement(Qux.tag, Qux, extendsTag: 'input');
document.registerElement(MyCanvas.tag, MyCanvas, extendsTag: 'canvas');
document.registerElement(CustomCustomDiv.tag, CustomCustomDiv, extendsTag: 'div');
}
setUp(() => customElementsReady);
@ -107,19 +107,19 @@ main() {
setUp(registerTypes);
test('cannot register twice', () {
expect(() => document.register(FooBad.tag, Foo, extendsTag: 'div'),
expect(() => document.registerElement(FooBad.tag, Foo, extendsTag: 'div'),
throws);
});
test('cannot register for non-matching tag', () {
expect(() {
document.register('x-input-div', Bar, extendsTag: 'div');
document.registerElement('x-input-div', Bar, extendsTag: 'div');
}, throws);
});
test('cannot register type extension for custom tag', () {
expect(() {
document.register('x-custom-tag', CustomCustomDiv);
document.registerElement('x-custom-tag', CustomCustomDiv);
}, throws);
});
});

View file

@ -40,7 +40,7 @@ main() {
upgrader.upgrade(e);
};
document.register('custom-element', CustomElement);
document.registerElement('custom-element', CustomElement);
}
}));

View file

@ -77,8 +77,8 @@ main() {
setUp(() => customElementsReady.then((_) {
if (registeredTypes) return;
registeredTypes = true;
document.register('x-a', Foo);
document.register('x-a-old', FooOldCallbacks);
document.registerElement('x-a', Foo);
document.registerElement('x-a-old', FooOldCallbacks);
}));
group('standard_events', () {

View file

@ -31,7 +31,7 @@ main() {
return customElementsReady.then((_) {
if (!registered) {
registered = true;
document.register(A.tag, A);
document.registerElement(A.tag, A);
}
});
});
@ -51,7 +51,7 @@ main() {
test('accessing custom JS element from Dart', () {
var script = '''
var Foo = document.register('x-foo', {
var Foo = document.registerElement('x-foo', {
prototype: Object.create(HTMLElement.prototype, {
createdCallback: {
value: function() {

View file

@ -22,8 +22,8 @@ main() {
setUp(() => customElementsReady.then((_) {
if (!registered) {
registered = true;
document.register(A.tag, A);
document.register(B.tag, B);
document.registerElement(A.tag, A);
document.registerElement(B.tag, B);
}
}));

View file

@ -28,7 +28,7 @@ main() {
return customElementsReady.then((_) {
if (!registered) {
registered = true;
document.register(A.tag, A);
document.registerElement(A.tag, A);
}
});
});

View file

@ -30,7 +30,7 @@ main() {
test('element is upgraded once', () {
expect(createdCount, 0);
document.register('x-custom', CustomElement);
document.registerElement('x-custom', CustomElement);
expect(createdCount, 0);
var element = document.createElement('x-custom');
@ -54,7 +54,7 @@ main() {
d1.attributes['foo'] = 'bar';
d1 = null;
document.register('x-custom-two', CustomElement);
document.registerElement('x-custom-two', CustomElement);
expect(createdCount, 1);

View file

@ -46,7 +46,7 @@ main() {
group('register', () {
test('register', () {
var tag = nextTag;
document.register(tag, CustomType);
document.registerElement(tag, CustomType);
var element = new Element.tag(tag);
expect(element, isNotNull);
@ -56,13 +56,13 @@ main() {
test('register twice', () {
var tag = nextTag;
document.register(tag, CustomType);
document.registerElement(tag, CustomType);
expect(() {
document.register(tag, CustomType);
document.registerElement(tag, CustomType);
}, throws, reason: 'Cannot register a tag more than once.');
var newTag = nextTag;
document.register(newTag, CustomType);
document.registerElement(newTag, CustomType);
var element = new Element.tag(newTag);
expect(element, isNotNull);
@ -71,19 +71,19 @@ main() {
test('register null', () {
expect(() {
document.register(nextTag, null);
document.registerElement(nextTag, null);
}, throws, reason: 'Cannot register a null type.');
});
test('register native', () {
expect(() {
document.register(nextTag, BodyElement);
document.registerElement(nextTag, BodyElement);
}, throws, reason: 'Cannot register a native element.');
});
test('register non-element', () {
expect(() {
document.register(nextTag, NotAnElement);
document.registerElement(nextTag, NotAnElement);
}, throws, reason: 'Cannot register a non-element.');
});
});
@ -105,7 +105,7 @@ main() {
firedOnPre = true;
});
document.register(tag, CustomType);
document.registerElement(tag, CustomType);
upgradeCustomElements(dom);
var postElement = dom.children[0];
@ -132,7 +132,7 @@ main() {
group('innerHtml', () {
test('query', () {
var tag = nextTag;
document.register(tag, CustomType);
document.registerElement(tag, CustomType);
var element = new DivElement();
element.setInnerHtml('<$tag></$tag>',
treeSanitizer: new NullTreeSanitizer());
@ -147,7 +147,7 @@ main() {
test('query id', () {
var tag = nextTag;
document.register(tag, CustomType);
document.registerElement(tag, CustomType);
var element = new DivElement();
element.setInnerHtml('<$tag id="someid"></$tag>',
treeSanitizer: new NullTreeSanitizer());
@ -165,7 +165,7 @@ main() {
test('created', () {
int oldCount = customCreatedCount;
var tag = nextTag;
document.register(tag, CustomType);
document.registerElement(tag, CustomType);
var element = new DivElement();
element.setInnerHtml('<$tag></$tag>',
treeSanitizer: new NullTreeSanitizer());
@ -178,7 +178,7 @@ main() {
group('mixins', () {
test('can invoke mixin methods', () {
var tag = nextTag;
document.register(tag, CustomType);
document.registerElement(tag, CustomType);
var element = new Element.tag(tag);
element.invokeMixinMethod();

View file

@ -48,8 +48,8 @@ $!MEMBERS
ElementList queryAll(String relativeSelectors) =>
querySelectorAll(relativeSelectors);
/// Checks if [register] is supported on the current platform.
bool get supportsRegister {
/// Checks if [registerElement] is supported on the current platform.
bool get supportsRegisterElement {
$if DART2JS
return JS('bool', '("registerElement" in #)', this);
$else
@ -57,6 +57,10 @@ $else
$endif
}
/// *Deprecated*: use [supportsRegisterElement] instead.
@deprecated
bool get supportsRegister => supportsRegisterElement;
@DomName('Document.createElement')
Element createElement(String tagName, [String typeExtension]) {
$if DART2JS

View file

@ -361,7 +361,7 @@ $(ANNOTATIONS)abstract class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
* // Perform any element initialization.
* }
* }
* document.register('x-custom', CustomElement);
* document.registerElement('x-custom', CustomElement);
*/
Element.created() : super._created() {
// Validate that this is a custom element & perform any additional

View file

@ -219,7 +219,7 @@ $endif
* }
*
* main() {
* document.register('x-foo', FooElement);
* document.registerElement('x-foo', FooElement);
* var myFoo = new Element.tag('x-foo');
* // prints 'FooElement created!' to the console.
* }
@ -236,7 +236,7 @@ $endif
* }
*
* main() {
* document.register('x-bar', BarElement);
* document.registerElement('x-bar', BarElement);
* var myBar = new Element.tag('input', 'x-bar');
* // prints 'BarElement created!' to the console.
* }
@ -245,16 +245,22 @@ $endif
* `<input is="x-bar"></input>`
*
*/
void registerElement(String tag, Type customElementClass,
{String extendsTag}) {
$if DART2JS
void register(String tag, Type customElementClass, {String extendsTag}) {
_registerCustomElement(JS('', 'window'), this, tag, customElementClass,
extendsTag);
}
$else
void register(String tag, Type customElementClass, {String extendsTag}) {
_Utils.register(this, tag, customElementClass, extendsTag);
}
$endif
}
/** *Deprecated*: use [registerElement] instead. */
@deprecated
@Experimental()
void register(String tag, Type customElementClass, {String extendsTag}) {
return registerElement(tag, customElementClass, extendsTag: extendsTag);
}
/**
* Static factory designed to expose `visibilitychange` events to event