Version 0.2.5.0
svn merge -r 15013:15295 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
git-svn-id: http://dart.googlecode.com/svn/trunk@15296 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/.gitignore b/.gitignore
index 5c2afd1..ce9b95f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -74,3 +74,6 @@
# Pub generated "packages" directories
packages
+
+# Vim temporary swap files.
+*.swp
diff --git a/client/dart.js b/client/dart.js
index c76e3fa..1c8b333 100644
--- a/client/dart.js
+++ b/client/dart.js
@@ -159,11 +159,21 @@
window.registerPort = function(name, port) {
var stringified = JSON.stringify(serialize(port));
- window.localStorage['dart-port:' + name] = stringified;
+ var attrName = 'dart-port:' + name;
+ document.documentElement.setAttribute(attrName, stringified);
+ // TODO(vsm): Phase out usage of localStorage. We're leaving it in
+ // temporarily for backwards compatibility.
+ window.localStorage[attrName] = stringified;
};
window.lookupPort = function(name) {
- var stringified = window.localStorage['dart-port:' + name];
+ var attrName = 'dart-port:' + name;
+ var stringified = document.documentElement.getAttribute(attrName);
+ // TODO(vsm): Phase out usage of localStorage. We're leaving it in
+ // temporarily for backwards compatibility.
+ if (!stringified) {
+ stringified = window.localStorage[attrName];
+ }
return deserialize(JSON.parse(stringified));
};
diff --git a/compiler/java/com/google/dart/compiler/UrlLibrarySource.java b/compiler/java/com/google/dart/compiler/UrlLibrarySource.java
index efc71d3..f5ec48c 100644
--- a/compiler/java/com/google/dart/compiler/UrlLibrarySource.java
+++ b/compiler/java/com/google/dart/compiler/UrlLibrarySource.java
@@ -70,6 +70,12 @@
try {
// Force the creation of an escaped relative URI to deal with spaces, etc.
URI uri = getUri().resolve(new URI(null, null, relPath, null, null)).normalize();
+ if (PackageLibraryManager.isPackageUri(uri)) {
+ URI fileUri = packageLibraryManager.resolveDartUri(uri);
+ if (fileUri != null) {
+ uri = fileUri;
+ }
+ }
return createDartSource(uri, relPath, this, packageLibraryManager);
} catch (Throwable e) {
return null;
diff --git a/compiler/java/com/google/dart/compiler/ast/DartDeclaration.java b/compiler/java/com/google/dart/compiler/ast/DartDeclaration.java
index 5080bb1..35f3013 100644
--- a/compiler/java/com/google/dart/compiler/ast/DartDeclaration.java
+++ b/compiler/java/com/google/dart/compiler/ast/DartDeclaration.java
@@ -10,7 +10,8 @@
* considered a part of the declaration, not an independent node. So the name is not visited when
* traversing the AST.
*/
-public abstract class DartDeclaration<N extends DartExpression> extends DartNodeWithMetadata {
+public abstract class DartDeclaration<N extends DartExpression> extends DartNodeWithMetadata
+ implements HasObsoleteMetadata {
private N name; // Not visited.
private DartComment dartDoc;
diff --git a/compiler/java/com/google/dart/compiler/ast/DartDirective.java b/compiler/java/com/google/dart/compiler/ast/DartDirective.java
index ad1a9ec..7c039c1 100644
--- a/compiler/java/com/google/dart/compiler/ast/DartDirective.java
+++ b/compiler/java/com/google/dart/compiler/ast/DartDirective.java
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
+// Copyright (c) 2011, 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.
@@ -9,9 +9,19 @@
/**
* Base class for directives.
*/
-public abstract class DartDirective extends DartNodeWithMetadata {
+public abstract class DartDirective extends DartNodeWithMetadata implements HasObsoleteMetadata {
+ private DartObsoleteMetadata obsoleteMetadata = DartObsoleteMetadata.EMPTY;
+
@Override
public NodeElement getElement() {
throw new UnsupportedOperationException(getClass().getSimpleName());
}
+
+ public DartObsoleteMetadata getObsoleteMetadata() {
+ return obsoleteMetadata;
+ }
+
+ public void setObsoleteMetadata(DartObsoleteMetadata metadata) {
+ this.obsoleteMetadata = metadata;
+ }
}
diff --git a/compiler/java/com/google/dart/compiler/ast/DartStringLiteral.java b/compiler/java/com/google/dart/compiler/ast/DartStringLiteral.java
index 91c69d9..e2a83bf 100644
--- a/compiler/java/com/google/dart/compiler/ast/DartStringLiteral.java
+++ b/compiler/java/com/google/dart/compiler/ast/DartStringLiteral.java
@@ -5,6 +5,7 @@
package com.google.dart.compiler.ast;
import com.google.common.collect.ImmutableList;
+import com.google.dart.compiler.resolver.Element;
import java.util.List;
@@ -12,6 +13,8 @@
* Represents a Dart string literal value.
*/
public class DartStringLiteral extends DartLiteral {
+
+ private Element element;
public static DartStringLiteral get(String x) {
return new DartStringLiteral(x, null);
@@ -43,6 +46,16 @@
}
return parts;
}
+
+ @Override
+ public void setElement(Element element) {
+ this.element = element;
+ }
+
+ @Override
+ public Element getElement() {
+ return element;
+ }
@Override
public void visitChildren(ASTVisitor<?> visitor) {
diff --git a/compiler/java/com/google/dart/compiler/ast/HasObsoleteMetadata.java b/compiler/java/com/google/dart/compiler/ast/HasObsoleteMetadata.java
new file mode 100644
index 0000000..b1648aa
--- /dev/null
+++ b/compiler/java/com/google/dart/compiler/ast/HasObsoleteMetadata.java
@@ -0,0 +1,12 @@
+// Copyright (c) 2012, 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.
+
+package com.google.dart.compiler.ast;
+
+public interface HasObsoleteMetadata {
+
+ DartObsoleteMetadata getObsoleteMetadata();
+
+ void setObsoleteMetadata(DartObsoleteMetadata metadata);
+}
diff --git a/compiler/java/com/google/dart/compiler/ast/LibraryUnit.java b/compiler/java/com/google/dart/compiler/ast/LibraryUnit.java
index d6e2a31..2bd491f 100644
--- a/compiler/java/com/google/dart/compiler/ast/LibraryUnit.java
+++ b/compiler/java/com/google/dart/compiler/ast/LibraryUnit.java
@@ -187,6 +187,14 @@
public void setSelfDartUnit(DartUnit unit) {
this.selfDartUnit = unit;
+ // set DartObsoleteMetadata for LibraryElement
+ if (unit != null) {
+ List<DartDirective> directives = unit.getDirectives();
+ if (!directives.isEmpty() && directives.get(0) instanceof DartLibraryDirective) {
+ DartLibraryDirective libraryDirective = (DartLibraryDirective) directives.get(0);
+ Elements.setLibraryMetadata(element, libraryDirective.getObsoleteMetadata());
+ }
+ }
}
/**
diff --git a/compiler/java/com/google/dart/compiler/parser/DartParser.java b/compiler/java/com/google/dart/compiler/parser/DartParser.java
index 7537e43..a79148c 100644
--- a/compiler/java/com/google/dart/compiler/parser/DartParser.java
+++ b/compiler/java/com/google/dart/compiler/parser/DartParser.java
@@ -96,6 +96,7 @@
import com.google.dart.compiler.ast.DartVariable;
import com.google.dart.compiler.ast.DartVariableStatement;
import com.google.dart.compiler.ast.DartWhileStatement;
+import com.google.dart.compiler.ast.HasObsoleteMetadata;
import com.google.dart.compiler.ast.ImportCombinator;
import com.google.dart.compiler.ast.ImportHideCombinator;
import com.google.dart.compiler.ast.ImportShowCombinator;
@@ -336,8 +337,7 @@
// TODO(scheglov) remove after http://code.google.com/p/dart/issues/detail?id=6318
if (!Elements.isCoreLibrarySource(source)
&& !Elements.isLibrarySource(source, "/isolate/isolate.dart")
- && !Elements.isLibrarySource(source, "crypto/crypto.dart")
- && !Elements.isDart2JsLibrarySource(source)) {
+ && !Elements.isLibrarySource(source, "crypto/crypto.dart")) {
reportError(position(), ParserErrorCode.DEPRECATED_INTERFACE);
}
node = done(parseClass());
@@ -385,19 +385,26 @@
* @param metadata the metadata to be associated with the node
*/
private void setMetadata(DartNodeWithMetadata node, List<DartAnnotation> annotations) {
+ if (node instanceof DartFieldDefinition) {
+ DartFieldDefinition fieldDefinition = (DartFieldDefinition) node;
+ List<DartField> fields = fieldDefinition.getFields();
+ for (DartField field : fields) {
+ setMetadata(field, annotations);
+ }
+ return;
+ }
if (annotations != null && !annotations.isEmpty()) {
node.setMetadata(annotations);
- if (node instanceof DartDeclaration<?>) {
+ if (node instanceof HasObsoleteMetadata) {
+ HasObsoleteMetadata declaration = (HasObsoleteMetadata) node;
for (int i = 0, size = annotations.size(); i < size; i++) {
DartAnnotation annotation = annotations.get(i);
DartExpression nameNode = annotation.getName();
if (nameNode instanceof DartIdentifier) {
String name = ((DartIdentifier) nameNode).getName();
if (name.equals("deprecated")) {
- DartDeclaration<?> declaration = (DartDeclaration<?>) node;
declaration.setObsoleteMetadata(declaration.getObsoleteMetadata().makeDeprecated());
} else if (name.equals("override")) {
- DartDeclaration<?> declaration = (DartDeclaration<?>) node;
declaration.setObsoleteMetadata(declaration.getObsoleteMetadata().makeOverride());
}
}
@@ -1319,8 +1326,7 @@
&& !Elements.isLibrarySource(source, "/math/math.dart")
&& !Elements.isLibrarySource(source, "/io/io_runtime.dart")
&& !Elements.isLibrarySource(source, "/crypto/crypto.dart")
- && !Elements.isLibrarySource(source, "/utf/utf.dart")
- && !Elements.isDart2JsLibrarySource(source)) {
+ && !Elements.isLibrarySource(source, "/utf/utf.dart")) {
reportError(position(), ParserErrorCode.DEPRECATED_ABSTRACT_METHOD);
}
}
@@ -3750,9 +3756,8 @@
constructor = doneWithoutConsuming(toPrefixedType(parts));
} else {
// Named constructor.
- DartIdentifier identifier = (DartIdentifier)part2.getIdentifier();
- constructor = doneWithoutConsuming(new DartPropertyAccess(doneWithoutConsuming(part1),
- identifier));
+ DartIdentifier identifier = (DartIdentifier) part2.getIdentifier();
+ constructor = doneWithoutConsuming(new DartPropertyAccess(part1, identifier));
}
break;
}
diff --git a/compiler/java/com/google/dart/compiler/resolver/Elements.java b/compiler/java/com/google/dart/compiler/resolver/Elements.java
index 5fadc57..b95d48c 100644
--- a/compiler/java/com/google/dart/compiler/resolver/Elements.java
+++ b/compiler/java/com/google/dart/compiler/resolver/Elements.java
@@ -87,6 +87,10 @@
return new LibraryElementImplementation(libraryUnit);
}
+ public static void setLibraryMetadata(LibraryElement element, DartObsoleteMetadata metadata) {
+ ((LibraryElementImplementation) element).setMetadata(metadata);
+ }
+
public static void addExportedElement(LibraryElement libraryElement, Element element) {
((LibraryElementImplementation) libraryElement).addExportedElements(element);
}
@@ -744,21 +748,6 @@
}
return false;
}
-
- /**
- * @return <code>true</code> if given {@link Source} represents library with given name.
- */
- public static boolean isDart2JsLibrarySource(Source source) {
- if (source instanceof DartSource) {
- DartSource dartSource = (DartSource) source;
- LibrarySource library = dartSource.getLibrary();
- if (library != null) {
- String libraryName = library.getName();
- return libraryName.contains("lib/compiler/implementation/");
- }
- }
- return false;
- }
/**
* @return <code>true</code> if given {@link Source} represents code library declaration or
diff --git a/compiler/java/com/google/dart/compiler/resolver/LibraryElementImplementation.java b/compiler/java/com/google/dart/compiler/resolver/LibraryElementImplementation.java
index 8059600..ea4d530 100644
--- a/compiler/java/com/google/dart/compiler/resolver/LibraryElementImplementation.java
+++ b/compiler/java/com/google/dart/compiler/resolver/LibraryElementImplementation.java
@@ -5,6 +5,7 @@
package com.google.dart.compiler.resolver;
import com.google.common.collect.Lists;
+import com.google.dart.compiler.ast.DartObsoleteMetadata;
import com.google.dart.compiler.ast.LibraryUnit;
import java.util.Collection;
@@ -17,6 +18,7 @@
private final List<Element> exportedElements = Lists.newArrayList();
private LibraryUnit libraryUnit;
private MethodElement entryPoint;
+ private DartObsoleteMetadata metadata;
public LibraryElementImplementation(LibraryUnit libraryUnit) {
// TODO(ngeoffray): What should we pass the super? Should a LibraryUnit be a node?
@@ -85,4 +87,13 @@
void addMethod(MethodElement method) {
scope.declareElement(method.getName(), method);
}
+
+ @Override
+ public DartObsoleteMetadata getMetadata() {
+ return metadata;
+ }
+
+ public void setMetadata(DartObsoleteMetadata metadata) {
+ this.metadata = metadata;
+ }
}
diff --git a/compiler/java/com/google/dart/compiler/resolver/ResolveVisitor.java b/compiler/java/com/google/dart/compiler/resolver/ResolveVisitor.java
index ad1da78..3068877 100644
--- a/compiler/java/com/google/dart/compiler/resolver/ResolveVisitor.java
+++ b/compiler/java/com/google/dart/compiler/resolver/ResolveVisitor.java
@@ -16,6 +16,7 @@
import com.google.dart.compiler.ast.DartThisExpression;
import com.google.dart.compiler.ast.DartTypeNode;
import com.google.dart.compiler.ast.DartTypeParameter;
+import com.google.dart.compiler.common.HasSourceInfo;
import com.google.dart.compiler.type.FunctionType;
import com.google.dart.compiler.type.Type;
import com.google.dart.compiler.type.Types;
@@ -143,11 +144,15 @@
node.setType(type);
Element element = type.getElement();
recordElement(node.getIdentifier(), element);
+ checkDeprecated(node, element);
+ return type;
+ }
+
+ protected final void checkDeprecated(HasSourceInfo nameNode, Element element) {
if (element != null && element.getMetadata().isDeprecated()) {
- getContext().onError(node.getIdentifier(), TypeErrorCode.DEPRECATED_ELEMENT,
+ getContext().onError(nameNode, TypeErrorCode.DEPRECATED_ELEMENT,
Elements.getDeprecatedElementTitle(element));
}
- return type;
}
protected <E extends Element> E recordElement(DartNode node, E element) {
diff --git a/compiler/java/com/google/dart/compiler/resolver/Resolver.java b/compiler/java/com/google/dart/compiler/resolver/Resolver.java
index 71d67b2..88b06e4 100644
--- a/compiler/java/com/google/dart/compiler/resolver/Resolver.java
+++ b/compiler/java/com/google/dart/compiler/resolver/Resolver.java
@@ -40,6 +40,7 @@
import com.google.dart.compiler.ast.DartGotoStatement;
import com.google.dart.compiler.ast.DartIdentifier;
import com.google.dart.compiler.ast.DartIfStatement;
+import com.google.dart.compiler.ast.DartImportDirective;
import com.google.dart.compiler.ast.DartInitializer;
import com.google.dart.compiler.ast.DartIntegerLiteral;
import com.google.dart.compiler.ast.DartInvocation;
@@ -76,6 +77,8 @@
import com.google.dart.compiler.ast.DartVariable;
import com.google.dart.compiler.ast.DartVariableStatement;
import com.google.dart.compiler.ast.DartWhileStatement;
+import com.google.dart.compiler.ast.LibraryImport;
+import com.google.dart.compiler.ast.LibraryUnit;
import com.google.dart.compiler.ast.Modifiers;
import com.google.dart.compiler.common.HasSourceInfo;
import com.google.dart.compiler.common.SourceInfo;
@@ -230,11 +233,33 @@
@Override
public Element visitUnit(DartUnit unit) {
+ List<DartImportDirective> importDirectives = Lists.newArrayList();
for (DartDirective directive : unit.getDirectives()) {
+ if (directive instanceof DartImportDirective) {
+ importDirectives.add((DartImportDirective) directive);
+ }
if (directive instanceof DartPartOfDirective) {
directive.accept(this);
}
}
+ // set LibraryElement for "import" directives
+ {
+ LibraryUnit library = unit.getLibrary();
+ if (library != null) {
+ Iterator<LibraryImport> importIterator = library.getImports().iterator();
+ Iterator<DartImportDirective> directiveIterator = importDirectives.iterator();
+ while (importIterator.hasNext() && directiveIterator.hasNext()) {
+ LibraryImport imp = importIterator.next();
+ DartImportDirective dir = directiveIterator.next();
+ DartStringLiteral uri = dir.getLibraryUri();
+ LibraryUnit impLibrary = imp.getLibrary();
+ if (uri != null && impLibrary != null) {
+ uri.setElement(impLibrary.getElement());
+ }
+ }
+ }
+ }
+ // visit top-level nodes
for (DartNode node : unit.getTopLevelNodes()) {
node.accept(this);
}
@@ -715,10 +740,19 @@
}
resolve(functionNode.getBody());
- if (Elements.isNonFactoryConstructor(member)
- && !(body instanceof DartNativeBlock)) {
+ if (Elements.isNonFactoryConstructor(member) && !(body instanceof DartNativeBlock)) {
resolveInitializers(node, initializedFields);
}
+
+ // only generative constructor can have initializers, so resolve them, but report error
+ if (!member.isConstructor() || member.getModifiers().isFactory()) {
+ for (DartInitializer initializer : node.getInitializers()) {
+ resolve(initializer);
+ if (initializer.getName() != null) {
+ onError(initializer, ResolverErrorCode.INITIALIZER_ONLY_IN_GENERATIVE_CONSTRUCTOR);
+ }
+ }
+ }
// resolve redirecting factory constructor
{
@@ -1253,6 +1287,20 @@
}
}
+ if (ElementKind.of(element) == ElementKind.FIELD) {
+ FieldElement fieldElement = (FieldElement) element;
+ if (fieldElement.getModifiers().isAbstractField()) {
+ if (fieldElement.getGetter() == null && ASTNodes.inGetterContext(x)) {
+ topLevelContext.onError(x, ResolverErrorCode.FIELD_DOES_NOT_HAVE_A_GETTER);
+ x.markResolutionAlreadyReportedThatTheMethodCouldNotBeFound();
+ }
+ if (fieldElement.getSetter() == null && ASTNodes.inSetterContext(x)) {
+ topLevelContext.onError(x, ResolverErrorCode.FIELD_DOES_NOT_HAVE_A_SETTER);
+ x.markResolutionAlreadyReportedThatTheMethodCouldNotBeFound();
+ }
+ }
+ }
+
// May be local variable declared in lexical scope, but its declaration is not visited yet.
if (getContext().getScope().isDeclaredButNotReachedVariable(name)) {
onError(x, ResolverErrorCode.USING_LOCAL_VARIABLE_BEFORE_DECLARATION, x);
@@ -1278,6 +1326,7 @@
// If we we haven't resolved the identifier, it will be normalized to
// this.<identifier>.
+ checkDeprecated(x, element);
return recordElement(x, element);
}
@@ -1319,19 +1368,9 @@
return typeProvider.getTypeType().getElement();
}
break;
+ case FUNCTION_TYPE_ALIAS:
case TYPE_VARIABLE:
- // Type variables are not legal in identifier expressions, but the type variable
- // may be hiding a class element.
- LibraryElement libraryElement = scope.getLibrary();
- Scope libraryScope = libraryElement.getScope();
- // dip again at the library level.
- element = libraryScope.findElement(libraryElement, name);
- if (element == null) {
- onError(x, ResolverErrorCode.TYPE_VARIABLE_NOT_ALLOWED_IN_IDENTIFIER);
- } else {
- return checkResolvedIdentifier(x, isQualifier, libraryScope, name, element);
- }
- break;
+ return typeProvider.getTypeType().getElement();
default:
break;
}
diff --git a/compiler/java/com/google/dart/compiler/resolver/ResolverErrorCode.java b/compiler/java/com/google/dart/compiler/resolver/ResolverErrorCode.java
index 550ea7e..f6d91c6 100644
--- a/compiler/java/com/google/dart/compiler/resolver/ResolverErrorCode.java
+++ b/compiler/java/com/google/dart/compiler/resolver/ResolverErrorCode.java
@@ -127,6 +127,7 @@
ILLEGAL_ACCESS_TO_PRIVATE_MEMBER("\"%s\" refers to \"%s\" which is in a different library"),
ILLEGAL_FIELD_ACCESS_FROM_STATIC("Illegal access of instance field %s from static scope"),
ILLEGAL_METHOD_ACCESS_FROM_STATIC("Illegal access of instance method %s from static scope"),
+ INITIALIZER_ONLY_IN_GENERATIVE_CONSTRUCTOR("Initializers are allowed only in non-redirecting generative constructors"),
INIT_FIELD_ONLY_IMMEDIATELY_SURROUNDING_CLASS(
"Only fields of immediately surrounding class can be initialized"),
INSTANCE_METHOD_FROM_INITIALIZER("Instance methods cannot be referenced from constructor initializer"),
diff --git a/compiler/java/com/google/dart/compiler/type/InterfaceType.java b/compiler/java/com/google/dart/compiler/type/InterfaceType.java
index 7a746c1..99b7c9d 100644
--- a/compiler/java/com/google/dart/compiler/type/InterfaceType.java
+++ b/compiler/java/com/google/dart/compiler/type/InterfaceType.java
@@ -35,6 +35,10 @@
void registerSubClass(ClassElement subClass);
void unregisterSubClass(ClassElement subClass);
+ /**
+ * @return the unique {@link Member} with given name, defined in one of the subtypes. May be
+ * <code>null</code> if not found or not unique.
+ */
Member lookupSubTypeMember(String name);
interface Member {
diff --git a/compiler/java/com/google/dart/compiler/type/InterfaceTypeImplementation.java b/compiler/java/com/google/dart/compiler/type/InterfaceTypeImplementation.java
index fac151a..52c63ce 100644
--- a/compiler/java/com/google/dart/compiler/type/InterfaceTypeImplementation.java
+++ b/compiler/java/com/google/dart/compiler/type/InterfaceTypeImplementation.java
@@ -233,21 +233,32 @@
@Override
public Member lookupSubTypeMember(String name) {
+ Member foundMember = null;
for (ClassElement subClass : subClasses.keySet()) {
+ // find one or more members in subClass elements
{
Element element = subClass.lookupLocalElement(name);
if (element != null) {
- return new MemberImplementation(this, element);
+ if (foundMember != null) {
+ return null;
+ }
+ foundMember = new MemberImplementation(this, element);
+ continue;
}
}
+ // try to find deeper
InterfaceType type = subClass.getType();
if (type != null) {
Member member = type.lookupSubTypeMember(name);
if (member != null) {
- return member;
+ if (foundMember != null) {
+ return null;
+ }
+ foundMember = member;
}
}
}
- return null;
+ // may be found
+ return foundMember;
}
}
diff --git a/compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java b/compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java
index 1ca3593..e6a6419 100644
--- a/compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java
+++ b/compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java
@@ -1860,7 +1860,7 @@
@Override
public Type visitFunctionExpression(DartFunctionExpression node) {
node.visitChildren(this);
- Type result = ((Element) node.getElement()).getType();
+ Type result = node.getElement().getType();
result.getClass(); // quick null check
return result;
}
diff --git a/compiler/javatests/com/google/dart/compiler/resolver/ResolverTest.java b/compiler/javatests/com/google/dart/compiler/resolver/ResolverTest.java
index 75dfde1..90d8486 100644
--- a/compiler/javatests/com/google/dart/compiler/resolver/ResolverTest.java
+++ b/compiler/javatests/com/google/dart/compiler/resolver/ResolverTest.java
@@ -823,8 +823,7 @@
" try {",
" 0.25 - f;",
" } catch(e) {}",
- "}"),
- ResolverErrorCode.CANNOT_USE_TYPE);
+ "}"));
}
public void test_classUsedAsExpression() {
@@ -841,11 +840,11 @@
"class A<B> {",
" var field = B;",
" f() {",
- " 0.25 - B;",
+ " process(x);",
" }",
- "}"),
- ResolverErrorCode.TYPE_VARIABLE_NOT_ALLOWED_IN_IDENTIFIER,
- ResolverErrorCode.TYPE_VARIABLE_NOT_ALLOWED_IN_IDENTIFIER);
+ "}",
+ "process(x) {}",
+ ""));
}
public void test_shadowType_withVariable() throws Exception {
@@ -1057,6 +1056,8 @@
" result = instance.setter3;",
" instance.setter3 = 1;",
"}"),
+ errEx(ResolverErrorCode.FIELD_DOES_NOT_HAVE_A_SETTER, 13, 3, 7),
+ errEx(ResolverErrorCode.FIELD_DOES_NOT_HAVE_A_GETTER, 14, 12, 7),
errEx(ResolverErrorCode.FIELD_DOES_NOT_HAVE_A_SETTER, 17, 5, 7),
errEx(ResolverErrorCode.FIELD_DOES_NOT_HAVE_A_GETTER, 18, 14, 7));
}
diff --git a/compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerCompilerTest.java b/compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerCompilerTest.java
index f1a8dcb..5f72504 100644
--- a/compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerCompilerTest.java
+++ b/compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerCompilerTest.java
@@ -3707,6 +3707,8 @@
"const deprecated = 0;",
"@deprecated",
"ttt() {}",
+ "@deprecated",
+ "get topLevelGet => 42;",
"class A {",
" var @deprecated fff;",
" @deprecated",
@@ -3716,6 +3718,7 @@
"}",
"method() {",
" ttt();",
+ " print(topLevelGet);",
" A a = new A();",
" a.fff = 0;",
" a.mmmm();",
@@ -3724,10 +3727,11 @@
"");
assertErrors(
libraryResult.getErrors(),
- errEx(TypeErrorCode.DEPRECATED_ELEMENT, 13, 3, 3),
- errEx(TypeErrorCode.DEPRECATED_ELEMENT, 15, 5, 3),
- errEx(TypeErrorCode.DEPRECATED_ELEMENT, 16, 5, 4),
- errEx(TypeErrorCode.DEPRECATED_ELEMENT, 17, 5, 1));
+ errEx(TypeErrorCode.DEPRECATED_ELEMENT, 16, 9, 11),
+ errEx(TypeErrorCode.DEPRECATED_ELEMENT, 15, 3, 3),
+ errEx(TypeErrorCode.DEPRECATED_ELEMENT, 18, 5, 3),
+ errEx(TypeErrorCode.DEPRECATED_ELEMENT, 19, 5, 4),
+ errEx(TypeErrorCode.DEPRECATED_ELEMENT, 20, 5, 1));
}
public void test_metadataComment_deprecated_2() throws Exception {
@@ -5351,6 +5355,32 @@
assertErrors(result.getErrors(), errEx(TypeErrorCode.CANNOT_BE_RESOLVED, 5, 5, 1));
}
+ public void test_field_unqualifiedAccess_read() throws Exception {
+ AnalyzeLibraryResult result = analyzeLibrary(
+ "// filler filler filler filler filler filler filler filler filler filler",
+ "class A {",
+ " set f(x) {}",
+ " run() {",
+ " var v = f;",
+ " }",
+ "}",
+ "");
+ assertErrors(result.getErrors(), errEx(ResolverErrorCode.FIELD_DOES_NOT_HAVE_A_GETTER, 5, 13, 1));
+ }
+
+ public void test_field_unqualifiedAccess_write() throws Exception {
+ AnalyzeLibraryResult result = analyzeLibrary(
+ "// filler filler filler filler filler filler filler filler filler filler",
+ "class A {",
+ " get f => 0;",
+ " run() {",
+ " f = 1;",
+ " }",
+ "}",
+ "");
+ assertErrors(result.getErrors(), errEx(ResolverErrorCode.FIELD_DOES_NOT_HAVE_A_SETTER, 5, 5, 1));
+ }
+
public void test_typeVariableScope_staticField() throws Exception {
AnalyzeLibraryResult result = analyzeLibrary(
"// filler filler filler filler filler filler filler filler filler filler",
@@ -5470,6 +5500,41 @@
}
/**
+ * We should resolve sub-type member only if there is only sub-type with such member.
+ * <p>
+ * http://code.google.com/p/dart/issues/detail?id=6776
+ */
+ public void test_trySubTypeMember_moreThanOneMember() throws Exception {
+ compilerConfiguration = new DefaultCompilerConfiguration(new CompilerOptions() {
+ @Override
+ public boolean typeChecksForInferredTypes() {
+ return true;
+ }
+ });
+ AnalyzeLibraryResult result = analyzeLibrary(
+ "// filler filler filler filler filler filler filler filler filler filler",
+ "class Event {}",
+ "class MouseEvent extends Event {",
+ " int clientX;",
+ "}",
+ "class ScreenEvent extends Event {",
+ " int clientX;",
+ "}",
+ "typedef Listener(Event event);",
+ "class Button {",
+ " addListener(Listener listener) {}",
+ "}",
+ "main() {",
+ " Button button = new Button();",
+ " button.addListener((event) {",
+ " event.clientX;",
+ " });",
+ "}",
+ "");
+ assertErrors(result.getErrors(), errEx(TypeErrorCode.NOT_A_MEMBER_OF_INFERRED, 16, 11, 7));
+ }
+
+ /**
* <p>
* http://code.google.com/p/dart/issues/detail?id=6491
*/
@@ -5625,4 +5690,20 @@
assertErrors(result.getErrors(),
errEx(ResolverErrorCode.NOT_GENERATIVE_SUPER_CONSTRUCTOR, 8, 9, 13));
}
+
+ /**
+ * <p>
+ * http://code.google.com/p/dart/issues/detail?id=6718
+ */
+ public void test_initializerInMethod() throws Exception {
+ AnalyzeLibraryResult result = analyzeLibrary(
+ "// filler filler filler filler filler filler filler filler filler filler",
+ "class A {",
+ " var x;",
+ " B() : x = (foo() { }) {}",
+ "}",
+ "");
+ assertErrors(result.getErrors(),
+ errEx(ResolverErrorCode.INITIALIZER_ONLY_IN_GENERATIVE_CONSTRUCTOR, 4, 9, 15));
+ }
}
diff --git a/dart.gyp b/dart.gyp
index 3ec8489..b76a758 100644
--- a/dart.gyp
+++ b/dart.gyp
@@ -13,6 +13,9 @@
'actions': []
},
{
+ # This is the target that is built on the VM build bots. It
+ # must depend on anything that is required by the VM test
+ # suites.
'target_name': 'runtime',
'type': 'none',
'dependencies': [
@@ -21,6 +24,7 @@
'runtime/dart-runtime.gyp:run_vm_tests',
'runtime/dart-runtime.gyp:process_test',
'runtime/dart-runtime.gyp:test_extension',
+ 'packages',
],
},
{
@@ -104,11 +108,15 @@
],
},
{
+ # This is the target that is built on the dart2js build bots.
+ # It must depend on anything that is required by the dart2js
+ # test suites.
'target_name': 'dart2js_bot',
'type': 'none',
'dependencies': [
'third_party/v8/src/d8.gyp:d8',
'create_sdk',
+ 'packages',
],
},
{
@@ -125,5 +133,12 @@
'samples/sample_extension/sample_extension.gyp:sample_extension',
],
},
+ {
+ 'target_name': 'packages',
+ 'type': 'none',
+ 'dependencies': [
+ 'pkg/pkg.gyp:pkg_packages',
+ ],
+ },
],
}
diff --git a/pkg/args/test/args_test.dart b/pkg/args/test/args_test.dart
index 10c68fe..728ff7d 100644
--- a/pkg/args/test/args_test.dart
+++ b/pkg/args/test/args_test.dart
@@ -6,8 +6,7 @@
import '../../../pkg/unittest/lib/unittest.dart';
-// TODO(rnystrom): Use "package:" URL here when test.dart can handle pub.
-import '../lib/args.dart';
+import 'package:args/args.dart';
main() {
group('ArgParser.addFlag()', () {
diff --git a/pkg/fixnum/lib/src/int32.dart b/pkg/fixnum/lib/src/int32.dart
index 80f5f3c..ac92a7e 100644
--- a/pkg/fixnum/lib/src/int32.dart
+++ b/pkg/fixnum/lib/src/int32.dart
@@ -142,7 +142,7 @@
// will be truncated.
int _convert(other) {
if (other == null) {
- throw new NullPointerException();
+ throw new ArgumentError(null);
} else if (other is intx) {
return other.toInt32()._i;
} else if (other is int) {
diff --git a/pkg/fixnum/lib/src/int64.dart b/pkg/fixnum/lib/src/int64.dart
index cefb2c0..3ef0bc0 100644
--- a/pkg/fixnum/lib/src/int64.dart
+++ b/pkg/fixnum/lib/src/int64.dart
@@ -242,7 +242,7 @@
int64 _promote(other) {
if (other == null) {
- throw new NullPointerException();
+ throw new ArgumentError(null);
} else if (other is intx) {
other = other.toInt64();
} else if (other is int) {
diff --git a/pkg/fixnum/test/int_32_test.dart b/pkg/fixnum/test/int_32_test.dart
index 7ea6591..e719fa6 100644
--- a/pkg/fixnum/test/int_32_test.dart
+++ b/pkg/fixnum/test/int_32_test.dart
@@ -132,26 +132,26 @@
try {
new int32.fromInt(17) < null;
- Expect.fail("x < null should throw NullPointerException");
- } on NullPointerException catch (e) {
+ Expect.fail("x < null should throw ArgumentError");
+ } on ArgumentError catch (e) {
}
try {
new int32.fromInt(17) <= null;
- Expect.fail("x <= null should throw NullPointerException");
- } on NullPointerException catch (e) {
+ Expect.fail("x <= null should throw ArgumentError");
+ } on ArgumentError catch (e) {
}
try {
new int32.fromInt(17) > null;
- Expect.fail("x > null should throw NullPointerException");
- } on NullPointerException catch (e) {
+ Expect.fail("x > null should throw ArgumentError");
+ } on ArgumentError catch (e) {
}
try {
new int32.fromInt(17) < null;
- Expect.fail("x >= null should throw NullPointerException");
- } on NullPointerException catch (e) {
+ Expect.fail("x >= null should throw ArgumentError");
+ } on ArgumentError catch (e) {
}
Expect.isFalse(new int32.fromInt(17) == null);
diff --git a/pkg/fixnum/test/int_64_test.dart b/pkg/fixnum/test/int_64_test.dart
index 65d47b3..f41f45c 100644
--- a/pkg/fixnum/test/int_64_test.dart
+++ b/pkg/fixnum/test/int_64_test.dart
@@ -145,26 +145,26 @@
try {
new int64.fromInt(17) < null;
- Expect.fail("x < null should throw NullPointerException");
- } on NullPointerException catch (e) {
+ Expect.fail("x < null should throw ArgumentError");
+ } on ArgumentError catch (e) {
}
try {
new int64.fromInt(17) <= null;
- Expect.fail("x <= null should throw NullPointerException");
- } on NullPointerException catch (e) {
+ Expect.fail("x <= null should throw ArgumentError");
+ } on ArgumentError catch (e) {
}
try {
new int64.fromInt(17) > null;
- Expect.fail("x > null should throw NullPointerException");
- } on NullPointerException catch (e) {
+ Expect.fail("x > null should throw ArgumentError");
+ } on ArgumentError catch (e) {
}
try {
new int64.fromInt(17) < null;
- Expect.fail("x >= null should throw NullPointerException");
- } on NullPointerException catch (e) {
+ Expect.fail("x >= null should throw ArgumentError");
+ } on ArgumentError catch (e) {
}
Expect.isFalse(new int64.fromInt(17) == null);
diff --git a/pkg/http/lib/http.dart b/pkg/http/lib/http.dart
index 4ee2c61..ee074f7 100644
--- a/pkg/http/lib/http.dart
+++ b/pkg/http/lib/http.dart
@@ -37,11 +37,11 @@
/// This package is designed to be composable. This makes it easy for external
/// libraries to work with one another to add behavior to it. Libraries wishing
/// to add behavior should create a subclass of [BaseClient] that wraps another
-/// [BaseClient] and adds the desired behavior:
+/// [Client] and adds the desired behavior:
///
/// class UserAgentClient extends http.BaseClient {
/// final String userAgent;
-/// final HttpClient _inner;
+/// final http.Client _inner;
///
/// UserAgentClient(this.userAgent, this._inner);
///
@@ -50,9 +50,6 @@
/// return _inner.send(request);
/// }
/// }
-///
-/// In turn, libraries using [Client] should take a [BaseClient] so that the
-/// decorated clients can be used transparently.
library http;
@@ -65,7 +62,6 @@
export 'src/base_client.dart';
export 'src/base_request.dart';
export 'src/base_response.dart';
-export 'src/curl_client.dart';
export 'src/client.dart';
export 'src/multipart_file.dart';
export 'src/multipart_request.dart';
diff --git a/pkg/http/lib/src/base_client.dart b/pkg/http/lib/src/base_client.dart
index 0b9c52d..1662f00 100644
--- a/pkg/http/lib/src/base_client.dart
+++ b/pkg/http/lib/src/base_client.dart
@@ -9,6 +9,7 @@
import 'dart:uri';
import 'base_request.dart';
+import 'client.dart';
import 'request.dart';
import 'response.dart';
import 'streamed_response.dart';
@@ -17,7 +18,7 @@
/// The abstract base class for an HTTP client. This is a mixin-style class;
/// subclasses only need to implement [send] and maybe [close], and then they
/// get various convenience methods for free.
-abstract class BaseClient {
+abstract class BaseClient implements Client {
/// Sends an HTTP HEAD request with the given headers to the given URL, which
/// can be a [Uri] or a [String].
///
diff --git a/pkg/http/lib/src/client.dart b/pkg/http/lib/src/client.dart
index bbee58d..d60df93 100644
--- a/pkg/http/lib/src/client.dart
+++ b/pkg/http/lib/src/client.dart
@@ -8,75 +8,89 @@
import 'base_client.dart';
import 'base_request.dart';
+import 'io_client.dart';
import 'streamed_response.dart';
import 'utils.dart';
-/// An HTTP client which takes care of maintaining persistent connections across
-/// multiple requests to the same server. If you only need to send a single
-/// request, it's usually easier to use [head], [get], [post],
+/// The interface for HTTP clients that take care of maintaining persistent
+/// connections across multiple requests to the same server. If you only need to
+/// send a single request, it's usually easier to use [head], [get], [post],
/// [put], or [delete] instead.
///
-/// When creating an HTTP client class with additional functionality, it's
-/// recommended that you subclass [BaseClient] and wrap another instance of
-/// [BaseClient] rather than subclassing [Client] directly. This allows all
-/// subclasses of [BaseClient] to be mutually composable.
-class Client extends BaseClient {
- /// The underlying `dart:io` HTTP client.
- HttpClient _inner;
+/// When creating an HTTP client class with additional functionality, you must
+/// extend [BaseClient] rather than [Client]. In most cases, you can wrap
+/// another instance of [Client] and add functionality on top of that. This
+/// allows all classes implementing [Client] to be mutually composable.
+abstract class Client {
+ /// Creates a new Client using the default implementation. This implementation
+ /// uses an underlying `dart:io` [HttpClient] to make requests.
+ factory Client() => new IOClient();
- /// Creates a new HTTP client.
- Client() : _inner = new HttpClient();
+ /// Sends an HTTP HEAD request with the given headers to the given URL, which
+ /// can be a [Uri] or a [String].
+ ///
+ /// For more fine-grained control over the request, use [send] instead.
+ Future<Response> head(url, {Map<String, String> headers});
+
+ /// Sends an HTTP GET request with the given headers to the given URL, which
+ /// can be a [Uri] or a [String].
+ ///
+ /// For more fine-grained control over the request, use [send] instead.
+ Future<Response> get(url, {Map<String, String> headers});
+
+ /// Sends an HTTP POST request with the given headers and fields to the given
+ /// URL, which can be a [Uri] or a [String]. If any fields are specified, the
+ /// content-type is automatically set to
+ /// `"application/x-www-form-urlencoded"`.
+ ///
+ /// For more fine-grained control over the request, use [send] instead.
+ Future<Response> post(url,
+ {Map<String, String> headers,
+ Map<String, String> fields});
+
+ /// Sends an HTTP PUT request with the given headers and fields to the given
+ /// URL, which can be a [Uri] or a [String]. If any fields are specified, the
+ /// content-type is automatically set to
+ /// `"application/x-www-form-urlencoded"`.
+ ///
+ /// For more fine-grained control over the request, use [send] instead.
+ Future<Response> put(url,
+ {Map<String, String> headers,
+ Map<String, String> fields});
+
+ /// Sends an HTTP DELETE request with the given headers to the given URL,
+ /// which can be a [Uri] or a [String].
+ ///
+ /// For more fine-grained control over the request, use [send] instead.
+ Future<Response> delete(url, {Map<String, String> headers});
+
+ /// Sends an HTTP GET request with the given headers to the given URL, which
+ /// can be a [Uri] or a [String], and returns a Future that completes to the
+ /// body of the response as a String.
+ ///
+ /// The Future will emit an [HttpException] if the response doesn't have a
+ /// success status code.
+ ///
+ /// For more fine-grained control over the request and response, use [send] or
+ /// [get] instead.
+ Future<String> read(url, {Map<String, String> headers});
+
+ /// Sends an HTTP GET request with the given headers to the given URL, which
+ /// can be a [Uri] or a [String], and returns a Future that completes to the
+ /// body of the response as a list of bytes.
+ ///
+ /// The Future will emit an [HttpException] if the response doesn't have a
+ /// success status code.
+ ///
+ /// For more fine-grained control over the request and response, use [send] or
+ /// [get] instead.
+ Future<Uint8List> readBytes(url, {Map<String, String> headers});
/// Sends an HTTP request and asynchronously returns the response.
- Future<StreamedResponse> send(BaseRequest request) {
- var stream = request.finalize();
+ Future<StreamedResponse> send(BaseRequest request);
- var completer = new Completer<StreamedResponse>();
- var connection = _inner.openUrl(request.method, request.url);
- connection.onError = (e) {
- async.then((_) {
- // TODO(nweiz): remove this when issue 4974 is fixed
- if (completer.future.isComplete) throw e;
-
- completer.completeException(e);
- });
- };
-
- connection.onRequest = (underlyingRequest) {
- underlyingRequest.contentLength = request.contentLength;
- underlyingRequest.persistentConnection = request.persistentConnection;
- request.headers.forEach((name, value) {
- underlyingRequest.headers.set(name, value);
- });
-
- if (stream.closed) {
- underlyingRequest.outputStream.close();
- } else {
- stream.pipe(underlyingRequest.outputStream);
- }
- };
-
- connection.onResponse = (response) {
- var headers = <String>{};
- response.headers.forEach((key, value) => headers[key] = value);
-
- completer.complete(new StreamedResponse(
- response.inputStream,
- response.statusCode,
- response.contentLength,
- headers: headers,
- isRedirect: response.isRedirect,
- persistentConnection: response.persistentConnection,
- reasonPhrase: response.reasonPhrase));
- };
-
- return completer.future;
- }
-
- /// Closes the client. This terminates all active connections. If a client
- /// remains unclosed, the Dart process may not terminate.
- void close() {
- if (_inner != null) _inner.shutdown();
- _inner = null;
- }
+ /// Closes the client and cleans up any resources associated with it. It's
+ /// important to close each client when it's done being used; failing to do so
+ /// can cause the Dart process to hang.
+ void close();
}
diff --git a/pkg/http/lib/src/io_client.dart b/pkg/http/lib/src/io_client.dart
new file mode 100644
index 0000000..995ff3b
--- /dev/null
+++ b/pkg/http/lib/src/io_client.dart
@@ -0,0 +1,74 @@
+// Copyright (c) 2012, 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 io_client;
+
+import 'dart:io';
+
+import 'base_client.dart';
+import 'base_request.dart';
+import 'streamed_response.dart';
+import 'utils.dart';
+
+/// A `dart:io`-based HTTP client. This is the default client.
+class IOClient extends BaseClient {
+ /// The underlying `dart:io` HTTP client.
+ HttpClient _inner;
+
+ /// Creates a new HTTP client.
+ IOClient() : _inner = new HttpClient();
+
+ /// Sends an HTTP request and asynchronously returns the response.
+ Future<StreamedResponse> send(BaseRequest request) {
+ var stream = request.finalize();
+
+ var completer = new Completer<StreamedResponse>();
+ var connection = _inner.openUrl(request.method, request.url);
+ connection.onError = (e) {
+ async.then((_) {
+ // TODO(nweiz): remove this when issue 4974 is fixed
+ if (completer.future.isComplete) throw e;
+
+ completer.completeException(e);
+ });
+ };
+
+ connection.onRequest = (underlyingRequest) {
+ underlyingRequest.contentLength = request.contentLength;
+ underlyingRequest.persistentConnection = request.persistentConnection;
+ request.headers.forEach((name, value) {
+ underlyingRequest.headers.set(name, value);
+ });
+
+ if (stream.closed) {
+ underlyingRequest.outputStream.close();
+ } else {
+ stream.pipe(underlyingRequest.outputStream);
+ }
+ };
+
+ connection.onResponse = (response) {
+ var headers = <String>{};
+ response.headers.forEach((key, value) => headers[key] = value);
+
+ completer.complete(new StreamedResponse(
+ response.inputStream,
+ response.statusCode,
+ response.contentLength,
+ headers: headers,
+ isRedirect: response.isRedirect,
+ persistentConnection: response.persistentConnection,
+ reasonPhrase: response.reasonPhrase));
+ };
+
+ return completer.future;
+ }
+
+ /// Closes the client. This terminates all active connections. If a client
+ /// remains unclosed, the Dart process may not terminate.
+ void close() {
+ if (_inner != null) _inner.shutdown();
+ _inner = null;
+ }
+}
diff --git a/pkg/http/lib/src/utils.dart b/pkg/http/lib/src/utils.dart
index 665ee1e..8431603 100644
--- a/pkg/http/lib/src/utils.dart
+++ b/pkg/http/lib/src/utils.dart
@@ -185,26 +185,3 @@
}
return nextElement(null);
}
-
-/// Creates a temporary directory and passes its path to [fn]. Once the [Future]
-/// returned by [fn] completes, the temporary directory and all its contents
-/// will be deleted.
-Future withTempDir(Future fn(String path)) {
- var tempDir;
- var future = new Directory('').createTemp().chain((dir) {
- tempDir = dir;
- return fn(tempDir.path);
- });
- future.onComplete((_) => tempDir.delete(recursive: true));
- return future;
-}
-
-/// Configures [future] so that its result (success or exception) is passed on
-/// to [completer].
-void chainToCompleter(Future future, Completer completer) {
- future.handleException((e) {
- completer.completeException(e);
- return true;
- });
- future.then(completer.complete);
-}
diff --git a/pkg/http/test/request_test.dart b/pkg/http/test/request_test.dart
index 5c2d98c..319abfb 100644
--- a/pkg/http/test/request_test.dart
+++ b/pkg/http/test/request_test.dart
@@ -13,23 +13,16 @@
void main() {
test('.send', () {
- print("This test is known to be flaky, please ignore "
- "(debug prints below added by sgjesse@)");
- print(".send test starting server...");
startServer();
- print(".send test server running");
var request = new http.Request('POST', serverUrl);
request.body = "hello";
var future = request.send().chain((response) {
- print(".send test response received");
expect(response.statusCode, equals(200));
return consumeInputStream(response.stream);
}).transform((bytes) => new String.fromCharCodes(bytes));
future.onComplete((_) {
- print(".send test stopping server...");
stopServer();
- print(".send test server stopped");
});
expect(future, completion(parse(equals({
@@ -41,7 +34,6 @@
},
'body': 'hello'
}))));
- print(".send test started");
});
group('#contentLength', () {
diff --git a/pkg/oauth2/lib/oauth2.dart b/pkg/oauth2/lib/oauth2.dart
new file mode 100644
index 0000000..a7e9307
--- /dev/null
+++ b/pkg/oauth2/lib/oauth2.dart
@@ -0,0 +1,109 @@
+// Copyright (c) 2012, 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.
+
+/// A client library for authenticating with a remote service via OAuth2 on
+/// behalf of a user, and making authorized HTTP requests with the user's OAuth2
+/// credentials.
+///
+/// OAuth2 allows a client (the program using this library) to access and
+/// manipulate a resource that's owned by a resource owner (the end user) and
+/// lives on a remote server. The client directs the resource owner to an
+/// authorization server (usually but not always the same as the server that
+/// hosts the resource), where the resource owner tells the authorization server
+/// to give the client an access token. This token serves as proof that the
+/// client has permission to access resources on behalf of the resource owner.
+///
+/// OAuth2 provides several different methods for the client to obtain
+/// authorization. At the time of writing, this library only supports the
+/// [AuthorizationCodeGrant] method, but further methods may be added in the
+/// future. The following example uses this method to authenticate, and assumes
+/// that the library is being used by a server-side application.
+///
+/// import 'dart:io'
+/// import 'dart:uri'
+/// import 'package:oauth2/oauth2.dart' as oauth2;
+///
+/// // These URLs are endpoints that are provided by the authorization
+/// // server. They're usually included in the server's documentation of its
+/// // OAuth2 API.
+/// final authorizationEndpoint =
+/// new Uri.fromString("http://example.com/oauth2/authorization");
+/// final tokenEndpoint =
+/// new Uri.fromString("http://example.com/oauth2/token");
+///
+/// // The authorization server will issue each client a separate client
+/// // identifier and secret, which allows the server to tell which client
+/// // is accessing it. Some servers may also have an anonymous
+/// // identifier/secret pair that any client may use.
+/// //
+/// // Note that clients whose source code or binary executable is readily
+/// // available may not be able to make sure the client secret is kept a
+/// // secret. This is fine; OAuth2 servers generally won't rely on knowing
+/// // with certainty that a client is who it claims to be.
+/// final identifier = "my client identifier";
+/// final secret = "my client secret";
+///
+/// // This is a URL on your application's server. The authorization server
+/// // will redirect the resource owner here once they've authorized the
+/// // client. The redirection will include the authorization code in the
+/// // query parameters.
+/// final redirectUrl = new Uri.fromString(
+/// "http://my-site.com/oauth2-redirect");
+///
+/// var credentialsFile = new File("~/.myapp/credentials.json");
+/// return credentialsFile.exists().chain((exists) {
+/// // If the OAuth2 credentials have already been saved from a previous
+/// // run, we just want to reload them.
+/// if (exists) {
+/// return credentialsFile.readAsText().transform((json) {
+/// var credentials = new oauth2.Credentials.fromJson(json);
+/// return new oauth2.Client(identifier, secret, credentials);
+/// });
+/// }
+///
+/// // If we don't have OAuth2 credentials yet, we need to get the
+/// // resource owner to authorize us. We're assuming here that we're a
+/// // command-line application.
+/// var grant = new oauth2.AuthorizationCodeGrant(
+/// identifier, secret, authorizationEndpoint, tokenEndpoint);
+///
+/// // Redirect the resource owner to the authorization URL. This will be
+/// // a URL on the authorization server (authorizationEndpoint with some
+/// // additional query parameters). Once the resource owner has
+/// // authorized, they'll be redirected to `redirectUrl` with an
+/// // authorization code.
+/// //
+/// // `redirect` is an imaginary function that redirects the resource
+/// // owner's browser.
+/// return redirect(grant.getAuthorizationUrl(redirectUrl)).chain((_) {
+/// // Another imaginary function that listens for a request to
+/// // `redirectUrl`.
+/// return listen(redirectUrl);
+/// }).transform((request) {
+/// // Once the user is redirected to `redirectUrl`, pass the query
+/// // parameters to the AuthorizationCodeGrant. It will validate them
+/// // and extract the authorization code to create a new Client.
+/// return grant.handleAuthorizationResponse(request.queryParameters);
+/// })
+/// }).chain((client) {
+/// // Once you have a Client, you can use it just like any other HTTP
+/// // client.
+/// return client.read("http://example.com/protected-resources.txt")
+/// .transform((result) {
+/// // Once we're done with the client, save the credentials file. This
+/// // ensures that if the credentials were automatically refreshed
+/// // while using the client, the new credentials are available for the
+/// // next run of the program.
+/// return credentialsFile.open(FileMode.WRITE).chain((file) {
+/// return file.writeString(client.credentials.toJson());
+/// }).chain((file) => file.close()).transform((_) => result);
+/// });
+/// }).then(print);
+library oauth2;
+
+export 'src/authorization_code_grant.dart';
+export 'src/client.dart';
+export 'src/credentials.dart';
+export 'src/authorization_exception.dart';
+export 'src/expiration_exception.dart';
diff --git a/pkg/oauth2/lib/src/authorization_code_grant.dart b/pkg/oauth2/lib/src/authorization_code_grant.dart
new file mode 100644
index 0000000..dcb36d06
--- /dev/null
+++ b/pkg/oauth2/lib/src/authorization_code_grant.dart
@@ -0,0 +1,258 @@
+// Copyright (c) 2012, 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 authorization_code_grant;
+
+import 'dart:uri';
+
+// TODO(nweiz): This should be a "package:" import. See issue 6745.
+import '../../../http/lib/http.dart' as http;
+
+import 'client.dart';
+import 'authorization_exception.dart';
+import 'handle_access_token_response.dart';
+import 'utils.dart';
+
+/// A class for obtaining credentials via an [authorization code grant][]. This
+/// method of authorization involves sending the resource owner to the
+/// authorization server where they will authorize the client. They're then
+/// redirected back to your server, along with an authorization code. This is
+/// used to obtain [Credentials] and create a fully-authorized [Client].
+///
+/// To use this class, you must first call [getAuthorizationUrl] to get the URL
+/// to which to redirect the resource owner. Then once they've been redirected
+/// back to your application, call [handleAuthorizationResponse] or
+/// [handleAuthorizationCode] to process the authorization server's response and
+/// construct a [Client].
+///
+/// [authorization code grant]: http://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-4.1
+class AuthorizationCodeGrant {
+ /// An enum value for [_state] indicating that [getAuthorizationUrl] has not
+ /// yet been called for this grant.
+ static const _INITIAL_STATE = 0;
+
+ // An enum value for [_state] indicating that [getAuthorizationUrl] has been
+ // called but neither [handleAuthorizationResponse] nor
+ // [handleAuthorizationCode] has been called.
+ static const _AWAITING_RESPONSE_STATE = 1;
+
+ // An enum value for [_state] indicating that [getAuthorizationUrl] and either
+ // [handleAuthorizationResponse] or [handleAuthorizationCode] have been
+ // called.
+ static const _FINISHED_STATE = 2;
+
+ /// The client identifier for this client. The authorization server will issue
+ /// each client a separate client identifier and secret, which allows the
+ /// server to tell which client is accessing it. Some servers may also have an
+ /// anonymous identifier/secret pair that any client may use.
+ ///
+ /// This is usually global to the program using this library.
+ final String identifier;
+
+ /// The client secret for this client. The authorization server will issue
+ /// each client a separate client identifier and secret, which allows the
+ /// server to tell which client is accessing it. Some servers may also have an
+ /// anonymous identifier/secret pair that any client may use.
+ ///
+ /// This is usually global to the program using this library.
+ ///
+ /// Note that clients whose source code or binary executable is readily
+ /// available may not be able to make sure the client secret is kept a secret.
+ /// This is fine; OAuth2 servers generally won't rely on knowing with
+ /// certainty that a client is who it claims to be.
+ final String secret;
+
+ /// A URL provided by the authorization server that serves as the base for the
+ /// URL that the resource owner will be redirected to to authorize this
+ /// client. This will usually be listed in the authorization server's
+ /// OAuth2 API documentation.
+ final Uri authorizationEndpoint;
+
+ /// A URL provided by the authorization server that this library uses to
+ /// obtain long-lasting credentials. This will usually be listed in the
+ /// authorization server's OAuth2 API documentation.
+ final Uri tokenEndpoint;
+
+ /// The HTTP client used to make HTTP requests.
+ http.Client _httpClient;
+
+ /// The URL to which the resource owner will be redirected after they
+ /// authorize this client with the authorization server.
+ Uri _redirectEndpoint;
+
+ /// The scopes that the client is requesting access to.
+ List<String> _scopes;
+
+ /// An opaque string that users of this library may specify that will be
+ /// included in the response query parameters.
+ String _stateString;
+
+ /// The current state of the grant object. One of [_INITIAL_STATE],
+ /// [_AWAITING_RESPONSE_STATE], or [_FINISHED_STATE].
+ int _state = _INITIAL_STATE;
+
+ /// Creates a new grant.
+ ///
+ /// [httpClient] is used for all HTTP requests made by this grant, as well as
+ /// those of the [Client] is constructs.
+ AuthorizationCodeGrant(
+ this.identifier,
+ this.secret,
+ this.authorizationEndpoint,
+ this.tokenEndpoint,
+ {http.Client httpClient})
+ : _httpClient = httpClient == null ? new http.Client() : httpClient;
+
+ /// Returns the URL to which the resource owner should be redirected to
+ /// authorize this client. The resource owner will then be redirected to
+ /// [redirect], which should point to a server controlled by the client. This
+ /// redirect will have additional query parameters that should be passed to
+ /// [handleAuthorizationResponse].
+ ///
+ /// The specific permissions being requested from the authorization server may
+ /// be specified via [scopes]. The scope strings are specific to the
+ /// authorization server and may be found in its documentation. Note that you
+ /// may not be granted access to every scope you request; you may check the
+ /// [Credentials.scopes] field of [Client.credentials] to see which scopes you
+ /// were granted.
+ ///
+ /// An opaque [state] string may also be passed that will be present in the
+ /// query parameters provided to the redirect URL.
+ ///
+ /// It is a [StateError] to call this more than once.
+ Uri getAuthorizationUrl(Uri redirect,
+ {List<String> scopes: const <String>[], String state}) {
+ if (_state != _INITIAL_STATE) {
+ throw new StateError('The authorization URL has already been generated.');
+ }
+ _state = _AWAITING_RESPONSE_STATE;
+
+ this._redirectEndpoint = redirect;
+ this._scopes = scopes;
+ this._stateString = state;
+ var parameters = {
+ "response_type": "code",
+ "client_id": this.identifier,
+ "redirect_uri": redirect.toString()
+ };
+
+ if (state != null) parameters['state'] = state;
+ if (!scopes.isEmpty) parameters['scope'] = Strings.join(scopes, ' ');
+
+ return addQueryParameters(this.authorizationEndpoint, parameters);
+ }
+
+ /// Processes the query parameters added to a redirect from the authorization
+ /// server. Note that this "response" is not an HTTP response, but rather the
+ /// data passed to a server controlled by the client as query parameters on
+ /// the redirect URL.
+ ///
+ /// It is a [StateError] to call this more than once, to call it before
+ /// [getAuthorizationUrl] is called, or to call it after
+ /// [handleAuthorizationCode] is called.
+ ///
+ /// Throws [FormatError] if [parameters] is invalid according to the OAuth2
+ /// spec or if the authorization server otherwise provides invalid responses.
+ /// If `state` was passed to [getAuthorizationUrl], this will throw a
+ /// [FormatError] if the `state` parameter doesn't match the original value.
+ ///
+ /// Throws [AuthorizationException] if the authorization fails.
+ Future<Client> handleAuthorizationResponse(Map<String, String> parameters) {
+ return async.chain((_) {
+ if (_state == _INITIAL_STATE) {
+ throw new StateError(
+ 'The authorization URL has not yet been generated.');
+ } else if (_state == _FINISHED_STATE) {
+ throw new StateError(
+ 'The authorization code has already been received.');
+ }
+ _state = _FINISHED_STATE;
+
+ if (_stateString != null) {
+ if (!parameters.containsKey('state')) {
+ throw new FormatException('Invalid OAuth response for '
+ '"$authorizationEndpoint": parameter "state" expected to be '
+ '"$_stateString", was missing.');
+ } else if (parameters['state'] != _stateString) {
+ throw new FormatException('Invalid OAuth response for '
+ '"$authorizationEndpoint": parameter "state" expected to be '
+ '"$_stateString", was "${parameters['state']}".');
+ }
+ }
+
+ if (parameters.containsKey('error')) {
+ var description = parameters['error_description'];
+ var uriString = parameters['error_uri'];
+ var uri = uriString == null ? null : new Uri.fromString(uriString);
+ throw new AuthorizationException(parameters['error'], description, uri);
+ } else if (!parameters.containsKey('code')) {
+ throw new FormatException('Invalid OAuth response for '
+ '"$authorizationEndpoint": did not contain required parameter '
+ '"code".');
+ }
+
+ return _handleAuthorizationCode(parameters['code']);
+ });
+ }
+
+ /// Processes an authorization code directly. Usually
+ /// [handleAuthorizationResponse] is preferable to this method, since it
+ /// validates all of the query parameters. However, some authorization servers
+ /// allow the user to copy and paste an authorization code into a command-line
+ /// application, in which case this method must be used.
+ ///
+ /// It is a [StateError] to call this more than once, to call it before
+ /// [getAuthorizationUrl] is called, or to call it after
+ /// [handleAuthorizationCode] is called.
+ ///
+ /// Throws [FormatError] if the authorization server provides invalid
+ /// responses while retrieving credentials.
+ ///
+ /// Throws [AuthorizationException] if the authorization fails.
+ Future<Client> handleAuthorizationCode(String authorizationCode) {
+ return async.chain((_) {
+ if (_state == _INITIAL_STATE) {
+ throw new StateError(
+ 'The authorization URL has not yet been generated.');
+ } else if (_state == _FINISHED_STATE) {
+ throw new StateError(
+ 'The authorization code has already been received.');
+ }
+ _state = _FINISHED_STATE;
+
+ return _handleAuthorizationCode(authorizationCode);
+ });
+ }
+
+ /// This works just like [handleAuthorizationCode], except it doesn't validate
+ /// the state beforehand.
+ Future<Client> _handleAuthorizationCode(String authorizationCode) {
+ var startTime = new Date.now();
+ return _httpClient.post(this.tokenEndpoint, fields: {
+ "grant_type": "authorization_code",
+ "code": authorizationCode,
+ "redirect_uri": this._redirectEndpoint.toString(),
+ // TODO(nweiz): the spec recommends that HTTP basic auth be used in
+ // preference to form parameters, but Google doesn't support that. Should
+ // it be configurable?
+ "client_id": this.identifier,
+ "client_secret": this.secret
+ }).transform((response) {
+ var credentials = handleAccessTokenResponse(
+ response, tokenEndpoint, startTime, _scopes);
+ return new Client(
+ this.identifier, this.secret, credentials, httpClient: _httpClient);
+ });
+ }
+
+ /// Closes the grant and frees its resources.
+ ///
+ /// This will close the underlying HTTP client, which is shared by the
+ /// [Client] created by this grant, so it's not safe to close the grant and
+ /// continue using the client.
+ void close() {
+ if (_httpClient != null) _httpClient.close();
+ _httpClient = null;
+ }
+}
diff --git a/pkg/oauth2/lib/src/authorization_exception.dart b/pkg/oauth2/lib/src/authorization_exception.dart
new file mode 100644
index 0000000..1062aa9
--- /dev/null
+++ b/pkg/oauth2/lib/src/authorization_exception.dart
@@ -0,0 +1,37 @@
+// Copyright (c) 2012, 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 authorization_exception;
+
+import 'dart:io';
+import 'dart:uri';
+
+/// An exception raised when OAuth2 authorization fails.
+class AuthorizationException implements Exception {
+ /// The name of the error. Possible names are enumerated in [the spec][].
+ ///
+ /// [the spec]: http://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-5.2
+ final String error;
+
+ /// The description of the error, provided by the server. Defaults to null.
+ final String description;
+
+ /// A URI for a page that describes the error in more detail, provided by the
+ /// server. Defaults to null.
+ final Uri uri;
+
+ /// Creates an AuthorizationException.
+ AuthorizationException(this.error, this.description, this.uri);
+
+ /// Provides a string description of the AuthorizationException.
+ String toString() {
+ var header = 'OAuth authorization error ($error)';
+ if (description != null) {
+ header = '$header: $description';
+ } else if (uri != null) {
+ header = '$header: $uri';
+ }
+ return '$header.';
+ }
+}
diff --git a/pkg/oauth2/lib/src/client.dart b/pkg/oauth2/lib/src/client.dart
new file mode 100644
index 0000000..7322afa
--- /dev/null
+++ b/pkg/oauth2/lib/src/client.dart
@@ -0,0 +1,124 @@
+// Copyright (c) 2012, 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 client;
+
+import 'dart:uri';
+
+import '../../../http/lib/http.dart' as http;
+
+import 'credentials.dart';
+import 'expiration_exception.dart';
+import 'utils.dart';
+
+// TODO(nweiz): Add an onCredentialsRefreshed event once we have some event
+// infrastructure.
+/// An OAuth2 client. This acts as a drop-in replacement for an [http.Client],
+/// while sending OAuth2 authorization credentials along with each request.
+///
+/// The client also automatically refreshes its credentials if possible. When it
+/// makes a request, if its credentials are expired, it will first refresh them.
+/// This means that any request may throw an [AuthorizationException] if the
+/// refresh is not authorized for some reason, a [FormatException] if the
+/// authorization server provides ill-formatted responses, or an
+/// [ExpirationException] if the credentials are expired and can't be refreshed.
+///
+/// Currently this client doesn't attempt to identify errors from the resource
+/// server that are caused by authentication failure. However, it may throw
+/// [AuthorizationException]s for such errors in the future.
+///
+/// If you already have a set of [Credentials], you can construct a [Client]
+/// directly. However, in order to first obtain the credentials, you must
+/// authorize. At the time of writing, the only authorization method this
+/// library supports is [AuthorizationCodeGrant].
+class Client extends http.BaseClient {
+ /// The client identifier for this client. The authorization server will issue
+ /// each client a separate client identifier and secret, which allows the
+ /// server to tell which client is accessing it. Some servers may also have an
+ /// anonymous identifier/secret pair that any client may use.
+ ///
+ /// This is usually global to the program using this library.
+ final String identifier;
+
+ /// The client secret for this client. The authorization server will issue
+ /// each client a separate client identifier and secret, which allows the
+ /// server to tell which client is accessing it. Some servers may also have an
+ /// anonymous identifier/secret pair that any client may use.
+ ///
+ /// This is usually global to the program using this library.
+ ///
+ /// Note that clients whose source code or binary executable is readily
+ /// available may not be able to make sure the client secret is kept a secret.
+ /// This is fine; OAuth2 servers generally won't rely on knowing with
+ /// certainty that a client is who it claims to be.
+ final String secret;
+
+ /// The credentials this client uses to prove to the resource server that it's
+ /// authorized. This may change from request to request as the credentials
+ /// expire and the client refreshes them automatically.
+ Credentials get credentials => _credentials;
+ Credentials _credentials;
+
+ /// The underlying HTTP client.
+ http.Client _httpClient;
+
+ /// Creates a new client from a pre-existing set of credentials. When
+ /// authorizing a client for the first time, you should use
+ /// [AuthorizationCodeGrant] instead of constructing a [Client] directly.
+ ///
+ /// [httpClient] is the underlying client that this forwards requests to after
+ /// adding authorization credentials to them.
+ Client(
+ this.identifier,
+ this.secret,
+ this._credentials,
+ {http.Client httpClient})
+ : _httpClient = httpClient == null ? new http.Client() : httpClient;
+
+ /// Sends an HTTP request with OAuth2 authorization credentials attached. This
+ /// will also automatically refresh this client's [Credentials] before sending
+ /// the request if necessary.
+ Future<http.StreamedResponse> send(http.BaseRequest request) {
+ return async.chain((_) {
+ if (!credentials.isExpired) return new Future.immediate(null);
+ if (!credentials.canRefresh) throw new ExpirationException(credentials);
+ return refreshCredentials();
+ }).chain((_) {
+ request.headers['authorization'] = "Bearer ${credentials.accessToken}";
+ return _httpClient.send(request);
+ });
+ // TODO(nweiz): parse 401 errors that are caused by OAuth errors here.
+ }
+
+ /// Explicitly refreshes this client's credentials. Returns this client.
+ ///
+ /// This will throw a [StateError] if the [Credentials] can't be refreshed, an
+ /// [AuthorizationException] if refreshing the credentials fails, or a
+ /// [FormatError] if the authorization server returns invalid responses.
+ ///
+ /// You may request different scopes than the default by passing in
+ /// [newScopes]. These must be a subset of the scopes in the
+ /// [Credentials.scopes] field of [Client.credentials].
+ Future<Client> refreshCredentials([List<String> newScopes]) {
+ return async.chain((_) {
+ if (!credentials.canRefresh) {
+ var prefix = "OAuth credentials";
+ if (credentials.isExpired) prefix = "$prefix have expired and";
+ throw new StateError("$prefix can't be refreshed.");
+ }
+
+ return credentials.refresh(identifier, secret,
+ newScopes: newScopes, httpClient: _httpClient);
+ }).transform((credentials) {
+ _credentials = credentials;
+ return this;
+ });
+ }
+
+ /// Closes this client and its underlying HTTP client.
+ void close() {
+ if (_httpClient != null) _httpClient.close();
+ _httpClient = null;
+ }
+}
diff --git a/pkg/oauth2/lib/src/credentials.dart b/pkg/oauth2/lib/src/credentials.dart
new file mode 100644
index 0000000..89af777
--- /dev/null
+++ b/pkg/oauth2/lib/src/credentials.dart
@@ -0,0 +1,191 @@
+// Copyright (c) 2012, 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 credentials;
+
+import 'dart:json';
+import 'dart:uri';
+
+import '../../../http/lib/http.dart' as http;
+import 'handle_access_token_response.dart';
+import 'utils.dart';
+
+/// Credentials that prove that a client is allowed to access a resource on the
+/// resource owner's behalf. These credentials are long-lasting and can be
+/// safely persisted across multiple runs of the program.
+///
+/// Many authorization servers will attach an expiration date to a set of
+/// credentials, along with a token that can be used to refresh the credentials
+/// once they've expired. The [Client] will automatically refresh its
+/// credentials when necessary. It's also possible to explicitly refresh them
+/// via [Client.refreshCredentials] or [Credentials.refresh].
+///
+/// Note that a given set of credentials can only be refreshed once, so be sure
+/// to save the refreshed credentials for future use.
+class Credentials {
+ /// The token that is sent to the resource server to prove the authorization
+ /// of a client.
+ final String accessToken;
+
+ /// The token that is sent to the authorization server to refresh the
+ /// credentials. This is optional.
+ final String refreshToken;
+
+ /// The URL of the authorization server endpoint that's used to refresh the
+ /// credentials. This is optional.
+ final Uri tokenEndpoint;
+
+ /// The specific permissions being requested from the authorization server.
+ /// The scope strings are specific to the authorization server and may be
+ /// found in its documentation.
+ final List<String> scopes;
+
+ /// The date at which these credentials will expire. This is likely to be a
+ /// few seconds earlier than the server's idea of the expiration date.
+ final Date expiration;
+
+ /// Whether or not these credentials have expired. Note that it's possible the
+ /// credentials will expire shortly after this is called. However, since the
+ /// client's expiration date is kept a few seconds earlier than the server's,
+ /// there should be enough leeway to rely on this.
+ bool get isExpired => expiration != null && new Date.now() > expiration;
+
+ /// Whether it's possible to refresh these credentials.
+ bool get canRefresh => refreshToken != null && tokenEndpoint != null;
+
+ /// Creates a new set of credentials.
+ ///
+ /// This class is usually not constructed directly; rather, it's accessed via
+ /// [Client.credentials] after a [Client] is created by
+ /// [AuthorizationCodeGrant]. Alternately, it may be loaded from a serialized
+ /// form via [Credentials.fromJson].
+ Credentials(
+ this.accessToken,
+ [this.refreshToken,
+ this.tokenEndpoint,
+ this.scopes,
+ this.expiration]);
+
+ /// Loads a set of credentials from a JSON-serialized form. Throws
+ /// [FormatException] if the JSON is incorrectly formatted.
+ factory Credentials.fromJson(String json) {
+ void validate(bool condition, String message) {
+ if (condition) return;
+ throw new FormatException(
+ "Failed to load credentials: $message.\n\n$json");
+ }
+
+ var parsed;
+ try {
+ parsed = JSON.parse(json);
+ } catch (e) {
+ // TODO(nweiz): narrow this catch clause once issue 6775 is fixed.
+ validate(false, 'invalid JSON');
+ }
+
+ validate(parsed is Map, 'was not a JSON map');
+ validate(parsed.containsKey('accessToken'),
+ 'did not contain required field "accessToken"');
+ validate(parsed['accessToken'] is String,
+ 'required field "accessToken" was not a string, was '
+ '${parsed["accessToken"]}');
+
+
+ for (var stringField in ['refreshToken', 'tokenEndpoint']) {
+ var value = parsed[stringField];
+ validate(value == null || value is String,
+ 'field "$stringField" was not a string, was "$value"');
+ }
+
+ var scopes = parsed['scopes'];
+ validate(scopes == null || scopes is List,
+ 'field "scopes" was not a list, was "$scopes"');
+
+ var tokenEndpoint = parsed['tokenEndpoint'];
+ if (tokenEndpoint != null) {
+ tokenEndpoint = new Uri.fromString(tokenEndpoint);
+ }
+ var expiration = parsed['expiration'];
+ if (expiration != null) {
+ validate(expiration is int,
+ 'field "expiration" was not an int, was "$expiration"');
+ expiration = new Date.fromMillisecondsSinceEpoch(expiration);
+ }
+
+ return new Credentials(
+ parsed['accessToken'],
+ parsed['refreshToken'],
+ tokenEndpoint,
+ scopes,
+ expiration);
+ }
+
+ /// Serializes a set of credentials to JSON. Nothing is guaranteed about the
+ /// output except that it's valid JSON and compatible with
+ /// [Credentials.toJson].
+ String toJson() => JSON.stringify({
+ 'accessToken': accessToken,
+ 'refreshToken': refreshToken,
+ 'tokenEndpoint': tokenEndpoint == null ? null : tokenEndpoint.toString(),
+ 'scopes': scopes,
+ 'expiration': expiration == null ? null : expiration.millisecondsSinceEpoch
+ });
+
+ /// Returns a new set of refreshed credentials. See [Client.identifier] and
+ /// [Client.secret] for explanations of those parameters.
+ ///
+ /// You may request different scopes than the default by passing in
+ /// [newScopes]. These must be a subset of [scopes].
+ ///
+ /// This will throw a [StateError] if these credentials can't be refreshed, an
+ /// [AuthorizationException] if refreshing the credentials fails, or a
+ /// [FormatError] if the authorization server returns invalid responses.
+ Future<Credentials> refresh(
+ String identifier,
+ String secret,
+ {List<String> newScopes,
+ http.Client httpClient}) {
+ var scopes = this.scopes;
+ if (newScopes != null) scopes = newScopes;
+ if (scopes == null) scopes = <String>[];
+ if (httpClient == null) httpClient = new http.Client();
+
+ var startTime = new Date.now();
+ return async.chain((_) {
+ if (refreshToken == null) {
+ throw new StateError("Can't refresh credentials without a refresh "
+ "token.");
+ } else if (tokenEndpoint == null) {
+ throw new StateError("Can't refresh credentials without a token "
+ "endpoint.");
+ }
+
+ var fields = {
+ "grant_type": "refresh_token",
+ "refresh_token": refreshToken,
+ // TODO(nweiz): the spec recommends that HTTP basic auth be used in
+ // preference to form parameters, but Google doesn't support that.
+ // Should it be configurable?
+ "client_id": identifier,
+ "client_secret": secret
+ };
+ if (!scopes.isEmpty) fields["scope"] = Strings.join(scopes, ' ');
+
+ return httpClient.post(tokenEndpoint, fields: fields);
+ }).transform((response) {
+ return handleAccessTokenResponse(
+ response, tokenEndpoint, startTime, scopes);
+ }).transform((credentials) {
+ // The authorization server may issue a new refresh token. If it doesn't,
+ // we should re-use the one we already have.
+ if (credentials.refreshToken != null) return credentials;
+ return new Credentials(
+ credentials.accessToken,
+ this.refreshToken,
+ credentials.tokenEndpoint,
+ credentials.scopes,
+ credentials.expiration);
+ });
+ }
+}
diff --git a/pkg/oauth2/lib/src/expiration_exception.dart b/pkg/oauth2/lib/src/expiration_exception.dart
new file mode 100644
index 0000000..8c8ad1f
--- /dev/null
+++ b/pkg/oauth2/lib/src/expiration_exception.dart
@@ -0,0 +1,22 @@
+// Copyright (c) 2012, 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 expiration_exception;
+
+import 'dart:io';
+
+import 'credentials.dart';
+
+/// An exception raised when attempting to use expired OAuth2 credentials.
+class ExpirationException implements Exception {
+ /// The expired credentials.
+ final Credentials credentials;
+
+ /// Creates an ExpirationException.
+ ExpirationException(this.credentials);
+
+ /// Provides a string description of the ExpirationException.
+ String toString() =>
+ "OAuth2 credentials have expired and can't be refreshed.";
+}
diff --git a/pkg/oauth2/lib/src/handle_access_token_response.dart b/pkg/oauth2/lib/src/handle_access_token_response.dart
new file mode 100644
index 0000000..cb08d8f
--- /dev/null
+++ b/pkg/oauth2/lib/src/handle_access_token_response.dart
@@ -0,0 +1,145 @@
+// Copyright (c) 2012, 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 handle_access_token_response;
+
+import 'dart:io';
+import 'dart:json';
+import 'dart:uri';
+
+import '../../../http/lib/http.dart' as http;
+
+import 'credentials.dart';
+import 'authorization_exception.dart';
+
+/// The amount of time, in seconds, to add as a "grace period" for credential
+/// expiration. This allows credential expiration checks to remain valid for a
+/// reasonable amount of time.
+const _EXPIRATION_GRACE = 10;
+
+/// Handles a response from the authorization server that contains an access
+/// token. This response format is common across several different components of
+/// the OAuth2 flow.
+Credentials handleAccessTokenResponse(
+ http.Response response,
+ Uri tokenEndpoint,
+ Date startTime,
+ List<String> scopes) {
+ if (response.statusCode != 200) _handleErrorResponse(response, tokenEndpoint);
+
+ void validate(bool condition, String message) =>
+ _validate(response, tokenEndpoint, condition, message);
+
+ var contentType = response.headers['content-type'];
+ if (contentType != null) {
+ contentType = new ContentType.fromString(contentType);
+ }
+ validate(contentType != null && contentType.value == "application/json",
+ 'content-type was "$contentType", expected "application/json"');
+
+ var parameters;
+ try {
+ parameters = JSON.parse(response.body);
+ } catch (e) {
+ // TODO(nweiz): narrow this catch clause once issue 6775 is fixed.
+ validate(false, 'invalid JSON');
+ }
+
+ for (var requiredParameter in ['access_token', 'token_type']) {
+ validate(parameters.containsKey(requiredParameter),
+ 'did not contain required parameter "$requiredParameter"');
+ validate(parameters[requiredParameter] is String,
+ 'required parameter "$requiredParameter" was not a string, was '
+ '"${parameters[requiredParameter]}"');
+ }
+
+ // TODO(nweiz): support the "mac" token type
+ // (http://tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-01)
+ validate(parameters['token_type'].toLowerCase() == 'bearer',
+ '"$tokenEndpoint": unknown token type "${parameters['token_type']}"');
+
+ var expiresIn = parameters['expires_in'];
+ validate(expiresIn == null || expiresIn is int,
+ 'parameter "expires_in" was not an int, was "$expiresIn"');
+
+ for (var name in ['refresh_token', 'scope']) {
+ var value = parameters[name];
+ validate(value == null || value is String,
+ 'parameter "$name" was not a string, was "$value"');
+ }
+
+ var scope = parameters['scope'];
+ if (scope != null) scopes = scope.split(" ");
+
+ var expiration = expiresIn == null ? null :
+ startTime.add(new Duration(seconds: expiresIn - _EXPIRATION_GRACE));
+
+ return new Credentials(
+ parameters['access_token'],
+ parameters['refresh_token'],
+ tokenEndpoint,
+ scopes,
+ expiration);
+}
+
+/// Throws the appropriate exception for an error response from the
+/// authorization server.
+void _handleErrorResponse(http.Response response, Uri tokenEndpoint) {
+ void validate(bool condition, String message) =>
+ _validate(response, tokenEndpoint, condition, message);
+
+ // OAuth2 mandates a 400 or 401 response code for access token error
+ // responses. If it's not a 400 reponse, the server is either broken or
+ // off-spec.
+ if (response.statusCode != 400 && response.statusCode != 401) {
+ var reason = '';
+ if (response.reasonPhrase != null && !response.reasonPhrase.isEmpty) {
+ ' ${response.reasonPhrase}';
+ }
+ throw new FormatException('OAuth request for "$tokenEndpoint" failed '
+ 'with status ${response.statusCode}$reason.\n\n${response.body}');
+ }
+
+ var contentType = response.headers['content-type'];
+ if (contentType != null) {
+ contentType = new ContentType.fromString(contentType);
+ }
+ validate(contentType != null && contentType.value == "application/json",
+ 'content-type was "$contentType", expected "application/json"');
+
+ var parameters;
+ try {
+ parameters = JSON.parse(response.body);
+ } catch (e) {
+ // TODO(nweiz): narrow this catch clause once issue 6775 is fixed.
+ validate(false, 'invalid JSON');
+ }
+
+ validate(parameters.containsKey('error'),
+ 'did not contain required parameter "error"');
+ validate(parameters["error"] is String,
+ 'required parameter "error" was not a string, was '
+ '"${parameters["error"]}"');
+
+ for (var name in ['error_description', 'error_uri']) {
+ var value = parameters[name];
+ validate(value == null || value is String,
+ 'parameter "$name" was not a string, was "$value"');
+ }
+
+ var description = parameters['error_description'];
+ var uriString = parameters['error_uri'];
+ var uri = uriString == null ? null : new Uri.fromString(uriString);
+ throw new AuthorizationException(parameters['error'], description, uri);
+}
+
+void _validate(
+ http.Response response,
+ Uri tokenEndpoint,
+ bool condition,
+ String message) {
+ if (condition) return;
+ throw new FormatException('Invalid OAuth response for "$tokenEndpoint": '
+ '$message.\n\n${response.body}');
+}
diff --git a/pkg/oauth2/lib/src/utils.dart b/pkg/oauth2/lib/src/utils.dart
new file mode 100644
index 0000000..583a5bc
--- /dev/null
+++ b/pkg/oauth2/lib/src/utils.dart
@@ -0,0 +1,73 @@
+// Copyright (c) 2012, 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 utils;
+
+import 'dart:uri';
+import 'dart:isolate';
+import 'dart:crypto';
+
+/// Adds additional query parameters to [url], overwriting the original
+/// parameters if a name conflict occurs.
+Uri addQueryParameters(Uri url, Map<String, String> parameters) {
+ var queryMap = queryToMap(url.query);
+ mapAddAll(queryMap, parameters);
+ return url.resolve("?${mapToQuery(queryMap)}");
+}
+
+/// Convert a URL query string (or `application/x-www-form-urlencoded` body)
+/// into a [Map] from parameter names to values.
+Map<String, String> queryToMap(String queryList) {
+ var map = <String>{};
+ for (var pair in queryList.split("&")) {
+ var split = split1(pair, "=");
+ if (split.isEmpty) continue;
+ var key = urlDecode(split[0]);
+ var value = split.length > 1 ? urlDecode(split[1]) : "";
+ map[key] = value;
+ }
+ return map;
+}
+
+/// Convert a [Map] from parameter names to values to a URL query string.
+String mapToQuery(Map<String, String> map) {
+ var pairs = <List<String>>[];
+ map.forEach((key, value) {
+ key = encodeUriComponent(key);
+ value = (value == null || value.isEmpty) ? null : encodeUriComponent(value);
+ pairs.add([key, value]);
+ });
+ return Strings.join(pairs.map((pair) {
+ if (pair[1] == null) return pair[0];
+ return "${pair[0]}=${pair[1]}";
+ }), "&");
+}
+
+/// Add all key/value pairs from [source] to [destination], overwriting any
+/// pre-existing values.
+void mapAddAll(Map destination, Map source) =>
+ source.forEach((key, value) => destination[key] = value);
+
+/// Decode a URL-encoded string. Unlike [decodeUriComponent], this includes
+/// replacing `+` with ` `.
+String urlDecode(String encoded) =>
+ decodeUriComponent(encoded.replaceAll("+", " "));
+
+/// Like [String.split], but only splits on the first occurrence of the pattern.
+/// This will always return a list of two elements or fewer.
+List<String> split1(String toSplit, String pattern) {
+ if (toSplit.isEmpty) return <String>[];
+
+ var index = toSplit.indexOf(pattern);
+ if (index == -1) return [toSplit];
+ return [toSplit.substring(0, index),
+ toSplit.substring(index + pattern.length)];
+}
+
+/// Returns a [Future] that asynchronously completes to `null`.
+Future get async {
+ var completer = new Completer();
+ new Timer(0, (_) => completer.complete(null));
+ return completer.future;
+}
diff --git a/pkg/oauth2/test/authorization_code_grant_test.dart b/pkg/oauth2/test/authorization_code_grant_test.dart
new file mode 100644
index 0000000..c4ccc21
--- /dev/null
+++ b/pkg/oauth2/test/authorization_code_grant_test.dart
@@ -0,0 +1,196 @@
+// Copyright (c) 2012, 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 authorization_code_grant_test;
+
+import 'dart:io';
+import 'dart:json';
+import 'dart:uri';
+
+import '../../unittest/lib/unittest.dart';
+import '../../http/lib/http.dart' as http;
+import '../../http/lib/testing.dart';
+import '../lib/oauth2.dart' as oauth2;
+import 'utils.dart';
+
+final redirectUrl = new Uri.fromString('http://example.com/redirect');
+
+ExpectClient client;
+
+oauth2.AuthorizationCodeGrant grant;
+
+void createGrant() {
+ client = new ExpectClient();
+ grant = new oauth2.AuthorizationCodeGrant(
+ 'identifier',
+ 'secret',
+ new Uri.fromString('https://example.com/authorization'),
+ new Uri.fromString('https://example.com/token'),
+ httpClient: client);
+}
+
+void main() {
+ group('.getAuthorizationUrl', () {
+ setUp(createGrant);
+
+ test('builds the correct URL', () {
+ expect(grant.getAuthorizationUrl(redirectUrl).toString(),
+ equals('https://example.com/authorization'
+ '?response_type=code'
+ '&client_id=identifier'
+ '&redirect_uri=http%3A%2F%2Fexample.com%2Fredirect'));
+ });
+
+ test('builds the correct URL with scopes', () {
+ var authorizationUrl = grant.getAuthorizationUrl(
+ redirectUrl, scopes: ['scope', 'other/scope']);
+ expect(authorizationUrl.toString(),
+ equals('https://example.com/authorization'
+ '?response_type=code'
+ '&client_id=identifier'
+ '&redirect_uri=http%3A%2F%2Fexample.com%2Fredirect'
+ '&scope=scope%20other%2Fscope'));
+ });
+
+ test('builds the correct URL with state', () {
+ var authorizationUrl = grant.getAuthorizationUrl(
+ redirectUrl, state: 'state');
+ expect(authorizationUrl.toString(),
+ equals('https://example.com/authorization'
+ '?response_type=code'
+ '&client_id=identifier'
+ '&redirect_uri=http%3A%2F%2Fexample.com%2Fredirect'
+ '&state=state'));
+ });
+
+ test('merges with existing query parameters', () {
+ grant = new oauth2.AuthorizationCodeGrant(
+ 'identifier',
+ 'secret',
+ new Uri.fromString('https://example.com/authorization?query=value'),
+ new Uri.fromString('https://example.com/token'),
+ httpClient: client);
+
+ var authorizationUrl = grant.getAuthorizationUrl(redirectUrl);
+ expect(authorizationUrl.toString(),
+ equals('https://example.com/authorization'
+ '?query=value'
+ '&response_type=code'
+ '&client_id=identifier'
+ '&redirect_uri=http%3A%2F%2Fexample.com%2Fredirect'));
+ });
+
+ test("can't be called twice", () {
+ grant.getAuthorizationUrl(redirectUrl);
+ expect(() => grant.getAuthorizationUrl(redirectUrl), throwsStateError);
+ });
+ });
+
+ group('.handleAuthorizationResponse', () {
+ setUp(createGrant);
+
+ test("can't be called before .getAuthorizationUrl", () {
+ expect(grant.handleAuthorizationResponse({}), throwsStateError);
+ });
+
+ test("can't be called twice", () {
+ grant.getAuthorizationUrl(redirectUrl);
+ grant.handleAuthorizationResponse({'code': 'auth code'});
+ expect(grant.handleAuthorizationResponse({'code': 'auth code'}),
+ throwsStateError);
+ });
+
+ test('must have a state parameter if the authorization URL did', () {
+ grant.getAuthorizationUrl(redirectUrl, state: 'state');
+ expect(grant.handleAuthorizationResponse({'code': 'auth code'}),
+ throwsFormatException);
+ });
+
+ test('must have the same state parameter the authorization URL did', () {
+ grant.getAuthorizationUrl(redirectUrl, state: 'state');
+ expect(grant.handleAuthorizationResponse({
+ 'code': 'auth code',
+ 'state': 'other state'
+ }), throwsFormatException);
+ });
+
+ test('must have a code parameter', () {
+ grant.getAuthorizationUrl(redirectUrl);
+ expect(grant.handleAuthorizationResponse({}), throwsFormatException);
+ });
+
+ test('with an error parameter throws an AuthorizationException', () {
+ grant.getAuthorizationUrl(redirectUrl);
+ expect(grant.handleAuthorizationResponse({'error': 'invalid_request'}),
+ throwsAuthorizationException);
+ });
+
+ test('sends an authorization code request', () {
+ grant.getAuthorizationUrl(redirectUrl);
+ client.expectRequest((request) {
+ expect(request.method, equals('POST'));
+ expect(request.url.toString(), equals(grant.tokenEndpoint.toString()));
+ expect(request.bodyFields, equals({
+ 'grant_type': 'authorization_code',
+ 'code': 'auth code',
+ 'redirect_uri': redirectUrl.toString(),
+ 'client_id': 'identifier',
+ 'client_secret': 'secret'
+ }));
+
+ return new Future.immediate(new http.Response(JSON.stringify({
+ 'access_token': 'access token',
+ 'token_type': 'bearer',
+ }), 200, headers: {'content-type': 'application/json'}));
+ });
+
+ expect(grant.handleAuthorizationResponse({'code': 'auth code'}),
+ completion(predicate((client) {
+ expect(client.credentials.accessToken, equals('access token'));
+ return true;
+ })));
+ });
+ });
+
+ group('.handleAuthorizationCode', () {
+ setUp(createGrant);
+
+ test("can't be called before .getAuthorizationUrl", () {
+ expect(grant.handleAuthorizationCode('auth code'), throwsStateError);
+ });
+
+ test("can't be called twice", () {
+ grant.getAuthorizationUrl(redirectUrl);
+ grant.handleAuthorizationCode('auth code');
+ expect(grant.handleAuthorizationCode('auth code'),
+ throwsStateError);
+ });
+
+ test('sends an authorization code request', () {
+ grant.getAuthorizationUrl(redirectUrl);
+ client.expectRequest((request) {
+ expect(request.method, equals('POST'));
+ expect(request.url.toString(), equals(grant.tokenEndpoint.toString()));
+ expect(request.bodyFields, equals({
+ 'grant_type': 'authorization_code',
+ 'code': 'auth code',
+ 'redirect_uri': redirectUrl.toString(),
+ 'client_id': 'identifier',
+ 'client_secret': 'secret'
+ }));
+
+ return new Future.immediate(new http.Response(JSON.stringify({
+ 'access_token': 'access token',
+ 'token_type': 'bearer',
+ }), 200, headers: {'content-type': 'application/json'}));
+ });
+
+ expect(grant.handleAuthorizationCode('auth code'),
+ completion(predicate((client) {
+ expect(client.credentials.accessToken, equals('access token'));
+ return true;
+ })));
+ });
+ });
+}
diff --git a/pkg/oauth2/test/client_test.dart b/pkg/oauth2/test/client_test.dart
new file mode 100644
index 0000000..94b7920
--- /dev/null
+++ b/pkg/oauth2/test/client_test.dart
@@ -0,0 +1,120 @@
+// Copyright (c) 2012, 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 client_test;
+
+import 'dart:io';
+import 'dart:json';
+import 'dart:uri';
+
+import '../../unittest/lib/unittest.dart';
+import '../../http/lib/http.dart' as http;
+import '../lib/oauth2.dart' as oauth2;
+import 'utils.dart';
+
+final Uri requestUri = new Uri.fromString("http://example.com/resource");
+
+final Uri tokenEndpoint = new Uri.fromString('http://example.com/token');
+
+ExpectClient httpClient;
+
+void createHttpClient() {
+ httpClient = new ExpectClient();
+}
+
+void main() {
+ group('with expired credentials', () {
+ setUp(createHttpClient);
+
+ test("that can't be refreshed throws an ExpirationException on send", () {
+ var expiration = new Date.now().subtract(new Duration(hours: 1));
+ var credentials = new oauth2.Credentials(
+ 'access token', null, null, [], expiration);
+ var client = new oauth2.Client('identifier', 'secret', credentials,
+ httpClient: httpClient);
+
+ expect(client.get(requestUri), throwsExpirationException);
+ });
+
+ test("that can be refreshed refreshes the credentials and sends the "
+ "request", () {
+ var expiration = new Date.now().subtract(new Duration(hours: 1));
+ var credentials = new oauth2.Credentials(
+ 'access token', 'refresh token', tokenEndpoint, [], expiration);
+ var client = new oauth2.Client('identifier', 'secret', credentials,
+ httpClient: httpClient);
+
+ httpClient.expectRequest((request) {
+ expect(request.method, equals('POST'));
+ expect(request.url.toString(), equals(tokenEndpoint.toString()));
+ return new Future.immediate(new http.Response(JSON.stringify({
+ 'access_token': 'new access token',
+ 'token_type': 'bearer'
+ }), 200, headers: {'content-type': 'application/json'}));
+ });
+
+ httpClient.expectRequest((request) {
+ expect(request.method, equals('GET'));
+ expect(request.url.toString(), equals(requestUri.toString()));
+ expect(request.headers['authorization'],
+ equals('Bearer new access token'));
+
+ return new Future.immediate(new http.Response('good job', 200));
+ });
+
+ expect(client.read(requestUri).transform((_) {
+ expect(client.credentials.accessToken, equals('new access token'));
+ }), completes);
+ });
+ });
+
+ group('with valid credentials', () {
+ setUp(createHttpClient);
+
+ test("sends a request with bearer authorization", () {
+ var credentials = new oauth2.Credentials('access token');
+ var client = new oauth2.Client('identifier', 'secret', credentials,
+ httpClient: httpClient);
+
+ httpClient.expectRequest((request) {
+ expect(request.method, equals('GET'));
+ expect(request.url.toString(), equals(requestUri.toString()));
+ expect(request.headers['authorization'],
+ equals('Bearer access token'));
+
+ return new Future.immediate(new http.Response('good job', 200));
+ });
+
+ expect(client.read(requestUri), completion(equals('good job')));
+ });
+
+ test("can manually refresh the credentials", () {
+ var credentials = new oauth2.Credentials(
+ 'access token', 'refresh token', tokenEndpoint);
+ var client = new oauth2.Client('identifier', 'secret', credentials,
+ httpClient: httpClient);
+
+ httpClient.expectRequest((request) {
+ expect(request.method, equals('POST'));
+ expect(request.url.toString(), equals(tokenEndpoint.toString()));
+ return new Future.immediate(new http.Response(JSON.stringify({
+ 'access_token': 'new access token',
+ 'token_type': 'bearer'
+ }), 200, headers: {'content-type': 'application/json'}));
+ });
+
+ expect(client.refreshCredentials().transform((_) {
+ expect(client.credentials.accessToken, equals('new access token'));
+ }), completes);
+ });
+
+ test("without a refresh token can't manually refresh the credentials", () {
+ var credentials = new oauth2.Credentials('access token');
+ var client = new oauth2.Client('identifier', 'secret', credentials,
+ httpClient: httpClient);
+
+ expect(client.refreshCredentials(), throwsStateError);
+ });
+ });
+}
diff --git a/pkg/oauth2/test/credentials_test.dart b/pkg/oauth2/test/credentials_test.dart
new file mode 100644
index 0000000..5faf2d0
--- /dev/null
+++ b/pkg/oauth2/test/credentials_test.dart
@@ -0,0 +1,174 @@
+// Copyright (c) 2012, 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 credentials_test;
+
+import 'dart:io';
+import 'dart:json';
+import 'dart:uri';
+
+import '../../unittest/lib/unittest.dart';
+import '../../http/lib/http.dart' as http;
+import '../lib/oauth2.dart' as oauth2;
+import 'utils.dart';
+
+final Uri tokenEndpoint = new Uri.fromString('http://example.com/token');
+
+ExpectClient httpClient;
+
+void main() {
+ setUp(() => httpClient = new ExpectClient());
+
+ test('is not expired if no expiration exists', () {
+ var credentials = new oauth2.Credentials('access token');
+ expect(credentials.isExpired, isFalse);
+ });
+
+ test('is not expired if the expiration is in the future', () {
+ var expiration = new Date.now().add(new Duration(hours: 1));
+ var credentials = new oauth2.Credentials(
+ 'access token', null, null, null, expiration);
+ expect(credentials.isExpired, isFalse);
+ });
+
+ test('is expired if the expiration is in the past', () {
+ var expiration = new Date.now().subtract(new Duration(hours: 1));
+ var credentials = new oauth2.Credentials(
+ 'access token', null, null, null, expiration);
+ expect(credentials.isExpired, isTrue);
+ });
+
+ test("can't refresh without a refresh token", () {
+ var credentials = new oauth2.Credentials(
+ 'access token', null, tokenEndpoint);
+ expect(credentials.canRefresh, false);
+ expect(credentials.refresh('identifier', 'secret', httpClient: httpClient),
+ throwsStateError);
+ });
+
+ test("can't refresh without a token endpoint", () {
+ var credentials = new oauth2.Credentials('access token', 'refresh token');
+ expect(credentials.canRefresh, false);
+ expect(credentials.refresh('identifier', 'secret', httpClient: httpClient),
+ throwsStateError);
+ });
+
+ test("can refresh with a refresh token and a token endpoint", () {
+ var credentials = new oauth2.Credentials(
+ 'access token', 'refresh token', tokenEndpoint, ['scope1', 'scope2']);
+ expect(credentials.canRefresh, true);
+
+ httpClient.expectRequest((request) {
+ expect(request.method, equals('POST'));
+ expect(request.url.toString(), equals(tokenEndpoint.toString()));
+ expect(request.bodyFields, equals({
+ "grant_type": "refresh_token",
+ "refresh_token": "refresh token",
+ "scope": "scope1 scope2",
+ "client_id": "identifier",
+ "client_secret": "secret"
+ }));
+
+ return new Future.immediate(new http.Response(JSON.stringify({
+ 'access_token': 'new access token',
+ 'token_type': 'bearer',
+ 'refresh_token': 'new refresh token'
+ }), 200, headers: {'content-type': 'application/json'}));
+ });
+
+
+ expect(credentials.refresh('identifier', 'secret', httpClient: httpClient)
+ .transform((credentials) {
+ expect(credentials.accessToken, equals('new access token'));
+ expect(credentials.refreshToken, equals('new refresh token'));
+ }), completes);
+ });
+
+ test("uses the old refresh token if a new one isn't provided", () {
+ var credentials = new oauth2.Credentials(
+ 'access token', 'refresh token', tokenEndpoint);
+ expect(credentials.canRefresh, true);
+
+ httpClient.expectRequest((request) {
+ expect(request.method, equals('POST'));
+ expect(request.url.toString(), equals(tokenEndpoint.toString()));
+ expect(request.bodyFields, equals({
+ "grant_type": "refresh_token",
+ "refresh_token": "refresh token",
+ "client_id": "identifier",
+ "client_secret": "secret"
+ }));
+
+ return new Future.immediate(new http.Response(JSON.stringify({
+ 'access_token': 'new access token',
+ 'token_type': 'bearer'
+ }), 200, headers: {'content-type': 'application/json'}));
+ });
+
+
+ expect(credentials.refresh('identifier', 'secret', httpClient: httpClient)
+ .transform((credentials) {
+ expect(credentials.accessToken, equals('new access token'));
+ expect(credentials.refreshToken, equals('refresh token'));
+ }), completes);
+ });
+
+ group("fromJson", () {
+ oauth2.Credentials fromMap(Map map) =>
+ new oauth2.Credentials.fromJson(JSON.stringify(map));
+
+ test("should load the same credentials from toJson", () {
+ var expiration = new Date.now().subtract(new Duration(hours: 1));
+ var credentials = new oauth2.Credentials(
+ 'access token', 'refresh token', tokenEndpoint, ['scope1', 'scope2'],
+ expiration);
+ var reloaded = new oauth2.Credentials.fromJson(credentials.toJson());
+
+ expect(reloaded.accessToken, equals(credentials.accessToken));
+ expect(reloaded.refreshToken, equals(credentials.refreshToken));
+ expect(reloaded.tokenEndpoint.toString(),
+ equals(credentials.tokenEndpoint.toString()));
+ expect(reloaded.scopes, equals(credentials.scopes));
+ expect(reloaded.expiration, equals(credentials.expiration));
+ });
+
+ test("should throw a FormatException for invalid JSON", () {
+ expect(() => new oauth2.Credentials.fromJson("foo bar"),
+ throwsFormatException);
+ });
+
+ test("should throw a FormatException for JSON that's not a map", () {
+ expect(() => new oauth2.Credentials.fromJson("null"),
+ throwsFormatException);
+ });
+
+ test("should throw a FormatException if there is no accessToken", () {
+ expect(() => fromMap({}), throwsFormatException);
+ });
+
+ test("should throw a FormatException if accessToken is not a string", () {
+ expect(() => fromMap({"accessToken": 12}), throwsFormatException);
+ });
+
+ test("should throw a FormatException if refreshToken is not a string", () {
+ expect(() => fromMap({"accessToken": "foo", "refreshToken": 12}),
+ throwsFormatException);
+ });
+
+ test("should throw a FormatException if tokenEndpoint is not a string", () {
+ expect(() => fromMap({"accessToken": "foo", "tokenEndpoint": 12}),
+ throwsFormatException);
+ });
+
+ test("should throw a FormatException if scopes is not a list", () {
+ expect(() => fromMap({"accessToken": "foo", "scopes": 12}),
+ throwsFormatException);
+ });
+
+ test("should throw a FormatException if expiration is not an int", () {
+ expect(() => fromMap({"accessToken": "foo", "expiration": "12"}),
+ throwsFormatException);
+ });
+ });
+}
diff --git a/pkg/oauth2/test/handle_access_token_response_test.dart b/pkg/oauth2/test/handle_access_token_response_test.dart
new file mode 100644
index 0000000..4757dc1
--- /dev/null
+++ b/pkg/oauth2/test/handle_access_token_response_test.dart
@@ -0,0 +1,191 @@
+// Copyright (c) 2012, 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 handle_access_token_response_test;
+
+import 'dart:io';
+import 'dart:json';
+import 'dart:uri';
+
+import '../../unittest/lib/unittest.dart';
+import '../../http/lib/http.dart' as http;
+import '../lib/oauth2.dart' as oauth2;
+import '../lib/src/handle_access_token_response.dart';
+import 'utils.dart';
+
+final Uri tokenEndpoint = new Uri.fromString("https://example.com/token");
+
+final Date startTime = new Date.now();
+
+oauth2.Credentials handle(http.Response response) =>
+ handleAccessTokenResponse(response, tokenEndpoint, startTime, ["scope"]);
+
+void main() {
+ group('an error response', () {
+ oauth2.Credentials handleError(
+ {String body: '{"error": "invalid_request"}',
+ int statusCode: 400,
+ Map<String, String> headers:
+ const {"content-type": "application/json"}}) =>
+ handle(new http.Response(body, statusCode, headers: headers));
+
+ test('causes an AuthorizationException', () {
+ expect(() => handleError(), throwsAuthorizationException);
+ });
+
+ test('with a 401 code causes an AuthorizationException', () {
+ expect(() => handleError(statusCode: 401), throwsAuthorizationException);
+ });
+
+ test('with an unexpected code causes a FormatException', () {
+ expect(() => handleError(statusCode: 500),
+ throwsFormatException);
+ });
+
+ test('with no content-type causes a FormatException', () {
+ expect(() => handleError(headers: {}), throwsFormatException);
+ });
+
+ test('with a non-JSON content-type causes a FormatException', () {
+ expect(() => handleError(headers: {
+ 'content-type': 'text/plain'
+ }), throwsFormatException);
+ });
+
+ test('with a JSON content-type and charset causes an '
+ 'AuthorizationException', () {
+ expect(() => handleError(headers: {
+ 'content-type': 'application/json; charset=UTF-8'
+ }), throwsAuthorizationException);
+ });
+
+ test('with invalid JSON causes a FormatException', () {
+ expect(() => handleError(body: 'not json'),
+ throwsFormatException);
+ });
+
+ test('with a non-string error causes a FormatException', () {
+ expect(() => handleError(body: '{"error": 12}'),
+ throwsFormatException);
+ });
+
+ test('with a non-string error_description causes a FormatException', () {
+ expect(() => handleError(body: JSON.stringify({
+ "error": "invalid_request",
+ "error_description": 12
+ })), throwsFormatException);
+ });
+
+ test('with a non-string error_uri causes a FormatException', () {
+ expect(() => handleError(body: JSON.stringify({
+ "error": "invalid_request",
+ "error_uri": 12
+ })), throwsFormatException);
+ });
+
+ test('with a string error_description causes a AuthorizationException', () {
+ expect(() => handleError(body: JSON.stringify({
+ "error": "invalid_request",
+ "error_description": "description"
+ })), throwsAuthorizationException);
+ });
+
+ test('with a string error_uri causes a AuthorizationException', () {
+ expect(() => handleError(body: JSON.stringify({
+ "error": "invalid_request",
+ "error_uri": "http://example.com/error"
+ })), throwsAuthorizationException);
+ });
+ });
+
+ group('a success response', () {
+ oauth2.Credentials handleSuccess(
+ {String contentType: "application/json",
+ accessToken: 'access token',
+ tokenType: 'bearer',
+ expiresIn,
+ refreshToken,
+ scope}) {
+ return handle(new http.Response(JSON.stringify({
+ 'access_token': accessToken,
+ 'token_type': tokenType,
+ 'expires_in': expiresIn,
+ 'refresh_token': refreshToken,
+ 'scope': scope
+ }), 200, headers: {'content-type': contentType}));
+ }
+
+ test('returns the correct credentials', () {
+ var credentials = handleSuccess();
+ expect(credentials.accessToken, equals('access token'));
+ expect(credentials.tokenEndpoint.toString(),
+ equals(tokenEndpoint.toString()));
+ });
+
+ test('with no content-type causes a FormatException', () {
+ expect(() => handleSuccess(contentType: null), throwsFormatException);
+ });
+
+ test('with a non-JSON content-type causes a FormatException', () {
+ expect(() => handleSuccess(contentType: 'text/plain'),
+ throwsFormatException);
+ });
+
+ test('with a JSON content-type and charset returns the correct '
+ 'credentials', () {
+ var credentials = handleSuccess(
+ contentType: 'application/json; charset=UTF-8');
+ expect(credentials.accessToken, equals('access token'));
+ });
+
+ test('with a null access token throws a FormatException', () {
+ expect(() => handleSuccess(accessToken: null), throwsFormatException);
+ });
+
+ test('with a non-string access token throws a FormatException', () {
+ expect(() => handleSuccess(accessToken: 12), throwsFormatException);
+ });
+
+ test('with a null token type throws a FormatException', () {
+ expect(() => handleSuccess(tokenType: null), throwsFormatException);
+ });
+
+ test('with a non-string token type throws a FormatException', () {
+ expect(() => handleSuccess(tokenType: 12), throwsFormatException);
+ });
+
+ test('with a non-"bearer" token type throws a FormatException', () {
+ expect(() => handleSuccess(tokenType: "mac"), throwsFormatException);
+ });
+
+ test('with a non-int expires-in throws a FormatException', () {
+ expect(() => handleSuccess(expiresIn: "whenever"), throwsFormatException);
+ });
+
+ test('with expires-in sets the expiration to ten seconds earlier than the '
+ 'server says', () {
+ var credentials = handleSuccess(expiresIn: 100);
+ expect(credentials.expiration.millisecondsSinceEpoch,
+ startTime.millisecondsSinceEpoch + 90 * 1000);
+ });
+
+ test('with a non-string refresh token throws a FormatException', () {
+ expect(() => handleSuccess(refreshToken: 12), throwsFormatException);
+ });
+
+ test('with a refresh token sets the refresh token', () {
+ var credentials = handleSuccess(refreshToken: "refresh me");
+ expect(credentials.refreshToken, equals("refresh me"));
+ });
+
+ test('with a non-string scope throws a FormatException', () {
+ expect(() => handleSuccess(scope: 12), throwsFormatException);
+ });
+
+ test('with a scope sets the scopes', () {
+ var credentials = handleSuccess(scope: "scope1 scope2");
+ expect(credentials.scopes, equals(["scope1", "scope2"]));
+ });
+ });
+}
diff --git a/pkg/oauth2/test/utils.dart b/pkg/oauth2/test/utils.dart
new file mode 100644
index 0000000..631ea95
--- /dev/null
+++ b/pkg/oauth2/test/utils.dart
@@ -0,0 +1,82 @@
+// Copyright (c) 2012, 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 utils;
+
+import '../../unittest/lib/unittest.dart';
+import '../../http/lib/http.dart' as http;
+import '../../http/lib/testing.dart';
+import '../lib/oauth2.dart' as oauth2;
+
+class ExpectClient extends MockClient {
+ final Queue<MockClientHandler> _handlers;
+
+ ExpectClient._(MockClientHandler fn)
+ : _handlers = new Queue<MockClientHandler>(),
+ super(fn);
+
+ factory ExpectClient() {
+ var client;
+ client = new ExpectClient._((request) =>
+ client._handleRequest(request));
+ return client;
+ }
+
+ void expectRequest(MockClientHandler fn) {
+ var completer = new Completer();
+ expect(completer.future, completes);
+
+ _handlers.add((request) {
+ completer.complete(null);
+ return fn(request);
+ });
+ }
+
+ Future<http.Response> _handleRequest(http.Request request) {
+ if (_handlers.isEmpty) {
+ return new Future.immediate(new http.Response('not found', 404));
+ } else {
+ return _handlers.removeFirst()(request);
+ }
+ }
+}
+
+// TODO(nweiz): remove this once it's built in to unittest
+/// A matcher for StateErrors.
+const isStateError = const _StateError();
+
+/// A matcher for functions that throw StateError.
+const Matcher throwsStateError =
+ const Throws(isStateError);
+
+class _StateError extends TypeMatcher {
+ const _StateError() : super("StateError");
+ bool matches(item, MatchState matchState) => item is StateError;
+}
+
+/// A matcher for AuthorizationExceptions.
+const isAuthorizationException = const _AuthorizationException();
+
+/// A matcher for functions that throw AuthorizationException.
+const Matcher throwsAuthorizationException =
+ const Throws(isAuthorizationException);
+
+class _AuthorizationException extends TypeMatcher {
+ const _AuthorizationException() : super("AuthorizationException");
+ bool matches(item, MatchState matchState) =>
+ item is oauth2.AuthorizationException;
+}
+
+/// A matcher for ExpirationExceptions.
+const isExpirationException = const _ExpirationException();
+
+/// A matcher for functions that throw ExpirationException.
+const Matcher throwsExpirationException =
+ const Throws(isExpirationException);
+
+class _ExpirationException extends TypeMatcher {
+ const _ExpirationException() : super("ExpirationException");
+ bool matches(item, MatchState matchState) =>
+ item is oauth2.ExpirationException;
+}
diff --git a/pkg/pkg.gyp b/pkg/pkg.gyp
new file mode 100644
index 0000000..e5c2c35
--- /dev/null
+++ b/pkg/pkg.gyp
@@ -0,0 +1,45 @@
+# Copyright (c) 2012, 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.
+
+{
+ 'targets': [
+ {
+ 'target_name': 'pkg_packages',
+ 'type': 'none',
+ 'actions': [
+ {
+ 'action_name': 'make_pkg_packages',
+ 'inputs': [
+ '../tools/make_links.py',
+ 'args/lib',
+ 'fixnum/lib',
+ 'htmlescape/lib',
+ 'http/lib',
+ 'intl/lib',
+ 'logging/lib',
+ 'meta/lib',
+ 'unittest/lib',
+ 'webdriver/lib',
+ ],
+ 'outputs': [
+ '<(PRODUCT_DIR)/packages/args',
+ '<(PRODUCT_DIR)/packages/fixnum',
+ '<(PRODUCT_DIR)/packages/htmlescape',
+ '<(PRODUCT_DIR)/packages/http',
+ '<(PRODUCT_DIR)/packages/intl',
+ '<(PRODUCT_DIR)/packages/logging',
+ '<(PRODUCT_DIR)/packages/meta',
+ '<(PRODUCT_DIR)/packages/unittest',
+ '<(PRODUCT_DIR)/packages/webdriver',
+ ],
+ 'action': [
+ 'python', '../tools/make_links.py',
+ '<(PRODUCT_DIR)/packages',
+ '<@(_inputs)',
+ ],
+ },
+ ],
+ }
+ ],
+}
diff --git a/pkg/pkg.status b/pkg/pkg.status
index d7aadb7..32d4068 100644
--- a/pkg/pkg.status
+++ b/pkg/pkg.status
@@ -9,20 +9,18 @@
# arithmetic natively, i.e., the VM.
fixnum/test/int_64_vm_test: Skip
-# Skip the cURL tests until we have bundled binaries to run them on all
-# platforms.
-http/test/curl_client_test: Skip
-
[$compiler == dart2dart]
*: Skip
# Don't compiile tests that use dart:io to JS
[ $compiler == dart2js || $compiler == dart2dart || $compiler == dartc ]
http/test/*: Skip
+oauth2/test/*: Skip
# Skip tests that use local file access if we're running in any browser
[ $runtime == opera || $runtime == ff || $runtime == ie9 || $runtime == dartium || $runtime == chrome || $runtime == safari || $runtime == drt ]
http/test/*: Skip
+oauth2/test/*: Skip
intl/test/date_time_format_file_even_test: Skip
intl/test/date_time_format_file_odd_test: Skip
intl/test/find_default_locale_standalone_test: Skip
@@ -50,13 +48,11 @@
[ $compiler == dartc ]
unittest/test/mock_regexp_negative_test: Fail
unittest/test/mock_stepwise_negative_test: Fail
-
-[ $system == windows ]
-http/test/request_test: Pass, Timeout # Issue 6594
+args/test/args_test: Fail # http://dartbug.com/6790
[ $compiler == dart2js || $compiler == dartc ]
unittest/test/instance_test: Skip
[ $compiler == none && $runtime == drt ]
dartdoc/test/dartdoc_test: Skip # See dartbug.com/4541.
-
+args/test/args_test: Skip # http://dartbug.com/6744
diff --git a/pkg/unittest/lib/src/core_matchers.dart b/pkg/unittest/lib/src/core_matchers.dart
index 20e9db2..3846fdd 100644
--- a/pkg/unittest/lib/src/core_matchers.dart
+++ b/pkg/unittest/lib/src/core_matchers.dart
@@ -489,18 +489,6 @@
bool matches(item, MatchState matchState) => item is UnimplementedError;
}
-/** A matcher for NullPointerExceptions. */
-const isNullPointerException = const _NullPointerException();
-
-/** A matcher for functions that throw NotNullPointerException. */
-const Matcher throwsNullPointerException =
- const Throws(isNullPointerException);
-
-class _NullPointerException extends TypeMatcher {
- const _NullPointerException() : super("NullPointerException");
- bool matches(item, MatchState matchState) => item is NullPointerException;
-}
-
/** A matcher for UnsupportedError. */
const isUnsupportedError = const _UnsupportedError();
diff --git a/pkg/unittest/test/matchers_test.dart b/pkg/unittest/test/matchers_test.dart
index c9045ad..81be8fb 100644
--- a/pkg/unittest/test/matchers_test.dart
+++ b/pkg/unittest/test/matchers_test.dart
@@ -155,16 +155,6 @@
"UnimplementedError.");
});
- test('throwsNullPointerException', () {
- shouldPass(() { throw new NullPointerException(''); },
- throwsNullPointerException);
- shouldFail(() { throw new Exception(); },
- throwsNullPointerException,
- "Expected: throws an exception which matches NullPointerException "
- "but: exception <Exception> does not match "
- "NullPointerException.");
- });
-
test('throwsUnsupportedError', () {
shouldPass(() { throw new UnsupportedError(''); },
throwsUnsupportedError);
diff --git a/runtime/bin/bin.gypi b/runtime/bin/bin.gypi
index 084cd51..c8108b7 100644
--- a/runtime/bin/bin.gypi
+++ b/runtime/bin/bin.gypi
@@ -268,6 +268,10 @@
'builtin_natives.cc',
'builtin.h',
'io_natives.h',
+ 'log_android.cc',
+ 'log_linux.cc',
+ 'log_macos.cc',
+ 'log_win.cc',
],
'includes': [
'builtin_impl_sources.gypi',
@@ -391,7 +395,13 @@
'link_settings': {
'libraries': [ '-lws2_32.lib', '-lRpcrt4.lib' ],
},
- }]],
+ }],
+ ['OS=="android"', {
+ 'link_settings': {
+ 'libraries': [ '-llog' ],
+ },
+ }]
+ ],
},
{
# Generate snapshot bin file.
@@ -482,7 +492,14 @@
},
},
}],
- ],
+ ['OS=="linux"', {
+ # Have the linker add all symbols to the dynamic symbol table
+ # so that extensions can look them up dynamically in the binary.
+ 'ldflags': [
+ '-rdynamic',
+ ],
+ }],
+ ],
},
{
# dart binary without any snapshot built in.
@@ -521,7 +538,15 @@
'AdditionalOptions': [ '/EXPORT:Dart_True' ],
},
},
- }]],
+ }],
+ ['OS=="linux"', {
+ # Have the linker add all symbols to the dynamic symbol table
+ # so that extensions can look them up dynamically in the binary.
+ 'ldflags': [
+ '-rdynamic',
+ ],
+ }],
+ ],
},
{
'target_name': 'process_test',
diff --git a/runtime/bin/builtin.dart b/runtime/bin/builtin.dart
index 4aea641..f84a50f 100644
--- a/runtime/bin/builtin.dart
+++ b/runtime/bin/builtin.dart
@@ -71,12 +71,20 @@
var baseUri = new Uri.fromString(base);
_logResolution("# Resolving: $userString from $base");
- // Relative URIs with scheme dart-ext should be resolved as if with no scheme.
var uri = new Uri.fromString(userString);
var resolved;
if ('dart-ext' == uri.scheme) {
+ // Relative URIs with scheme dart-ext should be resolved as if with no
+ // scheme.
resolved = baseUri.resolve(uri.path);
- resolved = new Uri.fromComponents(scheme: "dart-ext", path: resolved.path);
+ var path = resolved.path;
+ if (resolved.scheme == 'package') {
+ // If we are resolving relative to a package URI we go directly to the
+ // file path and keep the dart-ext scheme. Otherwise, we will lose the
+ // package URI path part.
+ path = _filePathFromPackageUri(resolved);
+ }
+ resolved = new Uri.fromComponents(scheme: "dart-ext", path: path);
} else {
resolved = baseUri.resolve(userString);
}
diff --git a/runtime/bin/dbg_connection.cc b/runtime/bin/dbg_connection.cc
index 4c23dd4..4918d0d 100644
--- a/runtime/bin/dbg_connection.cc
+++ b/runtime/bin/dbg_connection.cc
@@ -5,6 +5,7 @@
#include "bin/dbg_connection.h"
#include "bin/dbg_message.h"
#include "bin/dartutils.h"
+#include "bin/log.h"
#include "bin/socket.h"
#include "bin/thread.h"
#include "bin/utils.h"
@@ -198,7 +199,8 @@
FATAL("Illegal JSON message received");
}
if (!found) {
- printf("'command' not found in JSON message: '%s'\n", msgbuf_->buf());
+ Log::Print("'command' not found in JSON message: '%s'\n",
+ msgbuf_->buf());
msgbuf_->PopMessage();
}
@@ -242,7 +244,7 @@
}
// This is an unrecognized command, report error and move on to next.
- printf("unrecognized command received: '%s'\n", msgbuf_->buf());
+ Log::Print("unrecognized command received: '%s'\n", msgbuf_->buf());
HandleUnknownMsg();
msgbuf_->PopMessage();
}
diff --git a/runtime/bin/dbg_connection_android.cc b/runtime/bin/dbg_connection_android.cc
index 7fe7e94..a0bce37 100644
--- a/runtime/bin/dbg_connection_android.cc
+++ b/runtime/bin/dbg_connection_android.cc
@@ -9,6 +9,7 @@
#include "bin/dbg_connection.h"
#include "bin/fdutils.h"
+#include "bin/log.h"
#include "bin/socket.h"
int DebuggerConnectionImpl::epoll_fd_ = -1;
@@ -32,7 +33,7 @@
// Sync message. Not yet implemented.
UNIMPLEMENTED();
} else {
- printf("unexpected: receiving debugger connection event.\n");
+ Log::Print("unexpected: receiving debugger connection event.\n");
UNIMPLEMENTED();
}
}
diff --git a/runtime/bin/dbg_connection_linux.cc b/runtime/bin/dbg_connection_linux.cc
index 7fe7e94..a0bce37 100644
--- a/runtime/bin/dbg_connection_linux.cc
+++ b/runtime/bin/dbg_connection_linux.cc
@@ -9,6 +9,7 @@
#include "bin/dbg_connection.h"
#include "bin/fdutils.h"
+#include "bin/log.h"
#include "bin/socket.h"
int DebuggerConnectionImpl::epoll_fd_ = -1;
@@ -32,7 +33,7 @@
// Sync message. Not yet implemented.
UNIMPLEMENTED();
} else {
- printf("unexpected: receiving debugger connection event.\n");
+ Log::Print("unexpected: receiving debugger connection event.\n");
UNIMPLEMENTED();
}
}
diff --git a/runtime/bin/dbg_connection_macos.cc b/runtime/bin/dbg_connection_macos.cc
index cc0f13a..8464abf 100644
--- a/runtime/bin/dbg_connection_macos.cc
+++ b/runtime/bin/dbg_connection_macos.cc
@@ -12,6 +12,7 @@
#include "bin/dartutils.h"
#include "bin/dbg_connection.h"
#include "bin/fdutils.h"
+#include "bin/log.h"
#include "bin/socket.h"
#include "platform/thread.h"
#include "platform/utils.h"
@@ -87,10 +88,10 @@
} else if (ident == wakeup_fds_[0]) {
Message msg;
if (ReceiveMessage(&msg)) {
- printf("Received sync message id %d.\n", msg.msg_id);
+ Log::Print("Received sync message id %d.\n", msg.msg_id);
}
} else {
- printf("unexpected: receiving debugger connection event.\n");
+ Log::Print("unexpected: receiving debugger connection event.\n");
UNIMPLEMENTED();
}
}
@@ -113,7 +114,7 @@
}
}
}
- printf("shutting down debugger thread\n");
+ Log::Print("shutting down debugger thread\n");
}
diff --git a/runtime/bin/directory_win.cc b/runtime/bin/directory_win.cc
index 9508dae..ca6c601 100644
--- a/runtime/bin/directory_win.cc
+++ b/runtime/bin/directory_win.cc
@@ -7,8 +7,7 @@
#include <errno.h>
#include <sys/stat.h>
-#include "bin/platform.h"
-
+#include "bin/log.h"
static int SetOsErrorMessage(char* os_error_message,
int os_error_message_len) {
@@ -23,7 +22,7 @@
NULL);
if (message_size == 0) {
if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
- fprintf(stderr, "FormatMessage failed %d\n", GetLastError());
+ Log::PrintErr("FormatMessage failed %d\n", GetLastError());
}
snprintf(os_error_message, os_error_message_len, "OS Error %d", error_code);
}
diff --git a/runtime/bin/eventhandler_android.cc b/runtime/bin/eventhandler_android.cc
index de28f03..878c7eb 100644
--- a/runtime/bin/eventhandler_android.cc
+++ b/runtime/bin/eventhandler_android.cc
@@ -15,6 +15,7 @@
#include "bin/dartutils.h"
#include "bin/fdutils.h"
+#include "bin/log.h"
#include "platform/hashmap.h"
#include "platform/thread.h"
#include "platform/utils.h"
@@ -229,21 +230,21 @@
#ifdef DEBUG_POLL
static void PrintEventMask(intptr_t fd, intptr_t events) {
- printf("%d ", fd);
- if ((events & EPOLLIN) != 0) printf("EPOLLIN ");
- if ((events & EPOLLPRI) != 0) printf("EPOLLPRI ");
- if ((events & EPOLLOUT) != 0) printf("EPOLLOUT ");
- if ((events & EPOLLERR) != 0) printf("EPOLLERR ");
- if ((events & EPOLLHUP) != 0) printf("EPOLLHUP ");
- if ((events & EPOLLRDHUP) != 0) printf("EPOLLRDHUP ");
+ Log::Print("%d ", fd);
+ if ((events & EPOLLIN) != 0) Log::Print("EPOLLIN ");
+ if ((events & EPOLLPRI) != 0) Log::Print("EPOLLPRI ");
+ if ((events & EPOLLOUT) != 0) Log::Print("EPOLLOUT ");
+ if ((events & EPOLLERR) != 0) Log::Print("EPOLLERR ");
+ if ((events & EPOLLHUP) != 0) Log::Print("EPOLLHUP ");
+ if ((events & EPOLLRDHUP) != 0) Log::Print("EPOLLRDHUP ");
int all_events = EPOLLIN | EPOLLPRI | EPOLLOUT |
EPOLLERR | EPOLLHUP | EPOLLRDHUP;
if ((events & ~all_events) != 0) {
- printf("(and %08x) ", events & ~all_events);
+ Log::Print("(and %08x) ", events & ~all_events);
}
- printf("(available %d) ", FDUtils::AvailableBytes(fd));
+ Log::Print("(available %d) ", FDUtils::AvailableBytes(fd));
- printf("\n");
+ Log::Print("\n");
}
#endif
@@ -299,7 +300,7 @@
event_mask = (1 << kCloseEvent);
sd->MarkClosedRead();
} else if (errno != EWOULDBLOCK) {
- fprintf(stderr, "Error recv: %s\n", strerror(errno));
+ Log::PrintErr("Error recv: %s\n", strerror(errno));
}
}
}
diff --git a/runtime/bin/eventhandler_linux.cc b/runtime/bin/eventhandler_linux.cc
index 886388f3..49b6ca1 100644
--- a/runtime/bin/eventhandler_linux.cc
+++ b/runtime/bin/eventhandler_linux.cc
@@ -15,6 +15,7 @@
#include "bin/dartutils.h"
#include "bin/fdutils.h"
+#include "bin/log.h"
#include "platform/hashmap.h"
#include "platform/thread.h"
#include "platform/utils.h"
@@ -229,21 +230,21 @@
#ifdef DEBUG_POLL
static void PrintEventMask(intptr_t fd, intptr_t events) {
- printf("%d ", fd);
- if ((events & EPOLLIN) != 0) printf("EPOLLIN ");
- if ((events & EPOLLPRI) != 0) printf("EPOLLPRI ");
- if ((events & EPOLLOUT) != 0) printf("EPOLLOUT ");
- if ((events & EPOLLERR) != 0) printf("EPOLLERR ");
- if ((events & EPOLLHUP) != 0) printf("EPOLLHUP ");
- if ((events & EPOLLRDHUP) != 0) printf("EPOLLRDHUP ");
+ Log::Print("%d ", fd);
+ if ((events & EPOLLIN) != 0) Log::Print("EPOLLIN ");
+ if ((events & EPOLLPRI) != 0) Log::Print("EPOLLPRI ");
+ if ((events & EPOLLOUT) != 0) Log::Print("EPOLLOUT ");
+ if ((events & EPOLLERR) != 0) Log::Print("EPOLLERR ");
+ if ((events & EPOLLHUP) != 0) Log::Print("EPOLLHUP ");
+ if ((events & EPOLLRDHUP) != 0) Log::Print("EPOLLRDHUP ");
int all_events = EPOLLIN | EPOLLPRI | EPOLLOUT |
EPOLLERR | EPOLLHUP | EPOLLRDHUP;
if ((events & ~all_events) != 0) {
- printf("(and %08x) ", events & ~all_events);
+ Log::Print("(and %08x) ", events & ~all_events);
}
- printf("(available %d) ", FDUtils::AvailableBytes(fd));
+ Log::Print("(available %d) ", FDUtils::AvailableBytes(fd));
- printf("\n");
+ Log::Print("\n");
}
#endif
@@ -299,7 +300,7 @@
event_mask = (1 << kCloseEvent);
sd->MarkClosedRead();
} else if (errno != EWOULDBLOCK) {
- fprintf(stderr, "Error recv: %s\n", strerror(errno));
+ Log::PrintErr("Error recv: %s\n", strerror(errno));
}
}
}
diff --git a/runtime/bin/eventhandler_macos.cc b/runtime/bin/eventhandler_macos.cc
index 59a3d65..3954190 100644
--- a/runtime/bin/eventhandler_macos.cc
+++ b/runtime/bin/eventhandler_macos.cc
@@ -14,6 +14,7 @@
#include "bin/dartutils.h"
#include "bin/fdutils.h"
+#include "bin/log.h"
#include "platform/hashmap.h"
#include "platform/thread.h"
#include "platform/utils.h"
@@ -240,15 +241,16 @@
#ifdef DEBUG_KQUEUE
static void PrintEventMask(intptr_t fd, struct kevent* event) {
- printf("%d ", static_cast<int>(fd));
- if (event->filter == EVFILT_READ) printf("EVFILT_READ ");
- if (event->filter == EVFILT_WRITE) printf("EVFILT_WRITE ");
- printf("flags: %x: ", event->flags);
- if ((event->flags & EV_EOF) != 0) printf("EV_EOF ");
- if ((event->flags & EV_ERROR) != 0) printf("EV_ERROR ");
- printf("- fflags: %d ", event->fflags);
- printf("(available %d) ", static_cast<int>(FDUtils::AvailableBytes(fd)));
- printf("\n");
+ Log::Print("%d ", static_cast<int>(fd));
+ if (event->filter == EVFILT_READ) Log::Print("EVFILT_READ ");
+ if (event->filter == EVFILT_WRITE) Log::Print("EVFILT_WRITE ");
+ Log::Print("flags: %x: ", event->flags);
+ if ((event->flags & EV_EOF) != 0) Log::Print("EV_EOF ");
+ if ((event->flags & EV_ERROR) != 0) Log::Print("EV_ERROR ");
+ Log::Print("- fflags: %d ", event->fflags);
+ Log::Print("(available %d) ",
+ static_cast<int>(FDUtils::AvailableBytes(fd)));
+ Log::Print("\n");
}
#endif
diff --git a/runtime/bin/eventhandler_win.cc b/runtime/bin/eventhandler_win.cc
index 2d4343b..bc2f480 100644
--- a/runtime/bin/eventhandler_win.cc
+++ b/runtime/bin/eventhandler_win.cc
@@ -11,6 +11,7 @@
#include "bin/builtin.h"
#include "bin/dartutils.h"
+#include "bin/log.h"
#include "bin/socket.h"
#include "platform/thread.h"
@@ -143,7 +144,7 @@
reinterpret_cast<ULONG_PTR>(this),
0);
if (completion_port_ == NULL) {
- fprintf(stderr, "Error CreateIoCompletionPort: %d\n", GetLastError());
+ Log::PrintErr("Error CreateIoCompletionPort: %d\n", GetLastError());
return false;
}
return true;
@@ -224,7 +225,7 @@
NULL);
if (!ok) {
if (GetLastError() != ERROR_BROKEN_PIPE) {
- fprintf(stderr, "ReadFile failed %d\n", GetLastError());
+ Log::PrintErr("ReadFile failed %d\n", GetLastError());
}
bytes_read = 0;
}
@@ -259,7 +260,7 @@
}
if (GetLastError() != ERROR_BROKEN_PIPE) {
- fprintf(stderr, "ReadFile failed: %d\n", GetLastError());
+ Log::PrintErr("ReadFile failed: %d\n", GetLastError());
}
event_handler_->HandleClosed(this);
IOBuffer::DisposeBuffer(buffer);
@@ -298,7 +299,7 @@
}
if (GetLastError() != ERROR_BROKEN_PIPE) {
- fprintf(stderr, "WriteFile failed: %d\n", GetLastError());
+ Log::PrintErr("WriteFile failed: %d\n", GetLastError());
}
event_handler_->HandleClosed(this);
IOBuffer::DisposeBuffer(buffer);
@@ -344,7 +345,7 @@
NULL,
NULL);
if (status == SOCKET_ERROR) {
- fprintf(stderr, "Error WSAIoctl failed: %d\n", WSAGetLastError());
+ Log::PrintErr("Error WSAIoctl failed: %d\n", WSAGetLastError());
return false;
}
return true;
@@ -376,7 +377,7 @@
buffer->GetCleanOverlapped());
if (!ok) {
if (WSAGetLastError() != WSA_IO_PENDING) {
- fprintf(stderr, "AcceptEx failed: %d\n", WSAGetLastError());
+ Log::PrintErr("AcceptEx failed: %d\n", WSAGetLastError());
closesocket(buffer->client());
IOBuffer::DisposeBuffer(buffer);
return false;
@@ -422,7 +423,7 @@
accepted_tail_ = client_socket;
}
} else {
- fprintf(stderr, "setsockopt failed: %d\n", WSAGetLastError());
+ Log::PrintErr("setsockopt failed: %d\n", WSAGetLastError());
closesocket(buffer->client());
}
}
@@ -514,7 +515,7 @@
NULL);
if (!ok) {
if (GetLastError() != ERROR_BROKEN_PIPE) {
- fprintf(stderr, "WriteFile failed: %d\n", GetLastError());
+ Log::PrintErr("WriteFile failed: %d\n", GetLastError());
}
event_handler_->HandleClosed(this);
}
@@ -526,7 +527,7 @@
void ClientSocket::Shutdown(int how) {
int rc = shutdown(socket(), how);
if (rc == SOCKET_ERROR) {
- fprintf(stderr, "shutdown failed: %d %d\n", socket(), WSAGetLastError());
+ Log::PrintErr("shutdown failed: %d %d\n", socket(), WSAGetLastError());
}
if (how == SD_RECEIVE) MarkClosedRead();
if (how == SD_SEND) MarkClosedWrite();
@@ -559,7 +560,7 @@
}
if (WSAGetLastError() != WSAECONNRESET) {
- fprintf(stderr, "WSARecv failed: %d\n", WSAGetLastError());
+ Log::PrintErr("WSARecv failed: %d\n", WSAGetLastError());
}
event_handler_->HandleClosed(this);
IOBuffer::DisposeBuffer(buffer);
@@ -584,7 +585,7 @@
return true;
}
- fprintf(stderr, "WSASend failed: %d\n", WSAGetLastError());
+ Log::PrintErr("WSASend failed: %d\n", WSAGetLastError());
IOBuffer::DisposeBuffer(pending_write_);
pending_write_ = NULL;
return false;
@@ -876,7 +877,7 @@
if (!ok && overlapped == NULL) {
if (GetLastError() == ERROR_ABANDONED_WAIT_0) {
// The completion port should never be closed.
- printf("Completion port closed\n");
+ Log::Print("Completion port closed\n");
UNREACHABLE();
} else {
// Timeout is signalled by false result and NULL in overlapped.
diff --git a/runtime/bin/extensions.cc b/runtime/bin/extensions.cc
index 244a631..d8b13f9 100644
--- a/runtime/bin/extensions.cc
+++ b/runtime/bin/extensions.cc
@@ -15,17 +15,18 @@
Dart_Handle Extensions::LoadExtension(const char* extension_url,
Dart_Handle parent_library) {
char* library_path = strdup(extension_url);
- if (!library_path || !File::IsAbsolutePath(library_path)) {
- free(library_path);
- return Dart_Error("unexpected error in library path");
+
+ if (library_path == NULL) {
+ return Dart_Error("Out of memory in LoadExtension");
}
+
// Extract the path and the extension name from the url.
char* last_path_separator = strrchr(library_path, '/');
char* extension_name = last_path_separator + 1;
*last_path_separator = '\0'; // Terminate library_path at last separator.
void* library_handle = LoadExtensionLibrary(library_path, extension_name);
- if (!library_handle) {
+ if (library_handle == NULL) {
free(library_path);
return Dart_Error("cannot find extension library");
}
diff --git a/runtime/bin/file_android.cc b/runtime/bin/file_android.cc
index 66e6251..ddcec13 100644
--- a/runtime/bin/file_android.cc
+++ b/runtime/bin/file_android.cc
@@ -11,6 +11,7 @@
#include <libgen.h>
#include "bin/builtin.h"
+#include "bin/log.h"
class FileHandle {
public:
@@ -42,7 +43,7 @@
const int kBufferSize = 1024;
char error_message[kBufferSize];
strerror_r(errno, error_message, kBufferSize);
- fprintf(stderr, "%s\n", error_message);
+ Log::PrintErr("%s\n", error_message);
}
handle_->set_fd(kClosedFd);
}
diff --git a/runtime/bin/file_linux.cc b/runtime/bin/file_linux.cc
index 66e6251..ddcec13 100644
--- a/runtime/bin/file_linux.cc
+++ b/runtime/bin/file_linux.cc
@@ -11,6 +11,7 @@
#include <libgen.h>
#include "bin/builtin.h"
+#include "bin/log.h"
class FileHandle {
public:
@@ -42,7 +43,7 @@
const int kBufferSize = 1024;
char error_message[kBufferSize];
strerror_r(errno, error_message, kBufferSize);
- fprintf(stderr, "%s\n", error_message);
+ Log::PrintErr("%s\n", error_message);
}
handle_->set_fd(kClosedFd);
}
diff --git a/runtime/bin/file_macos.cc b/runtime/bin/file_macos.cc
index b5bc95a..0fd0c8d 100644
--- a/runtime/bin/file_macos.cc
+++ b/runtime/bin/file_macos.cc
@@ -13,6 +13,7 @@
#include "bin/builtin.h"
#include "bin/fdutils.h"
+#include "bin/log.h"
class FileHandle {
public:
@@ -44,7 +45,7 @@
const int kBufferSize = 1024;
char error_message[kBufferSize];
strerror_r(errno, error_message, kBufferSize);
- fprintf(stderr, "%s\n", error_message);
+ Log::PrintErr("%s\n", error_message);
}
handle_->set_fd(kClosedFd);
}
diff --git a/runtime/bin/file_win.cc b/runtime/bin/file_win.cc
index 97a98a6..a9cef38 100644
--- a/runtime/bin/file_win.cc
+++ b/runtime/bin/file_win.cc
@@ -11,6 +11,7 @@
#include <sys/stat.h>
#include "bin/builtin.h"
+#include "bin/log.h"
class FileHandle {
public:
@@ -39,7 +40,7 @@
ASSERT(handle_->fd() >= 0);
int err = close(handle_->fd());
if (err != 0) {
- fprintf(stderr, "%s\n", strerror(errno));
+ Log::PrintErr("%s\n", strerror(errno));
}
handle_->set_fd(kClosedFd);
}
diff --git a/runtime/bin/gen_snapshot.cc b/runtime/bin/gen_snapshot.cc
index b3513e4..2f2c6f2 100644
--- a/runtime/bin/gen_snapshot.cc
+++ b/runtime/bin/gen_snapshot.cc
@@ -14,12 +14,14 @@
#include "bin/builtin.h"
#include "bin/dartutils.h"
#include "bin/file.h"
+#include "bin/log.h"
+
#include "platform/globals.h"
#define CHECK_RESULT(result) \
if (Dart_IsError(result)) { \
free(snapshot_buffer); \
- fprintf(stderr, "Error: %s", Dart_GetError(result)); \
+ Log::PrintErr("Error: %s", Dart_GetError(result)); \
Dart_ExitScope(); \
Dart_ShutdownIsolate(); \
exit(255); \
@@ -205,16 +207,14 @@
static void PrintUsage() {
- fprintf(stderr,
- "dart [<vm-flags>] "
- "[<dart-script-file>]\n");
+ Log::PrintErr("dart [<vm-flags>] [<dart-script-file>]\n");
}
static void VerifyLoaded(Dart_Handle library) {
if (Dart_IsError(library)) {
const char* err_msg = Dart_GetError(library);
- fprintf(stderr, "Errors encountered while loading: %s\n", err_msg);
+ Log::PrintErr("Errors encountered while loading: %s\n", err_msg);
Dart_ExitScope();
Dart_ShutdownIsolate();
exit(255);
@@ -251,7 +251,7 @@
// Set up the library tag handler for this isolate.
Dart_Handle result = Dart_SetLibraryTagHandler(DartUtils::LibraryTagHandler);
if (Dart_IsError(result)) {
- fprintf(stderr, "%s", Dart_GetError(result));
+ Log::PrintErr("%s", Dart_GetError(result));
Dart_ExitScope();
Dart_ShutdownIsolate();
exit(255);
@@ -290,7 +290,7 @@
}
if (snapshot_filename == NULL) {
- fprintf(stderr, "No snapshot output file specified\n");
+ Log::PrintErr("No snapshot output file specified\n");
return 255;
}
@@ -302,14 +302,14 @@
// Note: We don't expect isolates to be created from dart code during
// snapshot generation.
if (!Dart_Initialize(NULL, NULL, NULL)) {
- fprintf(stderr, "VM initialization failed\n");
+ Log::PrintErr("VM initialization failed\n");
return 255;
}
char* error;
Dart_Isolate isolate = Dart_CreateIsolate(NULL, NULL, NULL, NULL, &error);
if (isolate == NULL) {
- fprintf(stderr, "Error: %s", error);
+ Log::PrintErr("Error: %s", error);
free(error);
exit(255);
}
@@ -360,7 +360,7 @@
NULL,
&error);
if (isolate == NULL) {
- fprintf(stderr, "%s", error);
+ Log::PrintErr("%s", error);
free(error);
free(snapshot_buffer);
exit(255);
diff --git a/runtime/bin/io_impl_sources.gypi b/runtime/bin/io_impl_sources.gypi
index f86ca02..552ac3d 100644
--- a/runtime/bin/io_impl_sources.gypi
+++ b/runtime/bin/io_impl_sources.gypi
@@ -41,7 +41,7 @@
'socket_linux.cc',
'socket_macos.cc',
'socket_win.cc',
- 'tls_socket.cc',
- 'tls_socket.h',
+ 'secure_socket.cc',
+ 'secure_socket.h',
],
}
diff --git a/runtime/bin/io_natives.cc b/runtime/bin/io_natives.cc
index 1cd0236..16fd532 100644
--- a/runtime/bin/io_natives.cc
+++ b/runtime/bin/io_natives.cc
@@ -40,13 +40,13 @@
V(Socket_GetError, 1) \
V(Socket_GetStdioHandle, 2) \
V(Socket_NewServicePort, 0) \
- V(TlsSocket_Connect, 3) \
- V(TlsSocket_Destroy, 1) \
- V(TlsSocket_Handshake, 1) \
- V(TlsSocket_Init, 1) \
- V(TlsSocket_ProcessBuffer, 2) \
- V(TlsSocket_RegisterHandshakeCompleteCallback, 2) \
- V(TlsSocket_SetCertificateDatabase, 1)
+ V(SecureSocket_Connect, 5) \
+ V(SecureSocket_Destroy, 1) \
+ V(SecureSocket_Handshake, 1) \
+ V(SecureSocket_Init, 1) \
+ V(SecureSocket_ProcessBuffer, 2) \
+ V(SecureSocket_RegisterHandshakeCompleteCallback, 2) \
+ V(SecureSocket_SetCertificateDatabase, 2)
IO_NATIVE_LIST(DECLARE_FUNCTION);
diff --git a/runtime/bin/io_sources.gypi b/runtime/bin/io_sources.gypi
index 9300c1c..69100f0 100644
--- a/runtime/bin/io_sources.gypi
+++ b/runtime/bin/io_sources.gypi
@@ -14,6 +14,6 @@
'process_patch.dart',
'socket_patch.dart',
'stdio_patch.dart',
- 'tls_socket_patch.dart',
+ 'secure_socket_patch.dart',
],
}
diff --git a/runtime/bin/log.h b/runtime/bin/log.h
new file mode 100644
index 0000000..c495840
--- /dev/null
+++ b/runtime/bin/log.h
@@ -0,0 +1,37 @@
+// Copyright (c) 2012, 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.
+
+#ifndef BIN_LOG_H_
+#define BIN_LOG_H_
+
+#include <stdarg.h>
+
+#include "platform/globals.h"
+
+class Log {
+ public:
+ // Print formatted output for debugging.
+ static void Print(const char* format, ...) PRINTF_ATTRIBUTE(1, 2) {
+ va_list args;
+ va_start(args, format);
+ VPrint(format, args);
+ va_end(args);
+ }
+
+ static void VPrint(const char* format, va_list args);
+
+ static void PrintErr(const char* format, ...) PRINTF_ATTRIBUTE(1, 2) {
+ va_list args;
+ va_start(args, format);
+ VPrintErr(format, args);
+ va_end(args);
+ }
+
+ static void VPrintErr(const char* format, va_list args);
+
+ DISALLOW_ALLOCATION();
+ DISALLOW_IMPLICIT_CONSTRUCTORS(Log);
+};
+
+#endif // BIN_LOG_H_
diff --git a/runtime/bin/log_android.cc b/runtime/bin/log_android.cc
new file mode 100644
index 0000000..0a6b552
--- /dev/null
+++ b/runtime/bin/log_android.cc
@@ -0,0 +1,20 @@
+// Copyright (c) 2012, 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.
+
+#include "bin/log.h"
+
+#include <stdio.h>
+#include <android/log.h>
+
+// TODO(gram): We should be buffering the data and only outputting
+// it when we see a '\n'.
+
+void Log::VPrint(const char* format, va_list args) {
+ __android_log_vprint(ANDROID_LOG_INFO, "Dart", format, args);
+}
+
+void Log::VPrintErr(const char* format, va_list args) {
+ __android_log_vprint(ANDROID_LOG_ERROR, "Dart", format, args);
+}
+
diff --git a/runtime/bin/log_linux.cc b/runtime/bin/log_linux.cc
new file mode 100644
index 0000000..1b99c70
--- /dev/null
+++ b/runtime/bin/log_linux.cc
@@ -0,0 +1,18 @@
+// Copyright (c) 2012, 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.
+
+#include "bin/log.h"
+
+#include <stdio.h>
+
+void Log::VPrint(const char* format, va_list args) {
+ vfprintf(stdout, format, args);
+ fflush(stdout);
+}
+
+void Log::VPrintErr(const char* format, va_list args) {
+ vfprintf(stderr, format, args);
+ fflush(stdout);
+}
+
diff --git a/runtime/bin/log_macos.cc b/runtime/bin/log_macos.cc
new file mode 100644
index 0000000..2f0d371
--- /dev/null
+++ b/runtime/bin/log_macos.cc
@@ -0,0 +1,17 @@
+// Copyright (c) 2012, 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.
+
+#include "bin/log.h"
+
+#include <stdio.h>
+
+void Log::VPrint(const char* format, va_list args) {
+ vfprintf(stdout, format, args);
+ fflush(stdout);
+}
+
+void Log::VPrintErr(const char* format, va_list args) {
+ vfprintf(stderr, format, args);
+ fflush(stderr);
+}
diff --git a/runtime/bin/log_win.cc b/runtime/bin/log_win.cc
new file mode 100644
index 0000000..2f0d371
--- /dev/null
+++ b/runtime/bin/log_win.cc
@@ -0,0 +1,17 @@
+// Copyright (c) 2012, 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.
+
+#include "bin/log.h"
+
+#include <stdio.h>
+
+void Log::VPrint(const char* format, va_list args) {
+ vfprintf(stdout, format, args);
+ fflush(stdout);
+}
+
+void Log::VPrintErr(const char* format, va_list args) {
+ vfprintf(stderr, format, args);
+ fflush(stderr);
+}
diff --git a/runtime/bin/main.cc b/runtime/bin/main.cc
index 534f886..81c1373 100644
--- a/runtime/bin/main.cc
+++ b/runtime/bin/main.cc
@@ -17,6 +17,7 @@
#include "bin/extensions.h"
#include "bin/file.h"
#include "bin/isolate_data.h"
+#include "bin/log.h"
#include "bin/platform.h"
#include "bin/process.h"
#include "platform/globals.h"
@@ -142,7 +143,7 @@
}
}
if (debug_port == 0) {
- fprintf(stderr, "unrecognized --debug option syntax. "
+ Log::PrintErr("unrecognized --debug option syntax. "
"Use --debug[:<port number>]\n");
return false;
}
@@ -516,25 +517,25 @@
static void PrintVersion() {
- fprintf(stderr, "Dart VM version: %s\n", Dart_VersionString());
+ Log::PrintErr("Dart VM version: %s\n", Dart_VersionString());
}
static void PrintUsage() {
- fprintf(stderr,
+ Log::PrintErr(
"Usage: dart [<vm-flags>] <dart-script-file> [<dart-options>]\n"
"\n"
"Executes the Dart script passed as <dart-script-file>.\n"
"\n");
if (!has_verbose_option) {
- fprintf(stderr,
+ Log::PrintErr(
"Common options:\n"
"--checked Insert runtime type checks and enable assertions (checked mode).\n"
"--version Print the VM version.\n"
"--help Display this message (add --verbose for information about all\n"
" VM options).\n");
} else {
- fprintf(stderr,
+ Log::PrintErr(
"Supported options:\n"
"--checked\n"
" Insert runtime type checks and enable assertions (checked mode).\n"
@@ -626,8 +627,9 @@
static int ErrorExit(const char* format, ...) {
va_list arguments;
va_start(arguments, format);
- vfprintf(stderr, format, arguments);
+ Log::VPrintErr(format, arguments);
va_end(arguments);
+ fflush(stderr);
Dart_ExitScope();
Dart_ShutdownIsolate();
@@ -653,7 +655,7 @@
// Perform platform specific initialization.
if (!Platform::Initialize()) {
- fprintf(stderr, "Initialization failed\n");
+ Log::PrintErr("Initialization failed\n");
}
// On Windows, the argv strings are code page encoded and not
@@ -691,7 +693,9 @@
if (!Dart_Initialize(CreateIsolateAndSetup,
NULL,
ShutdownIsolate)) {
- return ErrorExit("VM initialization failed\n");
+ fprintf(stderr, "%s", "VM initialization failed\n");
+ fflush(stderr);
+ return kErrorExitCode;
}
DartUtils::SetOriginalWorkingDirectory();
@@ -710,7 +714,7 @@
"main",
new IsolateData(),
&error)) {
- fprintf(stderr, "%s\n", error);
+ Log::PrintErr("%s\n", error);
free(error);
delete [] isolate_name;
return kErrorExitCode; // Indicates we encountered an error.
diff --git a/runtime/bin/net/nss.gyp b/runtime/bin/net/nss.gyp
index ad5d888..64402b5 100644
--- a/runtime/bin/net/nss.gyp
+++ b/runtime/bin/net/nss.gyp
@@ -7,7 +7,7 @@
# BSD-style license that can be found in the LICENSE file.
# This file is a modified copy of Chromium's deps/third_party/nss/nss.gyp.
-# Revision 165464 (this should agree with "nss_rev" in DEPS).
+# Revision 169195 (this should agree with "nss_rev" in DEPS).
{
# Added by Dart. All Dart comments refer to the following block or line.
'includes': [
@@ -88,7 +88,7 @@
'conditions': [[ 'dart_io_support==1', {
'targets': [
{
- 'target_name': 'nspr_dart',
+ 'target_name': 'nspr_dart', # Added by Dart (the _dart postfix)
'product_name': 'crnspr',
'type': '<(component)',
# Changed by Dart: '<(nss_directory)/' added to all paths.
@@ -455,14 +455,14 @@
],
},
{
- 'target_name': 'nss_dart',
+ 'target_name': 'nss_dart', # Added by Dart (the _dart postfix)
'product_name': 'crnss',
'type': '<(component)',
'dependencies': [
- 'nss_static_dart',
+ 'nss_static_dart', # Added by Dart (the _dart postfix)
],
'export_dependent_settings': [
- 'nss_static_dart',
+ 'nss_static_dart', # Added by Dart (the _dart postfix)
],
'sources': [
# Ensure at least one object file is produced, so that MSVC does not
@@ -473,10 +473,10 @@
'conditions': [
['exclude_nss_root_certs==0', {
'dependencies': [
- 'nssckbi_dart',
+ 'nssckbi_dart', # Added by Dart (the _dart postfix)
],
'export_dependent_settings': [
- 'nssckbi_dart',
+ 'nssckbi_dart', # Added by Dart (the _dart postfix)
],
}],
['OS == "mac" and component == "shared_library"', {
@@ -506,7 +506,7 @@
#
# TODO(rsleevi): http://crbug.com/128134 - Break the circular dependency
# without requiring nssckbi to be built as a shared library.
- 'target_name': 'nssckbi_dart',
+ 'target_name': 'nssckbi_dart', # Added by Dart (the _dart postfix)
'product_name': 'crnssckbi',
'type': 'static_library',
# This target is an implementation detail - the public dependencies
@@ -554,10 +554,10 @@
'<(nss_directory)/mozilla/security/nss/lib/ckfw/wrap.c',
],
'dependencies': [
- 'nss_static_dart',
+ 'nss_static_dart', # Added by Dart (the _dart postfix)
],
'export_dependent_settings': [
- 'nss_static_dart',
+ 'nss_static_dart', # Added by Dart (the _dart postfix)
],
'include_dirs': [
'<(nss_directory)/mozilla/security/nss/lib/ckfw',
@@ -569,7 +569,7 @@
},
},
{
- 'target_name': 'nss_static_dart',
+ 'target_name': 'nss_static_dart', # Added by Dart (the _dart postfix)
'type': 'static_library',
# This target is an implementation detail - the public dependencies
# should be on 'nss'.
@@ -630,6 +630,7 @@
'<(nss_directory)/mozilla/security/nss/lib/cryptohi/keyt.h',
'<(nss_directory)/mozilla/security/nss/lib/cryptohi/keythi.h',
'<(nss_directory)/mozilla/security/nss/lib/cryptohi/sechash.c',
+ '<(nss_directory)/mozilla/security/nss/lib/cryptohi/sechash.h',
'<(nss_directory)/mozilla/security/nss/lib/cryptohi/seckey.c',
'<(nss_directory)/mozilla/security/nss/lib/cryptohi/secsign.c',
'<(nss_directory)/mozilla/security/nss/lib/cryptohi/secvfy.c',
@@ -678,7 +679,6 @@
'<(nss_directory)/mozilla/security/nss/lib/freebl/ecl/ecp_jm.c',
'<(nss_directory)/mozilla/security/nss/lib/freebl/ecl/ecp_mont.c',
'<(nss_directory)/mozilla/security/nss/lib/freebl/ecl/ec_naf.c',
- '<(nss_directory)/mozilla/security/nss/lib/freebl/hasht.h',
'<(nss_directory)/mozilla/security/nss/lib/freebl/jpake.c',
'<(nss_directory)/mozilla/security/nss/lib/freebl/md2.c',
'<(nss_directory)/mozilla/security/nss/lib/freebl/md5.c',
@@ -700,12 +700,12 @@
'<(nss_directory)/mozilla/security/nss/lib/freebl/mpi/mp_gf2m.h',
'<(nss_directory)/mozilla/security/nss/lib/freebl/mpi/primes.c',
'<(nss_directory)/mozilla/security/nss/lib/freebl/pqg.c',
+ '<(nss_directory)/mozilla/security/nss/lib/freebl/pqg.h',
'<(nss_directory)/mozilla/security/nss/lib/freebl/rawhash.c',
'<(nss_directory)/mozilla/security/nss/lib/freebl/rijndael.c',
'<(nss_directory)/mozilla/security/nss/lib/freebl/rijndael.h',
'<(nss_directory)/mozilla/security/nss/lib/freebl/rijndael32.tab',
'<(nss_directory)/mozilla/security/nss/lib/freebl/rsa.c',
- '<(nss_directory)/mozilla/security/nss/lib/freebl/sechash.h',
'<(nss_directory)/mozilla/security/nss/lib/freebl/secmpi.h',
'<(nss_directory)/mozilla/security/nss/lib/freebl/secrng.h',
'<(nss_directory)/mozilla/security/nss/lib/freebl/seed.c',
@@ -920,6 +920,7 @@
'<(nss_directory)/mozilla/security/nss/lib/pk11wrap/pk11util.c',
'<(nss_directory)/mozilla/security/nss/lib/pk11wrap/secmod.h',
'<(nss_directory)/mozilla/security/nss/lib/pk11wrap/secmodi.h',
+ '<(nss_directory)/mozilla/security/nss/lib/pk11wrap/secmodt.h',
'<(nss_directory)/mozilla/security/nss/lib/pk11wrap/secmodti.h',
'<(nss_directory)/mozilla/security/nss/lib/pk11wrap/secpkcs5.h',
'<(nss_directory)/mozilla/security/nss/lib/pkcs7/certread.c',
@@ -969,8 +970,6 @@
'<(nss_directory)/mozilla/security/nss/lib/softoken/lowpbe.c',
'<(nss_directory)/mozilla/security/nss/lib/softoken/lowpbe.h',
'<(nss_directory)/mozilla/security/nss/lib/softoken/padbuf.c',
- '<(nss_directory)/mozilla/security/nss/lib/softoken/pk11init.h',
- '<(nss_directory)/mozilla/security/nss/lib/softoken/pk11pars.h',
'<(nss_directory)/mozilla/security/nss/lib/softoken/pkcs11.c',
'<(nss_directory)/mozilla/security/nss/lib/softoken/pkcs11c.c',
'<(nss_directory)/mozilla/security/nss/lib/softoken/pkcs11i.h',
@@ -979,12 +978,10 @@
'<(nss_directory)/mozilla/security/nss/lib/softoken/rsawrapr.c',
'<(nss_directory)/mozilla/security/nss/lib/softoken/sdb.c',
'<(nss_directory)/mozilla/security/nss/lib/softoken/sdb.h',
- '<(nss_directory)/mozilla/security/nss/lib/softoken/secmodt.h',
'<(nss_directory)/mozilla/security/nss/lib/softoken/sftkdb.c',
'<(nss_directory)/mozilla/security/nss/lib/softoken/sftkdb.h',
'<(nss_directory)/mozilla/security/nss/lib/softoken/sftkdbt.h',
'<(nss_directory)/mozilla/security/nss/lib/softoken/sftkdbti.h',
- '<(nss_directory)/mozilla/security/nss/lib/softoken/sftkmod.c',
'<(nss_directory)/mozilla/security/nss/lib/softoken/sftkpars.c',
'<(nss_directory)/mozilla/security/nss/lib/softoken/sftkpars.h',
'<(nss_directory)/mozilla/security/nss/lib/softoken/sftkpwd.c',
@@ -1002,6 +999,7 @@
'<(nss_directory)/mozilla/security/nss/lib/util/dersubr.c',
'<(nss_directory)/mozilla/security/nss/lib/util/dertime.c',
'<(nss_directory)/mozilla/security/nss/lib/util/errstrs.c',
+ '<(nss_directory)/mozilla/security/nss/lib/util/hasht.h',
'<(nss_directory)/mozilla/security/nss/lib/util/nssb64.h',
'<(nss_directory)/mozilla/security/nss/lib/util/nssb64d.c',
'<(nss_directory)/mozilla/security/nss/lib/util/nssb64e.c',
@@ -1047,6 +1045,11 @@
'<(nss_directory)/mozilla/security/nss/lib/util/sectime.c',
'<(nss_directory)/mozilla/security/nss/lib/util/templates.c',
'<(nss_directory)/mozilla/security/nss/lib/util/utf8.c',
+ '<(nss_directory)/mozilla/security/nss/lib/util/utilmod.c',
+ '<(nss_directory)/mozilla/security/nss/lib/util/utilmodt.h',
+ '<(nss_directory)/mozilla/security/nss/lib/util/utilpars.c',
+ '<(nss_directory)/mozilla/security/nss/lib/util/utilpars.h',
+ '<(nss_directory)/mozilla/security/nss/lib/util/utilparst.h',
'<(nss_directory)/mozilla/security/nss/lib/util/utilrename.h',
],
'sources!': [
@@ -1059,11 +1062,11 @@
'<(nss_directory)/mozilla/security/nss/lib/pk11wrap/debug_module.c',
],
'dependencies': [
- 'nspr_dart',
- 'sqlite.gyp:sqlite_dart',
+ 'nspr_dart', # Added by Dart (the _dart postfix)
+ 'sqlite.gyp:sqlite_dart', # Changed by Dart prefix ../sqllite removed _dart postfix added.
],
'export_dependent_settings': [
- 'nspr_dart',
+ 'nspr_dart', # Added by Dart (the _dart postfix)
],
'defines': [
'MP_API_COMPATIBLE',
@@ -1148,6 +1151,9 @@
'defines': [
'NSS_DISABLE_LIBPKIX',
],
+ # Changed by Dart:
+ # nss_directory contains .., which is bad in a regular expression.
+ # So we use the partial match by dropping '^' from '^mozilla/...
'sources/': [
['exclude', 'mozilla/security/nss/lib/libpkix/'],
],
@@ -1155,6 +1161,9 @@
'<(nss_directory)/mozilla/security/nss/lib/certhigh/certvfypkix.c',
'<(nss_directory)/mozilla/security/nss/lib/certhigh/certvfypkixprint.c',
],
+ # Changed by Dart:
+ # nss_directory contains .., which is bad in a regular expression.
+ # So we use the partial match by dropping '^' from '^mozilla/...
'include_dirs/': [
['exclude', 'mozilla/security/nss/lib/libpkix/'],
],
@@ -1164,7 +1173,6 @@
['exclude', 'amd64'],
],
}],
- # Added by Dart.
['OS=="linux"', {
'defines': [
'XP_UNIX',
diff --git a/runtime/bin/net/sqlite.gyp b/runtime/bin/net/sqlite.gyp
index 543ca77..aa7ec81 100644
--- a/runtime/bin/net/sqlite.gyp
+++ b/runtime/bin/net/sqlite.gyp
@@ -7,7 +7,7 @@
# BSD-style license that can be found in the LICENSE file.
# This file is a modified copy of Chromium's src/third_party/sqlite/sqlite.gyp.
-# Revision 165464 (this should agree with "nss_rev" in DEPS).
+# Revision 169195 (this should agree with "nss_rev" in DEPS).
{
# Added by Dart. All Dart comments refer to the following block or line.
'includes': [
@@ -38,7 +38,7 @@
'conditions': [[ 'dart_io_support==1', {
'targets': [
{
- 'target_name': 'sqlite_dart',
+ 'target_name': 'sqlite_dart', # Added by Dart (the _dart postfix)
'conditions': [
[ 'chromeos==1' , {
'defines': [
@@ -184,12 +184,12 @@
['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android" and not use_system_sqlite', {
'targets': [
{
- 'target_name': 'sqlite_shell_dart',
+ 'target_name': 'sqlite_shell_dart', # Added by Dart (the _dart postfix)
'type': 'executable',
'dependencies': [
# Disabled by Dart.
# '../icu/icu.gyp:icuuc',
- 'sqlite_dart',
+ 'sqlite_dart', # Added by Dart (the _dart postfix)
],
'sources': [
'<(sqlite_directory)/src/src/shell.c',
diff --git a/runtime/bin/net/ssl.gyp b/runtime/bin/net/ssl.gyp
index cee5997..3798baa 100644
--- a/runtime/bin/net/ssl.gyp
+++ b/runtime/bin/net/ssl.gyp
@@ -7,7 +7,7 @@
# BSD-style license that can be found in the LICENSE file.
# This file is a modified copy of Chromium's src/net/third_party/nss/ssl.gyp.
-# Revision 165464 (this should agree with "nss_rev" in DEPS).
+# Revision 169195 (this should agree with "nss_rev" in DEPS).
{
# Conditions section for ssl-bodge (Compiling SSL on linux using system
# NSS and NSPR libraries) removed:
@@ -30,15 +30,14 @@
'conditions': [[ 'dart_io_support==1', {
'targets': [
{
- 'target_name': 'libssl_dart',
+ 'target_name': 'libssl_dart', # Added by Dart (the _dart postfix)
'type': 'static_library',
# Changed by Dart: '<(ssl_directory)/' added to all paths.
'sources': [
'<(ssl_directory)/ssl/authcert.c',
'<(ssl_directory)/ssl/cmpcert.c',
'<(ssl_directory)/ssl/derive.c',
- '<(ssl_directory)/ssl/dtls1con.c',
- '<(ssl_directory)/ssl/nsskea.c',
+ '<(ssl_directory)/ssl/dtlscon.c',
'<(ssl_directory)/ssl/os2_err.c',
'<(ssl_directory)/ssl/os2_err.h',
'<(ssl_directory)/ssl/preenc.h',
@@ -77,7 +76,9 @@
'<(ssl_directory)/ssl/unix_err.h',
'<(ssl_directory)/ssl/win32err.c',
'<(ssl_directory)/ssl/win32err.h',
+ # Changed by Dart: All files under '<(ssl_directory)/ssl/bodge' removed.
],
+ # Changed by Dart: '<(ssl_directory)/' added to all paths.
'sources!': [
'<(ssl_directory)/ssl/os2_err.c',
'<(ssl_directory)/ssl/os2_err.h',
@@ -92,14 +93,15 @@
'NO_NSPR_10_SUPPORT',
],
'dependencies': [
- 'zlib.gyp:zlib_dart',
+ # Changed by Dart.
+ 'zlib.gyp:zlib_dart', # Added by Dart (the _dart postfix)
# Dart: Start of copy of code from 'bodge' conditions section below.
- 'nss.gyp:nspr_dart',
- 'nss.gyp:nss_dart',
+ 'nss.gyp:nspr_dart', # Added by Dart (the _dart postfix)
+ 'nss.gyp:nss_dart', # Added by Dart (the _dart postfix)
],
'export_dependent_settings': [
- 'nss.gyp:nspr_dart',
- 'nss.gyp:nss_dart',
+ 'nss.gyp:nspr_dart', # Added by Dart (the _dart postfix)
+ 'nss.gyp:nss_dart', # Added by Dart (the _dart postfix)
],
'direct_dependent_settings': {
'include_dirs': [
diff --git a/runtime/bin/net/zlib.gyp b/runtime/bin/net/zlib.gyp
index e2dcd3f..99bca0f 100644
--- a/runtime/bin/net/zlib.gyp
+++ b/runtime/bin/net/zlib.gyp
@@ -7,7 +7,7 @@
# BSD-style license that can be found in the LICENSE file.
# This file is a modified copy of src/third_party/zlib/zlib.gyp from Chromium.
-# Revision 165464 (this should agree with "nss_rev" in DEPS).
+# Revision 169195 (this should agree with "nss_rev" in DEPS).
{
# Added by Dart. All Dart comments refer to the following block or line.
'includes': [
@@ -33,7 +33,7 @@
'conditions': [[ 'dart_io_support==1', {
'targets': [
{
- 'target_name': 'zlib_dart',
+ 'target_name': 'zlib_dart', # Added by Dart (the _dart postfix)
'type': 'static_library',
'conditions': [
['use_system_zlib==0', {
@@ -96,7 +96,7 @@
],
},
{
- 'target_name': 'minizip_dart',
+ 'target_name': 'minizip_dart', # Added by Dart (the _dart postfix)
'type': 'static_library',
'conditions': [
['use_system_minizip==0', {
diff --git a/runtime/bin/platform_win.cc b/runtime/bin/platform_win.cc
index 0af539d..750caa6 100644
--- a/runtime/bin/platform_win.cc
+++ b/runtime/bin/platform_win.cc
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
#include "bin/platform.h"
+#include "bin/log.h"
#include "bin/socket.h"
bool Platform::Initialize() {
@@ -73,7 +74,7 @@
NULL);
if (message_size == 0) {
if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
- fprintf(stderr, "FormatMessage failed %d\n", GetLastError());
+ Log::PrintErr("FormatMessage failed %d\n", GetLastError());
}
snprintf(error, kBufferSize, "OS Error %d", error_code);
}
diff --git a/runtime/bin/process_android.cc b/runtime/bin/process_android.cc
index c834988..3d593e2 100644
--- a/runtime/bin/process_android.cc
+++ b/runtime/bin/process_android.cc
@@ -15,6 +15,7 @@
#include <unistd.h>
#include "bin/fdutils.h"
+#include "bin/log.h"
#include "bin/thread.h"
@@ -326,16 +327,15 @@
bool initialized = ExitCodeHandler::EnsureInitialized();
if (!initialized) {
SetChildOsErrorMessage(os_error_message, os_error_message_len);
- fprintf(stderr,
- "Error initializing exit code handler: %s\n",
- os_error_message);
+ Log::PrintErr("Error initializing exit code handler: %s\n",
+ os_error_message);
return errno;
}
result = TEMP_FAILURE_RETRY(pipe(read_in));
if (result < 0) {
SetChildOsErrorMessage(os_error_message, os_error_message_len);
- fprintf(stderr, "Error pipe creation failed: %s\n", os_error_message);
+ Log::PrintErr("Error pipe creation failed: %s\n", os_error_message);
return errno;
}
@@ -344,7 +344,7 @@
SetChildOsErrorMessage(os_error_message, os_error_message_len);
TEMP_FAILURE_RETRY(close(read_in[0]));
TEMP_FAILURE_RETRY(close(read_in[1]));
- fprintf(stderr, "Error pipe creation failed: %s\n", os_error_message);
+ Log::PrintErr("Error pipe creation failed: %s\n", os_error_message);
return errno;
}
@@ -355,7 +355,7 @@
TEMP_FAILURE_RETRY(close(read_in[1]));
TEMP_FAILURE_RETRY(close(read_err[0]));
TEMP_FAILURE_RETRY(close(read_err[1]));
- fprintf(stderr, "Error pipe creation failed: %s\n", os_error_message);
+ Log::PrintErr("Error pipe creation failed: %s\n", os_error_message);
return errno;
}
@@ -368,7 +368,7 @@
TEMP_FAILURE_RETRY(close(read_err[1]));
TEMP_FAILURE_RETRY(close(write_out[0]));
TEMP_FAILURE_RETRY(close(write_out[1]));
- fprintf(stderr, "Error pipe creation failed: %s\n", os_error_message);
+ Log::PrintErr("Error pipe creation failed: %s\n", os_error_message);
return errno;
}
@@ -387,7 +387,7 @@
TEMP_FAILURE_RETRY(close(write_out[1]));
TEMP_FAILURE_RETRY(close(exec_control[0]));
TEMP_FAILURE_RETRY(close(exec_control[1]));
- fprintf(stderr, "fcntl failed: %s\n", os_error_message);
+ Log::PrintErr("fcntl failed: %s\n", os_error_message);
return errno;
}
@@ -488,7 +488,7 @@
TEMP_FAILURE_RETRY(close(read_err[1]));
TEMP_FAILURE_RETRY(close(write_out[0]));
TEMP_FAILURE_RETRY(close(write_out[1]));
- fprintf(stderr, "Error pipe creation failed: %s\n", os_error_message);
+ Log::PrintErr("Error pipe creation failed: %s\n", os_error_message);
return errno;
}
diff --git a/runtime/bin/process_linux.cc b/runtime/bin/process_linux.cc
index ffc5c88..bd4ed87 100644
--- a/runtime/bin/process_linux.cc
+++ b/runtime/bin/process_linux.cc
@@ -15,6 +15,7 @@
#include <unistd.h>
#include "bin/fdutils.h"
+#include "bin/log.h"
#include "bin/thread.h"
extern char **environ;
@@ -327,7 +328,7 @@
bool initialized = ExitCodeHandler::EnsureInitialized();
if (!initialized) {
SetChildOsErrorMessage(os_error_message, os_error_message_len);
- fprintf(stderr,
+ Log::PrintErr(
"Error initializing exit code handler: %s\n",
os_error_message);
return errno;
@@ -336,7 +337,7 @@
result = TEMP_FAILURE_RETRY(pipe(read_in));
if (result < 0) {
SetChildOsErrorMessage(os_error_message, os_error_message_len);
- fprintf(stderr, "Error pipe creation failed: %s\n", os_error_message);
+ Log::PrintErr("Error pipe creation failed: %s\n", os_error_message);
return errno;
}
@@ -345,7 +346,7 @@
SetChildOsErrorMessage(os_error_message, os_error_message_len);
TEMP_FAILURE_RETRY(close(read_in[0]));
TEMP_FAILURE_RETRY(close(read_in[1]));
- fprintf(stderr, "Error pipe creation failed: %s\n", os_error_message);
+ Log::PrintErr("Error pipe creation failed: %s\n", os_error_message);
return errno;
}
@@ -356,7 +357,7 @@
TEMP_FAILURE_RETRY(close(read_in[1]));
TEMP_FAILURE_RETRY(close(read_err[0]));
TEMP_FAILURE_RETRY(close(read_err[1]));
- fprintf(stderr, "Error pipe creation failed: %s\n", os_error_message);
+ Log::PrintErr("Error pipe creation failed: %s\n", os_error_message);
return errno;
}
@@ -369,7 +370,7 @@
TEMP_FAILURE_RETRY(close(read_err[1]));
TEMP_FAILURE_RETRY(close(write_out[0]));
TEMP_FAILURE_RETRY(close(write_out[1]));
- fprintf(stderr, "Error pipe creation failed: %s\n", os_error_message);
+ Log::PrintErr("Error pipe creation failed: %s\n", os_error_message);
return errno;
}
@@ -388,7 +389,7 @@
TEMP_FAILURE_RETRY(close(write_out[1]));
TEMP_FAILURE_RETRY(close(exec_control[0]));
TEMP_FAILURE_RETRY(close(exec_control[1]));
- fprintf(stderr, "fcntl failed: %s\n", os_error_message);
+ Log::PrintErr("fcntl failed: %s\n", os_error_message);
return errno;
}
@@ -487,7 +488,7 @@
TEMP_FAILURE_RETRY(close(read_err[1]));
TEMP_FAILURE_RETRY(close(write_out[0]));
TEMP_FAILURE_RETRY(close(write_out[1]));
- fprintf(stderr, "Error pipe creation failed: %s\n", os_error_message);
+ Log::PrintErr("Error pipe creation failed: %s\n", os_error_message);
return errno;
}
diff --git a/runtime/bin/process_macos.cc b/runtime/bin/process_macos.cc
index 11aac9f..aa15940 100644
--- a/runtime/bin/process_macos.cc
+++ b/runtime/bin/process_macos.cc
@@ -14,6 +14,7 @@
#include <unistd.h>
#include "bin/fdutils.h"
+#include "bin/log.h"
#include "bin/thread.h"
extern char **environ;
@@ -326,16 +327,15 @@
bool initialized = ExitCodeHandler::EnsureInitialized();
if (!initialized) {
SetChildOsErrorMessage(os_error_message, os_error_message_len);
- fprintf(stderr,
- "Error initializing exit code handler: %s\n",
- os_error_message);
+ Log::PrintErr("Error initializing exit code handler: %s\n",
+ os_error_message);
return errno;
}
result = TEMP_FAILURE_RETRY(pipe(read_in));
if (result < 0) {
SetChildOsErrorMessage(os_error_message, os_error_message_len);
- fprintf(stderr, "Error pipe creation failed: %s\n", os_error_message);
+ Log::PrintErr("Error pipe creation failed: %s\n", os_error_message);
return errno;
}
@@ -344,7 +344,7 @@
SetChildOsErrorMessage(os_error_message, os_error_message_len);
TEMP_FAILURE_RETRY(close(read_in[0]));
TEMP_FAILURE_RETRY(close(read_in[1]));
- fprintf(stderr, "Error pipe creation failed: %s\n", os_error_message);
+ Log::PrintErr("Error pipe creation failed: %s\n", os_error_message);
return errno;
}
@@ -355,7 +355,7 @@
TEMP_FAILURE_RETRY(close(read_in[1]));
TEMP_FAILURE_RETRY(close(read_err[0]));
TEMP_FAILURE_RETRY(close(read_err[1]));
- fprintf(stderr, "Error pipe creation failed: %s\n", os_error_message);
+ Log::PrintErr("Error pipe creation failed: %s\n", os_error_message);
return errno;
}
@@ -368,7 +368,7 @@
TEMP_FAILURE_RETRY(close(read_err[1]));
TEMP_FAILURE_RETRY(close(write_out[0]));
TEMP_FAILURE_RETRY(close(write_out[1]));
- fprintf(stderr, "Error pipe creation failed: %s\n", os_error_message);
+ Log::PrintErr("Error pipe creation failed: %s\n", os_error_message);
return errno;
}
@@ -387,7 +387,7 @@
TEMP_FAILURE_RETRY(close(write_out[1]));
TEMP_FAILURE_RETRY(close(exec_control[0]));
TEMP_FAILURE_RETRY(close(exec_control[1]));
- fprintf(stderr, "fcntl failed: %s\n", os_error_message);
+ Log::PrintErr("fcntl failed: %s\n", os_error_message);
return errno;
}
@@ -486,7 +486,7 @@
TEMP_FAILURE_RETRY(close(read_err[1]));
TEMP_FAILURE_RETRY(close(write_out[0]));
TEMP_FAILURE_RETRY(close(write_out[1]));
- fprintf(stderr, "Error pipe creation failed: %s\n", os_error_message);
+ Log::PrintErr("Error pipe creation failed: %s\n", os_error_message);
return errno;
}
diff --git a/runtime/bin/process_win.cc b/runtime/bin/process_win.cc
index 3094176..0a9eb52 100644
--- a/runtime/bin/process_win.cc
+++ b/runtime/bin/process_win.cc
@@ -7,6 +7,7 @@
#include "bin/builtin.h"
#include "bin/process.h"
#include "bin/eventhandler.h"
+#include "bin/log.h"
#include "bin/thread.h"
#include "bin/utils.h"
#include "platform/globals.h"
@@ -221,7 +222,7 @@
NULL);
if (handles[kWriteHandle] == INVALID_HANDLE_VALUE) {
- fprintf(stderr, "CreateNamedPipe failed %d\n", GetLastError());
+ Log::PrintErr("CreateNamedPipe failed %d\n", GetLastError());
return false;
}
@@ -234,7 +235,7 @@
FILE_READ_ATTRIBUTES | FILE_FLAG_OVERLAPPED,
NULL);
if (handles[kReadHandle] == INVALID_HANDLE_VALUE) {
- fprintf(stderr, "CreateFile failed %d\n", GetLastError());
+ Log::PrintErr("CreateFile failed %d\n", GetLastError());
return false;
}
} else {
@@ -250,7 +251,7 @@
NULL);
if (handles[kReadHandle] == INVALID_HANDLE_VALUE) {
- fprintf(stderr, "CreateNamedPipe failed %d\n", GetLastError());
+ Log::PrintErr("CreateNamedPipe failed %d\n", GetLastError());
return false;
}
@@ -263,7 +264,7 @@
FILE_WRITE_ATTRIBUTES | FILE_FLAG_OVERLAPPED,
NULL);
if (handles[kWriteHandle] == INVALID_HANDLE_VALUE) {
- fprintf(stderr, "CreateFile failed %d\n", GetLastError());
+ Log::PrintErr("CreateFile failed %d\n", GetLastError());
return false;
}
}
@@ -275,7 +276,7 @@
for (int i = kReadHandle; i < kWriteHandle; i++) {
if (handles[i] != INVALID_HANDLE_VALUE) {
if (!CloseHandle(handles[i])) {
- fprintf(stderr, "CloseHandle failed %d\n", GetLastError());
+ Log::PrintErr("CloseHandle failed %d\n", GetLastError());
}
handles[i] = INVALID_HANDLE_VALUE;
}
@@ -306,7 +307,7 @@
NULL);
if (message_size == 0) {
if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
- fprintf(stderr, "FormatMessage failed %d\n", GetLastError());
+ Log::PrintErr("FormatMessage failed %d\n", GetLastError());
}
snprintf(os_error_message, os_error_message_len, "OS Error %d", error_code);
}
@@ -338,14 +339,14 @@
UUID uuid;
RPC_STATUS status = UuidCreateSequential(&uuid);
if (status != RPC_S_OK && status != RPC_S_UUID_LOCAL_ONLY) {
- fprintf(stderr, "UuidCreateSequential failed %d\n", status);
+ Log::PrintErr("UuidCreateSequential failed %d\n", status);
SetOsErrorMessage(os_error_message, os_error_message_len);
return status;
}
RPC_CSTR uuid_string;
status = UuidToString(&uuid, &uuid_string);
if (status != RPC_S_OK) {
- fprintf(stderr, "UuidToString failed %d\n", status);
+ Log::PrintErr("UuidToString failed %d\n", status);
SetOsErrorMessage(os_error_message, os_error_message_len);
return status;
}
@@ -357,7 +358,7 @@
}
status = RpcStringFree(&uuid_string);
if (status != RPC_S_OK) {
- fprintf(stderr, "RpcStringFree failed %d\n", status);
+ Log::PrintErr("RpcStringFree failed %d\n", status);
SetOsErrorMessage(os_error_message, os_error_message_len);
return status;
}
diff --git a/runtime/bin/run_vm_tests.cc b/runtime/bin/run_vm_tests.cc
index f539d31..d73b046 100644
--- a/runtime/bin/run_vm_tests.cc
+++ b/runtime/bin/run_vm_tests.cc
@@ -138,8 +138,8 @@
bool set_vm_flags_success = Flags::ProcessCommandLineFlags(dart_argc,
dart_argv);
ASSERT(set_vm_flags_success);
- bool init_success = Dart::InitOnce(NULL, NULL, NULL);
- ASSERT(init_success);
+ const char* err_msg = Dart::InitOnce(NULL, NULL, NULL);
+ ASSERT(err_msg == NULL);
// Apply the filter to all registered tests.
TestCaseBase::RunAll();
// Apply the filter to all registered benchmarks.
diff --git a/runtime/bin/secure_socket.cc b/runtime/bin/secure_socket.cc
new file mode 100644
index 0000000..f297aed
--- /dev/null
+++ b/runtime/bin/secure_socket.cc
@@ -0,0 +1,484 @@
+// Copyright (c) 2012, 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.
+
+#include "bin/secure_socket.h"
+
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <nss.h>
+#include <pk11pub.h>
+#include <prerror.h>
+#include <prinit.h>
+#include <prnetdb.h>
+#include <ssl.h>
+#include <sslproto.h>
+
+#include "bin/builtin.h"
+#include "bin/dartutils.h"
+#include "bin/net/nss_memio.h"
+#include "bin/thread.h"
+#include "bin/utils.h"
+#include "platform/utils.h"
+
+#include "include/dart_api.h"
+
+bool SSLFilter::library_initialized_ = false;
+dart::Mutex SSLFilter::mutex_; // To protect library initialization.
+// The password is needed when creating secure server sockets. It can
+// be null if only secure client sockets are used.
+const char* SSLFilter::password_ = NULL;
+
+static const int kSSLFilterNativeFieldIndex = 0;
+
+static SSLFilter* GetFilter(Dart_NativeArguments args) {
+ SSLFilter* filter;
+ Dart_Handle dart_this = ThrowIfError(Dart_GetNativeArgument(args, 0));
+ ASSERT(Dart_IsInstance(dart_this));
+ ThrowIfError(Dart_GetNativeInstanceField(
+ dart_this,
+ kSSLFilterNativeFieldIndex,
+ reinterpret_cast<intptr_t*>(&filter)));
+ return filter;
+}
+
+
+static void SetFilter(Dart_NativeArguments args, SSLFilter* filter) {
+ Dart_Handle dart_this = ThrowIfError(Dart_GetNativeArgument(args, 0));
+ ASSERT(Dart_IsInstance(dart_this));
+ ThrowIfError(Dart_SetNativeInstanceField(
+ dart_this,
+ kSSLFilterNativeFieldIndex,
+ reinterpret_cast<intptr_t>(filter)));
+}
+
+
+void FUNCTION_NAME(SecureSocket_Init)(Dart_NativeArguments args) {
+ Dart_EnterScope();
+ Dart_Handle dart_this = ThrowIfError(Dart_GetNativeArgument(args, 0));
+ SSLFilter* filter = new SSLFilter;
+ SetFilter(args, filter);
+ filter->Init(dart_this);
+ Dart_ExitScope();
+}
+
+
+void FUNCTION_NAME(SecureSocket_Connect)(Dart_NativeArguments args) {
+ Dart_EnterScope();
+ Dart_Handle host_name_object = ThrowIfError(Dart_GetNativeArgument(args, 1));
+ Dart_Handle port_object = ThrowIfError(Dart_GetNativeArgument(args, 2));
+ Dart_Handle is_server_object = ThrowIfError(Dart_GetNativeArgument(args, 3));
+ Dart_Handle certificate_name_object =
+ ThrowIfError(Dart_GetNativeArgument(args, 4));
+
+ const char* host_name = NULL;
+ // TODO(whesse): Is truncating a Dart string containing \0 what we want?
+ ThrowIfError(Dart_StringToCString(host_name_object, &host_name));
+
+ int64_t port;
+ if (!DartUtils::GetInt64Value(port_object, &port) ||
+ port < 0 || port > 65535) {
+ Dart_ThrowException(DartUtils::NewDartArgumentError(
+ "Illegal port parameter in _SSLFilter.connect"));
+ }
+
+ if (!Dart_IsBoolean(is_server_object)) {
+ Dart_ThrowException(DartUtils::NewDartArgumentError(
+ "Illegal is_server parameter in _SSLFilter.connect"));
+ }
+ bool is_server = DartUtils::GetBooleanValue(is_server_object);
+
+ const char* certificate_name = NULL;
+ // If this is a server connection, get the certificate to connect with.
+ // TODO(whesse): Use this parameter for a client certificate as well.
+ if (is_server) {
+ if (!Dart_IsString(certificate_name_object)) {
+ Dart_ThrowException(DartUtils::NewDartArgumentError(
+ "Non-String certificate parameter in _SSLFilter.connect"));
+ }
+ ThrowIfError(Dart_StringToCString(certificate_name_object,
+ &certificate_name));
+ }
+
+ GetFilter(args)->Connect(host_name,
+ static_cast<int>(port),
+ is_server,
+ certificate_name);
+ Dart_ExitScope();
+}
+
+
+void FUNCTION_NAME(SecureSocket_Destroy)(Dart_NativeArguments args) {
+ Dart_EnterScope();
+ SSLFilter* filter = GetFilter(args);
+ SetFilter(args, NULL);
+ filter->Destroy();
+ delete filter;
+ Dart_ExitScope();
+}
+
+
+void FUNCTION_NAME(SecureSocket_Handshake)(Dart_NativeArguments args) {
+ Dart_EnterScope();
+ GetFilter(args)->Handshake();
+ Dart_ExitScope();
+}
+
+
+void FUNCTION_NAME(SecureSocket_RegisterHandshakeCompleteCallback)(
+ Dart_NativeArguments args) {
+ Dart_EnterScope();
+ Dart_Handle handshake_complete =
+ ThrowIfError(Dart_GetNativeArgument(args, 1));
+ if (!Dart_IsClosure(handshake_complete)) {
+ Dart_ThrowException(DartUtils::NewDartArgumentError(
+ "Illegal argument to RegisterHandshakeCompleteCallback"));
+ }
+ GetFilter(args)->RegisterHandshakeCompleteCallback(handshake_complete);
+ Dart_ExitScope();
+}
+
+
+void FUNCTION_NAME(SecureSocket_ProcessBuffer)(Dart_NativeArguments args) {
+ Dart_EnterScope();
+ Dart_Handle buffer_id_object = ThrowIfError(Dart_GetNativeArgument(args, 1));
+ int64_t buffer_id = DartUtils::GetIntegerValue(buffer_id_object);
+ if (buffer_id < 0 || buffer_id >= SSLFilter::kNumBuffers) {
+ Dart_ThrowException(DartUtils::NewDartArgumentError(
+ "Illegal argument to ProcessBuffer"));
+ }
+
+ intptr_t bytes_read =
+ GetFilter(args)->ProcessBuffer(static_cast<int>(buffer_id));
+ Dart_SetReturnValue(args, Dart_NewInteger(bytes_read));
+ Dart_ExitScope();
+}
+
+
+void FUNCTION_NAME(SecureSocket_SetCertificateDatabase)
+ (Dart_NativeArguments args) {
+ Dart_EnterScope();
+ Dart_Handle certificate_database_object =
+ ThrowIfError(Dart_GetNativeArgument(args, 0));
+ // Check that the type is string, and get the UTF-8 C string value from it.
+ const char* certificate_database = NULL;
+ if (Dart_IsString(certificate_database_object)) {
+ ThrowIfError(Dart_StringToCString(certificate_database_object,
+ &certificate_database));
+ } else {
+ Dart_ThrowException(DartUtils::NewDartArgumentError(
+ "Non-String certificate directory argument to SetCertificateDatabase"));
+ }
+
+ Dart_Handle password_object = ThrowIfError(Dart_GetNativeArgument(args, 1));
+ // Check that the type is string or null,
+ // and get the UTF-8 C string value from it.
+ const char* password = NULL;
+ if (Dart_IsString(password_object)) {
+ ThrowIfError(Dart_StringToCString(password_object, &password));
+ } else if (Dart_IsNull(password_object)) {
+ // Pass the empty string as the password.
+ password = "";
+ } else {
+ Dart_ThrowException(DartUtils::NewDartArgumentError(
+ "Password argument to SetCertificateDatabase is not a String or null"));
+ }
+
+ SSLFilter::InitializeLibrary(certificate_database, password);
+ Dart_ExitScope();
+}
+
+
+void SSLFilter::Init(Dart_Handle dart_this) {
+ string_start_ = ThrowIfError(
+ Dart_NewPersistentHandle(DartUtils::NewString("start")));
+ string_length_ = ThrowIfError(
+ Dart_NewPersistentHandle(DartUtils::NewString("length")));
+
+ InitializeBuffers(dart_this);
+ filter_ = memio_CreateIOLayer(kMemioBufferSize);
+}
+
+
+void SSLFilter::InitializeBuffers(Dart_Handle dart_this) {
+ // Create SSLFilter buffers as ExternalUint8Array objects.
+ Dart_Handle dart_buffers_object = ThrowIfError(
+ Dart_GetField(dart_this, DartUtils::NewString("buffers")));
+ Dart_Handle dart_buffer_object =
+ Dart_ListGetAt(dart_buffers_object, kReadPlaintext);
+ Dart_Handle external_buffer_class =
+ Dart_InstanceGetClass(dart_buffer_object);
+ Dart_Handle dart_buffer_size = ThrowIfError(
+ Dart_GetField(external_buffer_class, DartUtils::NewString("SIZE")));
+ buffer_size_ = DartUtils::GetIntegerValue(dart_buffer_size);
+ if (buffer_size_ <= 0 || buffer_size_ > 1024 * 1024) {
+ Dart_ThrowException(
+ DartUtils::NewString("Invalid buffer size in _ExternalBuffer"));
+ }
+
+ Dart_Handle data_identifier = DartUtils::NewString("data");
+ for (int i = 0; i < kNumBuffers; ++i) {
+ dart_buffer_objects_[i] = ThrowIfError(
+ Dart_NewPersistentHandle(Dart_ListGetAt(dart_buffers_object, i)));
+ buffers_[i] = new uint8_t[buffer_size_];
+ Dart_Handle data = ThrowIfError(
+ Dart_NewExternalByteArray(buffers_[i], buffer_size_, NULL, NULL));
+ ThrowIfError(Dart_SetField(dart_buffer_objects_[i],
+ data_identifier,
+ data));
+ }
+}
+
+
+void SSLFilter::RegisterHandshakeCompleteCallback(Dart_Handle complete) {
+ ASSERT(NULL == handshake_complete_);
+ handshake_complete_ = ThrowIfError(Dart_NewPersistentHandle(complete));
+}
+
+
+void SSLFilter::InitializeLibrary(const char* certificate_database,
+ const char* password) {
+ MutexLocker locker(&mutex_);
+ if (!library_initialized_) {
+ library_initialized_ = true;
+ password_ = strdup(password); // This one copy persists until Dart exits.
+ PR_Init(PR_USER_THREAD, PR_PRIORITY_NORMAL, 0);
+ // TODO(whesse): Verify there are no UTF-8 issues here.
+ SECStatus status = NSS_Init(certificate_database);
+ if (status != SECSuccess) {
+ ThrowPRException("Unsuccessful NSS_Init call.");
+ }
+
+ status = NSS_SetDomesticPolicy();
+ if (status != SECSuccess) {
+ ThrowPRException("Unsuccessful NSS_SetDomesticPolicy call.");
+ }
+ // Enable TLS, as well as SSL3 and SSL2.
+ status = SSL_OptionSetDefault(SSL_ENABLE_TLS, PR_TRUE);
+ if (status != SECSuccess) {
+ ThrowPRException("Unsuccessful SSL_OptionSetDefault enable TLS call.");
+ }
+ } else {
+ ThrowException("Called SSLFilter::InitializeLibrary more than once");
+ }
+}
+
+char* PasswordCallback(PK11SlotInfo* slot, PRBool retry, void* arg) {
+ if (!retry) {
+ return PL_strdup(static_cast<char*>(arg)); // Freed by NSS internals.
+ }
+ return NULL;
+}
+
+void SSLFilter::Connect(const char* host_name,
+ int port,
+ bool is_server,
+ const char* certificate_name) {
+ is_server_ = is_server;
+ if (in_handshake_) {
+ ThrowException("Connect called while already in handshake state.");
+ }
+
+ filter_ = SSL_ImportFD(NULL, filter_);
+ if (filter_ == NULL) {
+ ThrowPRException("Unsuccessful SSL_ImportFD call");
+ }
+
+ SECStatus status;
+ if (is_server) {
+ PK11_SetPasswordFunc(PasswordCallback);
+ CERTCertDBHandle* certificate_database = CERT_GetDefaultCertDB();
+ if (certificate_database == NULL) {
+ ThrowPRException("Certificate database cannot be loaded");
+ }
+ CERTCertificate* certificate = CERT_FindCertByNameString(
+ certificate_database,
+ const_cast<char*>(certificate_name));
+ if (certificate == NULL) {
+ ThrowPRException("Cannot find server certificate by name");
+ }
+ SECKEYPrivateKey* key = PK11_FindKeyByAnyCert(
+ certificate,
+ static_cast<void*>(const_cast<char*>(password_)));
+ if (key == NULL) {
+ if (PR_GetError() == -8177) {
+ ThrowPRException("Certificate database password incorrect");
+ } else {
+ ThrowPRException("Unsuccessful PK11_FindKeyByAnyCert call."
+ " Cannot find private key for certificate");
+ }
+ }
+ // kt_rsa (key type RSA) is an enum constant from the NSS libraries.
+ // TODO(whesse): Allow different key types.
+ status = SSL_ConfigSecureServer(filter_, certificate, key, kt_rsa);
+ if (status != SECSuccess) {
+ ThrowPRException("Unsuccessful SSL_ConfigSecureServer call");
+ }
+ } else { // Client.
+ if (SSL_SetURL(filter_, host_name) == -1) {
+ ThrowPRException("Unsuccessful SetURL call");
+ }
+ }
+
+ PRBool as_server = is_server ? PR_TRUE : PR_FALSE; // Convert bool to PRBool.
+ status = SSL_ResetHandshake(filter_, as_server);
+ if (status != SECSuccess) {
+ ThrowPRException("Unsuccessful SSL_ResetHandshake call");
+ }
+
+ // SetPeerAddress
+ PRNetAddr host_address;
+ char host_entry_buffer[PR_NETDB_BUF_SIZE];
+ PRHostEnt host_entry;
+ PRStatus rv = PR_GetHostByName(host_name, host_entry_buffer,
+ PR_NETDB_BUF_SIZE, &host_entry);
+ if (rv != PR_SUCCESS) {
+ ThrowPRException("Unsuccessful PR_GetHostByName call");
+ }
+
+ int index = PR_EnumerateHostEnt(0, &host_entry, port, &host_address);
+ if (index == -1 || index == 0) {
+ ThrowPRException("Unsuccessful PR_EnumerateHostEnt call");
+ }
+ memio_SetPeerName(filter_, &host_address);
+}
+
+
+void SSLFilter::Handshake() {
+ SECStatus status = SSL_ForceHandshake(filter_);
+ if (status == SECSuccess) {
+ if (in_handshake_) {
+ ThrowIfError(Dart_InvokeClosure(handshake_complete_, 0, NULL));
+ in_handshake_ = false;
+ }
+ } else {
+ PRErrorCode error = PR_GetError();
+ if (error == PR_WOULD_BLOCK_ERROR) {
+ if (!in_handshake_) {
+ in_handshake_ = true;
+ }
+ } else {
+ if (is_server_) {
+ ThrowPRException("Unexpected handshake error in server");
+ } else {
+ ThrowPRException("Unexpected handshake error in client");
+ }
+ }
+ }
+}
+
+
+void SSLFilter::Destroy() {
+ for (int i = 0; i < kNumBuffers; ++i) {
+ Dart_DeletePersistentHandle(dart_buffer_objects_[i]);
+ delete[] buffers_[i];
+ }
+ Dart_DeletePersistentHandle(string_start_);
+ Dart_DeletePersistentHandle(string_length_);
+ Dart_DeletePersistentHandle(handshake_complete_);
+ // TODO(whesse): Free NSS objects here.
+}
+
+
+intptr_t SSLFilter::ProcessBuffer(int buffer_index) {
+ Dart_Handle buffer_object = dart_buffer_objects_[buffer_index];
+ Dart_Handle start_object = ThrowIfError(
+ Dart_GetField(buffer_object, string_start_));
+ Dart_Handle length_object = ThrowIfError(
+ Dart_GetField(buffer_object, string_length_));
+ int64_t unsafe_start = DartUtils::GetIntegerValue(start_object);
+ int64_t unsafe_length = DartUtils::GetIntegerValue(length_object);
+ ASSERT(unsafe_start >= 0);
+ ASSERT(unsafe_start < buffer_size_);
+ ASSERT(unsafe_length >= 0);
+ ASSERT(unsafe_length <= buffer_size_);
+ intptr_t start = static_cast<intptr_t>(unsafe_start);
+ intptr_t length = static_cast<intptr_t>(unsafe_length);
+ uint8_t* buffer = buffers_[buffer_index];
+
+ int bytes_processed = 0;
+ switch (buffer_index) {
+ case kReadPlaintext: {
+ int bytes_free = buffer_size_ - start - length;
+ bytes_processed = PR_Read(filter_,
+ buffer + start + length,
+ bytes_free);
+ if (bytes_processed < 0) {
+ ASSERT(bytes_processed == -1);
+ // TODO(whesse): Handle unexpected errors here.
+ PRErrorCode pr_error = PR_GetError();
+ if (PR_WOULD_BLOCK_ERROR != pr_error) {
+ ThrowPRException("Error reading plaintext from SSLFilter");
+ }
+ bytes_processed = 0;
+ }
+ break;
+ }
+
+ case kWriteEncrypted: {
+ const uint8_t* buf1;
+ const uint8_t* buf2;
+ unsigned int len1;
+ unsigned int len2;
+ int bytes_free = buffer_size_ - start - length;
+ memio_Private* secret = memio_GetSecret(filter_);
+ memio_GetWriteParams(secret, &buf1, &len1, &buf2, &len2);
+ int bytes_to_send =
+ dart::Utils::Minimum(len1, static_cast<unsigned>(bytes_free));
+ if (bytes_to_send > 0) {
+ memmove(buffer + start + length, buf1, bytes_to_send);
+ bytes_processed = bytes_to_send;
+ }
+ bytes_to_send = dart::Utils::Minimum(len2,
+ static_cast<unsigned>(bytes_free - bytes_processed));
+ if (bytes_to_send > 0) {
+ memmove(buffer + start + length + bytes_processed, buf2,
+ bytes_to_send);
+ bytes_processed += bytes_to_send;
+ }
+ if (bytes_processed > 0) {
+ memio_PutWriteResult(secret, bytes_processed);
+ }
+ break;
+ }
+
+ case kReadEncrypted: {
+ if (length > 0) {
+ bytes_processed = length;
+ memio_Private* secret = memio_GetSecret(filter_);
+ uint8_t* filter_buf;
+ int free_bytes = memio_GetReadParams(secret, &filter_buf);
+ if (free_bytes < bytes_processed) bytes_processed = free_bytes;
+ memmove(filter_buf,
+ buffer + start,
+ bytes_processed);
+ memio_PutReadResult(secret, bytes_processed);
+ }
+ break;
+ }
+
+ case kWritePlaintext: {
+ if (length > 0) {
+ bytes_processed = PR_Write(filter_,
+ buffer + start,
+ length);
+ }
+
+ if (bytes_processed < 0) {
+ ASSERT(bytes_processed == -1);
+ // TODO(whesse): Handle unexpected errors here.
+ PRErrorCode pr_error = PR_GetError();
+ if (PR_WOULD_BLOCK_ERROR != pr_error) {
+ ThrowPRException("Error reading plaintext from SSLFilter");
+ }
+ bytes_processed = 0;
+ }
+ break;
+ }
+ }
+ return bytes_processed;
+}
diff --git a/runtime/bin/tls_socket.h b/runtime/bin/secure_socket.h
similarity index 77%
rename from runtime/bin/tls_socket.h
rename to runtime/bin/secure_socket.h
index fc39b70..22ef7dc 100644
--- a/runtime/bin/tls_socket.h
+++ b/runtime/bin/secure_socket.h
@@ -2,8 +2,8 @@
// 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.
-#ifndef BIN_TLS_SOCKET_H_
-#define BIN_TLS_SOCKET_H_
+#ifndef BIN_SECURE_SOCKET_H_
+#define BIN_SECURE_SOCKET_H_
#include <stdlib.h>
#include <string.h>
@@ -44,15 +44,15 @@
}
/*
- * TlsFilter encapsulates the NSS SSL(TLS) code in a filter, that communicates
- * with the containing _TlsFilterImpl Dart object through four shared
+ * SSLFilter encapsulates the NSS SSL(TLS) code in a filter, that communicates
+ * with the containing _SecureFilterImpl Dart object through four shared
* ExternalByteArray buffers, for reading and writing plaintext, and
* reading and writing encrypted text. The filter handles handshaking
* and certificate verification.
*/
-class TlsFilter {
+class SSLFilter {
public:
- // These enums must agree with those in sdk/lib/io/tls_socket.dart.
+ // These enums must agree with those in sdk/lib/io/secure_socket.dart.
enum BufferIndex {
kReadPlaintext,
kWritePlaintext,
@@ -61,26 +61,30 @@
kNumBuffers
};
- TlsFilter()
+ SSLFilter()
: string_start_(NULL),
string_length_(NULL),
handshake_complete_(NULL),
in_handshake_(false),
- memio_(NULL) { }
+ filter_(NULL) { }
void Init(Dart_Handle dart_this);
- void Connect(const char* host, int port);
+ void Connect(const char* host,
+ int port,
+ bool is_server,
+ const char* certificate_name);
void Destroy();
- void DestroyPlatformIndependent();
void Handshake();
void RegisterHandshakeCompleteCallback(Dart_Handle handshake_complete);
- static void InitializeLibrary(const char* pkcert_directory);
+ static void InitializeLibrary(const char* certificate_database,
+ const char* password);
intptr_t ProcessBuffer(int bufferIndex);
private:
static const int kMemioBufferSize = 20 * KB;
static bool library_initialized_;
+ static const char* password_;
static dart::Mutex mutex_; // To protect library initialization.
uint8_t* buffers_[kNumBuffers];
@@ -90,12 +94,13 @@
Dart_Handle dart_buffer_objects_[kNumBuffers];
Dart_Handle handshake_complete_;
bool in_handshake_;
- PRFileDesc* memio_;
+ bool is_server_;
+ PRFileDesc* filter_;
void InitializeBuffers(Dart_Handle dart_this);
void InitializePlatformData();
- DISALLOW_COPY_AND_ASSIGN(TlsFilter);
+ DISALLOW_COPY_AND_ASSIGN(SSLFilter);
};
-#endif // BIN_TLS_SOCKET_H_
+#endif // BIN_SECURE_SOCKET_H_
diff --git a/runtime/bin/secure_socket_patch.dart b/runtime/bin/secure_socket_patch.dart
new file mode 100644
index 0000000..34edc7e
--- /dev/null
+++ b/runtime/bin/secure_socket_patch.dart
@@ -0,0 +1,58 @@
+// Copyright (c) 2012, 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.
+
+patch class SecureSocket {
+ /* patch */ static void setCertificateDatabase(String certificateDatabase,
+ [String password])
+ native "SecureSocket_SetCertificateDatabase";
+}
+
+
+patch class _SecureFilter {
+ /* patch */ factory _SecureFilter() => new _SecureFilterImpl();
+}
+
+
+/**
+ * _SecureFilterImpl wraps a filter that encrypts and decrypts data travelling
+ * over an encrypted socket. The filter also handles the handshaking
+ * and certificate verification.
+ *
+ * The filter exposes its input and output buffers as Dart objects that
+ * are backed by an external C array of bytes, so that both Dart code and
+ * native code can access the same data.
+ */
+class _SecureFilterImpl
+ extends NativeFieldWrapperClass1
+ implements _SecureFilter {
+ _SecureFilterImpl() {
+ buffers = new List<_ExternalBuffer>(_SecureSocket.NUM_BUFFERS);
+ for (int i = 0; i < _SecureSocket.NUM_BUFFERS; ++i) {
+ buffers[i] = new _ExternalBuffer();
+ }
+ }
+
+ void connect(String hostName,
+ int port,
+ bool is_server,
+ String certificate_name) native "SecureSocket_Connect";
+
+ void destroy() {
+ buffers = null;
+ _destroy();
+ }
+
+ void _destroy() native "SecureSocket_Destroy";
+
+ void handshake() native "SecureSocket_Handshake";
+
+ void init() native "SecureSocket_Init";
+
+ int processBuffer(int bufferIndex) native "SecureSocket_ProcessBuffer";
+
+ void registerHandshakeCompleteCallback(Function handshakeCompleteHandler)
+ native "SecureSocket_RegisterHandshakeCompleteCallback";
+
+ List<_ExternalBuffer> buffers;
+}
diff --git a/runtime/bin/socket_android.cc b/runtime/bin/socket_android.cc
index eac7d12..cffae9f 100644
--- a/runtime/bin/socket_android.cc
+++ b/runtime/bin/socket_android.cc
@@ -8,8 +8,9 @@
#include <string.h>
#include <unistd.h>
-#include "bin/fdutils.h"
#include "bin/socket.h"
+#include "bin/fdutils.h"
+#include "bin/log.h"
bool Socket::Initialize() {
@@ -25,7 +26,7 @@
fd = TEMP_FAILURE_RETRY(socket(AF_INET, SOCK_STREAM, 0));
if (fd < 0) {
- fprintf(stderr, "Error CreateConnect: %s\n", strerror(errno));
+ Log::PrintErr("Error CreateConnect: %s\n", strerror(errno));
return -1;
}
@@ -35,7 +36,7 @@
server = gethostbyname(host);
if (server == NULL) {
TEMP_FAILURE_RETRY(close(fd));
- fprintf(stderr, "Error CreateConnect: %s\n", strerror(errno));
+ Log::PrintErr("Error CreateConnect: %s\n", strerror(errno));
return -1;
}
@@ -93,7 +94,7 @@
getsockname(fd,
reinterpret_cast<struct sockaddr *>(&socket_address),
&size))) {
- fprintf(stderr, "Error getsockname: %s\n", strerror(errno));
+ Log::PrintErr("Error getsockname: %s\n", strerror(errno));
return 0;
}
return ntohs(socket_address.sin_port);
@@ -108,14 +109,14 @@
getpeername(fd,
reinterpret_cast<struct sockaddr *>(&socket_address),
&size))) {
- fprintf(stderr, "Error getpeername: %s\n", strerror(errno));
+ Log::PrintErr("Error getpeername: %s\n", strerror(errno));
return false;
}
if (inet_ntop(socket_address.sin_family,
reinterpret_cast<const void *>(&socket_address.sin_addr),
host,
INET_ADDRSTRLEN) == NULL) {
- fprintf(stderr, "Error inet_ntop: %s\n", strerror(errno));
+ Log::PrintErr("Error inet_ntop: %s\n", strerror(errno));
return false;
}
*port = ntohs(socket_address.sin_port);
@@ -185,7 +186,7 @@
fd = TEMP_FAILURE_RETRY(socket(AF_INET, SOCK_STREAM, 0));
if (fd < 0) {
- fprintf(stderr, "Error CreateBind: %s\n", strerror(errno));
+ Log::PrintErr("Error CreateBind: %s\n", strerror(errno));
return -1;
}
@@ -205,12 +206,12 @@
reinterpret_cast<struct sockaddr *>(&server_address),
sizeof(server_address))) < 0) {
TEMP_FAILURE_RETRY(close(fd));
- fprintf(stderr, "Error Bind: %s\n", strerror(errno));
+ Log::PrintErr("Error Bind: %s\n", strerror(errno));
return -1;
}
if (TEMP_FAILURE_RETRY(listen(fd, backlog)) != 0) {
- fprintf(stderr, "Error Listen: %s\n", strerror(errno));
+ Log::PrintErr("Error Listen: %s\n", strerror(errno));
return -1;
}
diff --git a/runtime/bin/socket_linux.cc b/runtime/bin/socket_linux.cc
index 89dd267..d8be1dc 100644
--- a/runtime/bin/socket_linux.cc
+++ b/runtime/bin/socket_linux.cc
@@ -9,6 +9,7 @@
#include <unistd.h>
#include "bin/fdutils.h"
+#include "bin/log.h"
#include "bin/socket.h"
@@ -25,7 +26,7 @@
fd = TEMP_FAILURE_RETRY(socket(AF_INET, SOCK_STREAM, 0));
if (fd < 0) {
- fprintf(stderr, "Error CreateConnect: %s\n", strerror(errno));
+ Log::PrintErr("Error CreateConnect: %s\n", strerror(errno));
return -1;
}
@@ -39,7 +40,7 @@
if (gethostbyname_r(
host, &server, temp_buf, kTempBufSize, &unused, &err) != 0) {
TEMP_FAILURE_RETRY(close(fd));
- fprintf(stderr, "Error CreateConnect: %s\n", strerror(errno));
+ Log::PrintErr("Error CreateConnect: %s\n", strerror(errno));
return -1;
}
@@ -97,7 +98,7 @@
getsockname(fd,
reinterpret_cast<struct sockaddr *>(&socket_address),
&size))) {
- fprintf(stderr, "Error getsockname: %s\n", strerror(errno));
+ Log::PrintErr("Error getsockname: %s\n", strerror(errno));
return 0;
}
return ntohs(socket_address.sin_port);
@@ -112,14 +113,14 @@
getpeername(fd,
reinterpret_cast<struct sockaddr *>(&socket_address),
&size))) {
- fprintf(stderr, "Error getpeername: %s\n", strerror(errno));
+ Log::PrintErr("Error getpeername: %s\n", strerror(errno));
return false;
}
if (inet_ntop(socket_address.sin_family,
reinterpret_cast<const void *>(&socket_address.sin_addr),
host,
INET_ADDRSTRLEN) == NULL) {
- fprintf(stderr, "Error inet_ntop: %s\n", strerror(errno));
+ Log::PrintErr("Error inet_ntop: %s\n", strerror(errno));
return false;
}
*port = ntohs(socket_address.sin_port);
@@ -188,7 +189,7 @@
fd = TEMP_FAILURE_RETRY(socket(AF_INET, SOCK_STREAM, 0));
if (fd < 0) {
- fprintf(stderr, "Error CreateBind: %s\n", strerror(errno));
+ Log::PrintErr("Error CreateBind: %s\n", strerror(errno));
return -1;
}
@@ -208,12 +209,12 @@
reinterpret_cast<struct sockaddr *>(&server_address),
sizeof(server_address))) < 0) {
TEMP_FAILURE_RETRY(close(fd));
- fprintf(stderr, "Error Bind: %s\n", strerror(errno));
+ Log::PrintErr("Error Bind: %s\n", strerror(errno));
return -1;
}
if (TEMP_FAILURE_RETRY(listen(fd, backlog)) != 0) {
- fprintf(stderr, "Error Listen: %s\n", strerror(errno));
+ Log::PrintErr("Error Listen: %s\n", strerror(errno));
return -1;
}
diff --git a/runtime/bin/socket_macos.cc b/runtime/bin/socket_macos.cc
index 32db433..275169f 100644
--- a/runtime/bin/socket_macos.cc
+++ b/runtime/bin/socket_macos.cc
@@ -9,6 +9,7 @@
#include <unistd.h>
#include "bin/fdutils.h"
+#include "bin/log.h"
#include "bin/socket.h"
@@ -25,7 +26,7 @@
fd = TEMP_FAILURE_RETRY(socket(AF_INET, SOCK_STREAM, 0));
if (fd < 0) {
- fprintf(stderr, "Error CreateConnect: %s\n", strerror(errno));
+ Log::PrintErr("Error CreateConnect: %s\n", strerror(errno));
return -1;
}
@@ -35,7 +36,7 @@
server = gethostbyname(host);
if (server == NULL) {
TEMP_FAILURE_RETRY(close(fd));
- fprintf(stderr, "Error CreateConnect: %s\n", strerror(errno));
+ Log::PrintErr("Error CreateConnect: %s\n", strerror(errno));
return -1;
}
@@ -93,7 +94,7 @@
getsockname(fd,
reinterpret_cast<struct sockaddr *>(&socket_address),
&size))) {
- fprintf(stderr, "Error getsockname: %s\n", strerror(errno));
+ Log::PrintErr("Error getsockname: %s\n", strerror(errno));
return 0;
}
return ntohs(socket_address.sin_port);
@@ -108,14 +109,14 @@
getpeername(fd,
reinterpret_cast<struct sockaddr *>(&socket_address),
&size))) {
- fprintf(stderr, "Error getpeername: %s\n", strerror(errno));
+ Log::PrintErr("Error getpeername: %s\n", strerror(errno));
return false;
}
if (inet_ntop(socket_address.sin_family,
reinterpret_cast<const void *>(&socket_address.sin_addr),
host,
INET_ADDRSTRLEN) == NULL) {
- fprintf(stderr, "Error inet_ntop: %s\n", strerror(errno));
+ Log::PrintErr("Error inet_ntop: %s\n", strerror(errno));
return false;
}
*port = ntohs(socket_address.sin_port);
@@ -184,7 +185,7 @@
fd = TEMP_FAILURE_RETRY(socket(AF_INET, SOCK_STREAM, 0));
if (fd < 0) {
- fprintf(stderr, "Error CreateBind: %s\n", strerror(errno));
+ Log::PrintErr("Error CreateBind: %s\n", strerror(errno));
return -1;
}
@@ -204,12 +205,12 @@
reinterpret_cast<struct sockaddr *>(&server_address),
sizeof(server_address))) < 0) {
TEMP_FAILURE_RETRY(close(fd));
- fprintf(stderr, "Error Bind: %s\n", strerror(errno));
+ Log::PrintErr("Error Bind: %s\n", strerror(errno));
return -1;
}
if (TEMP_FAILURE_RETRY(listen(fd, backlog)) != 0) {
- fprintf(stderr, "Error Listen: %s\n", strerror(errno));
+ Log::PrintErr("Error Listen: %s\n", strerror(errno));
return -1;
}
diff --git a/runtime/bin/socket_patch.dart b/runtime/bin/socket_patch.dart
index 7ce75d3..6e58985 100644
--- a/runtime/bin/socket_patch.dart
+++ b/runtime/bin/socket_patch.dart
@@ -239,8 +239,8 @@
bool _propagateError(Exception e) => false;
- abstract bool _isListenSocket();
- abstract bool _isPipe();
+ bool _isListenSocket();
+ bool _isPipe();
// Is this socket closed.
bool _closed;
@@ -465,7 +465,7 @@
}
void set onConnect(void callback()) {
- if (_seenFirstOutEvent || _outputStream != null) {
+ if (_seenFirstOutEvent) {
throw new StreamException(
"Cannot set connect handler when already connected");
}
@@ -509,7 +509,7 @@
if (_outputStream == null) {
if (_handlerMap[_SocketBase._OUT_EVENT] != null) {
throw new StreamException(
- "Cannot get input stream when socket handlers are used");
+ "Cannot get output stream when socket handlers are used");
}
_outputStream = new _SocketOutputStream(this);
}
diff --git a/runtime/bin/socket_win.cc b/runtime/bin/socket_win.cc
index 102f078..6e1a0bc 100644
--- a/runtime/bin/socket_win.cc
+++ b/runtime/bin/socket_win.cc
@@ -4,6 +4,7 @@
#include "bin/builtin.h"
#include "bin/eventhandler.h"
+#include "bin/log.h"
#include "bin/socket.h"
bool Socket::Initialize() {
@@ -12,7 +13,7 @@
WORD version_requested = MAKEWORD(1, 0);
err = WSAStartup(version_requested, &winsock_data);
if (err != 0) {
- fprintf(stderr, "Unable to initialize Winsock: %d\n", WSAGetLastError());
+ Log::PrintErr("Unable to initialize Winsock: %d\n", WSAGetLastError());
}
return err == 0;
}
@@ -43,7 +44,7 @@
if (getsockname(socket_handle->socket(),
reinterpret_cast<struct sockaddr *>(&socket_address),
&size)) {
- fprintf(stderr, "Error getsockname: %s\n", strerror(errno));
+ Log::PrintErr("Error getsockname: %s\n", strerror(errno));
return 0;
}
return ntohs(socket_address.sin_port);
@@ -58,7 +59,7 @@
if (getpeername(socket_handle->socket(),
reinterpret_cast<struct sockaddr *>(&socket_address),
&size)) {
- fprintf(stderr, "Error getpeername: %s\n", strerror(errno));
+ Log::PrintErr("Error getpeername: %s\n", strerror(errno));
return false;
}
*port = ntohs(socket_address.sin_port);
@@ -72,7 +73,7 @@
host,
&len);
if (err != 0) {
- fprintf(stderr, "Error WSAAddressToString: %d\n", WSAGetLastError());
+ Log::PrintErr("Error WSAAddressToString: %d\n", WSAGetLastError());
return false;
}
return true;
diff --git a/runtime/bin/tls_socket.cc b/runtime/bin/tls_socket.cc
deleted file mode 100644
index c4bc0a5..0000000
--- a/runtime/bin/tls_socket.cc
+++ /dev/null
@@ -1,385 +0,0 @@
-// Copyright (c) 2012, 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.
-
-#include "bin/tls_socket.h"
-
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <nss.h>
-#include <prerror.h>
-#include <prinit.h>
-#include <prnetdb.h>
-#include <ssl.h>
-
-#include "bin/builtin.h"
-#include "bin/dartutils.h"
-#include "bin/net/nss_memio.h"
-#include "bin/thread.h"
-#include "bin/utils.h"
-#include "platform/utils.h"
-
-#include "include/dart_api.h"
-
-bool TlsFilter::library_initialized_ = false;
-dart::Mutex TlsFilter::mutex_; // To protect library initialization.
-static const int kTlsFilterNativeFieldIndex = 0;
-
-static TlsFilter* GetTlsFilter(Dart_NativeArguments args) {
- TlsFilter* filter;
- Dart_Handle dart_this = ThrowIfError(Dart_GetNativeArgument(args, 0));
- ASSERT(Dart_IsInstance(dart_this));
- ThrowIfError(Dart_GetNativeInstanceField(
- dart_this,
- kTlsFilterNativeFieldIndex,
- reinterpret_cast<intptr_t*>(&filter)));
- return filter;
-}
-
-
-static void SetTlsFilter(Dart_NativeArguments args, TlsFilter* filter) {
- Dart_Handle dart_this = ThrowIfError(Dart_GetNativeArgument(args, 0));
- ASSERT(Dart_IsInstance(dart_this));
- ThrowIfError(Dart_SetNativeInstanceField(
- dart_this,
- kTlsFilterNativeFieldIndex,
- reinterpret_cast<intptr_t>(filter)));
-}
-
-
-void FUNCTION_NAME(TlsSocket_Init)(Dart_NativeArguments args) {
- Dart_EnterScope();
- Dart_Handle dart_this = ThrowIfError(Dart_GetNativeArgument(args, 0));
- TlsFilter* filter = new TlsFilter;
- SetTlsFilter(args, filter);
- filter->Init(dart_this);
- Dart_ExitScope();
-}
-
-
-void FUNCTION_NAME(TlsSocket_Connect)(Dart_NativeArguments args) {
- Dart_EnterScope();
- Dart_Handle host_name = ThrowIfError(Dart_GetNativeArgument(args, 1));
- Dart_Handle port_object = ThrowIfError(Dart_GetNativeArgument(args, 2));
-
- const char* host_name_string = NULL;
- // TODO(whesse): Is truncating a Dart string containing \0 what we want?
- ThrowIfError(Dart_StringToCString(host_name, &host_name_string));
-
- int64_t port;
- if (!DartUtils::GetInt64Value(port_object, &port) ||
- port < 0 || port > 65535) {
- Dart_ThrowException(DartUtils::NewDartArgumentError(
- "Illegal port parameter in TlsSocket"));
- }
-
- GetTlsFilter(args)->Connect(host_name_string, static_cast<int>(port));
- Dart_ExitScope();
-}
-
-
-void FUNCTION_NAME(TlsSocket_Destroy)(Dart_NativeArguments args) {
- Dart_EnterScope();
- TlsFilter* filter = GetTlsFilter(args);
- SetTlsFilter(args, NULL);
- filter->Destroy();
- delete filter;
- Dart_ExitScope();
-}
-
-
-void FUNCTION_NAME(TlsSocket_Handshake)(Dart_NativeArguments args) {
- Dart_EnterScope();
- GetTlsFilter(args)->Handshake();
- Dart_ExitScope();
-}
-
-
-void FUNCTION_NAME(TlsSocket_RegisterHandshakeCompleteCallback)(
- Dart_NativeArguments args) {
- Dart_EnterScope();
- Dart_Handle handshake_complete =
- ThrowIfError(Dart_GetNativeArgument(args, 1));
- if (!Dart_IsClosure(handshake_complete)) {
- Dart_ThrowException(DartUtils::NewDartArgumentError(
- "Illegal argument to RegisterHandshakeCompleteCallback"));
- }
- GetTlsFilter(args)->RegisterHandshakeCompleteCallback(handshake_complete);
- Dart_ExitScope();
-}
-
-
-void FUNCTION_NAME(TlsSocket_ProcessBuffer)(Dart_NativeArguments args) {
- Dart_EnterScope();
- Dart_Handle buffer_id_object = ThrowIfError(Dart_GetNativeArgument(args, 1));
- int64_t buffer_id = DartUtils::GetIntegerValue(buffer_id_object);
- if (buffer_id < 0 || buffer_id >= TlsFilter::kNumBuffers) {
- Dart_ThrowException(DartUtils::NewDartArgumentError(
- "Illegal argument to ProcessBuffer"));
- }
-
- intptr_t bytes_read =
- GetTlsFilter(args)->ProcessBuffer(static_cast<int>(buffer_id));
- Dart_SetReturnValue(args, Dart_NewInteger(bytes_read));
- Dart_ExitScope();
-}
-
-
-void FUNCTION_NAME(TlsSocket_SetCertificateDatabase)
- (Dart_NativeArguments args) {
- Dart_EnterScope();
- Dart_Handle dart_pkcert_dir = ThrowIfError(Dart_GetNativeArgument(args, 0));
- // Check that the type is string, and get the UTF-8 C string value from it.
- if (Dart_IsString(dart_pkcert_dir)) {
- const char* pkcert_dir = NULL;
- ThrowIfError(Dart_StringToCString(dart_pkcert_dir, &pkcert_dir));
- TlsFilter::InitializeLibrary(pkcert_dir);
- } else {
- Dart_ThrowException(DartUtils::NewDartArgumentError(
- "Non-String argument to SetCertificateDatabase"));
- }
- Dart_ExitScope();
-}
-
-
-void TlsFilter::Init(Dart_Handle dart_this) {
- string_start_ = ThrowIfError(
- Dart_NewPersistentHandle(DartUtils::NewString("start")));
- string_length_ = ThrowIfError(
- Dart_NewPersistentHandle(DartUtils::NewString("length")));
-
- InitializeBuffers(dart_this);
- memio_ = memio_CreateIOLayer(kMemioBufferSize);
-}
-
-
-void TlsFilter::InitializeBuffers(Dart_Handle dart_this) {
- // Create TlsFilter buffers as ExternalUint8Array objects.
- Dart_Handle dart_buffers_object = ThrowIfError(
- Dart_GetField(dart_this, DartUtils::NewString("buffers")));
- Dart_Handle dart_buffer_object =
- Dart_ListGetAt(dart_buffers_object, kReadPlaintext);
- Dart_Handle tls_external_buffer_class =
- Dart_InstanceGetClass(dart_buffer_object);
- Dart_Handle dart_buffer_size = ThrowIfError(
- Dart_GetField(tls_external_buffer_class, DartUtils::NewString("SIZE")));
- buffer_size_ = DartUtils::GetIntegerValue(dart_buffer_size);
- if (buffer_size_ <= 0 || buffer_size_ > 1024 * 1024) {
- Dart_ThrowException(
- DartUtils::NewString("Invalid buffer size in _TlsExternalBuffer"));
- }
-
- Dart_Handle data_identifier = DartUtils::NewString("data");
- for (int i = 0; i < kNumBuffers; ++i) {
- dart_buffer_objects_[i] = ThrowIfError(
- Dart_NewPersistentHandle(Dart_ListGetAt(dart_buffers_object, i)));
- buffers_[i] = new uint8_t[buffer_size_];
- Dart_Handle data = ThrowIfError(
- Dart_NewExternalByteArray(buffers_[i], buffer_size_, NULL, NULL));
- ThrowIfError(Dart_SetField(dart_buffer_objects_[i],
- data_identifier,
- data));
- }
-}
-
-
-void TlsFilter::RegisterHandshakeCompleteCallback(Dart_Handle complete) {
- ASSERT(NULL == handshake_complete_);
- handshake_complete_ = ThrowIfError(Dart_NewPersistentHandle(complete));
-}
-
-
-void TlsFilter::InitializeLibrary(const char* pkcert_database) {
- MutexLocker locker(&mutex_);
- if (!library_initialized_) {
- PR_Init(PR_USER_THREAD, PR_PRIORITY_NORMAL, 0);
- // TODO(whesse): Verify there are no UTF-8 issues here.
- SECStatus status = NSS_Init(pkcert_database);
- if (status != SECSuccess) {
- ThrowPRException("Unsuccessful NSS_Init call.");
- }
-
- status = NSS_SetDomesticPolicy();
- if (status != SECSuccess) {
- ThrowPRException("Unsuccessful NSS_SetDomesticPolicy call.");
- }
- } else {
- ThrowException("Called TlsFilter::InitializeLibrary more than once");
- }
-}
-
-
-void TlsFilter::Connect(const char* host, int port) {
- if (in_handshake_) {
- ThrowException("Connect called while already in handshake state.");
- }
- PRFileDesc* my_socket = memio_;
-
- my_socket = SSL_ImportFD(NULL, my_socket);
- if (my_socket == NULL) {
- ThrowPRException("Unsuccessful SSL_ImportFD call");
- }
-
- if (SSL_SetURL(my_socket, host) == -1) {
- ThrowPRException("Unsuccessful SetURL call");
- }
-
- SECStatus status = SSL_ResetHandshake(my_socket, PR_FALSE);
- if (status != SECSuccess) {
- ThrowPRException("Unsuccessful SSL_ResetHandshake call");
- }
-
- // SetPeerAddress
- PRNetAddr host_address;
- char host_entry_buffer[PR_NETDB_BUF_SIZE];
- PRHostEnt host_entry;
- PRStatus rv = PR_GetHostByName(host, host_entry_buffer,
- PR_NETDB_BUF_SIZE, &host_entry);
- if (rv != PR_SUCCESS) {
- ThrowPRException("Unsuccessful PR_GetHostByName call");
- }
-
- int index = PR_EnumerateHostEnt(0, &host_entry, port, &host_address);
- if (index == -1 || index == 0) {
- ThrowPRException("Unsuccessful PR_EnumerateHostEnt call");
- }
-
- memio_SetPeerName(my_socket, &host_address);
- memio_ = my_socket;
-}
-
-
-void TlsFilter::Handshake() {
- SECStatus status = SSL_ForceHandshake(memio_);
- if (status == SECSuccess) {
- if (in_handshake_) {
- ThrowIfError(Dart_InvokeClosure(handshake_complete_, 0, NULL));
- in_handshake_ = false;
- }
- } else {
- PRErrorCode error = PR_GetError();
- if (error == PR_WOULD_BLOCK_ERROR) {
- if (!in_handshake_) {
- in_handshake_ = true;
- }
- } else {
- ThrowPRException("Unexpected handshake error");
- }
- }
-}
-
-
-void TlsFilter::Destroy() {
- for (int i = 0; i < kNumBuffers; ++i) {
- Dart_DeletePersistentHandle(dart_buffer_objects_[i]);
- delete[] buffers_[i];
- }
- Dart_DeletePersistentHandle(string_start_);
- Dart_DeletePersistentHandle(string_length_);
- Dart_DeletePersistentHandle(handshake_complete_);
- // TODO(whesse): Free NSS objects here.
-}
-
-
-intptr_t TlsFilter::ProcessBuffer(int buffer_index) {
- Dart_Handle buffer_object = dart_buffer_objects_[buffer_index];
- Dart_Handle start_object = ThrowIfError(
- Dart_GetField(buffer_object, string_start_));
- Dart_Handle length_object = ThrowIfError(
- Dart_GetField(buffer_object, string_length_));
- int64_t unsafe_start = DartUtils::GetIntegerValue(start_object);
- int64_t unsafe_length = DartUtils::GetIntegerValue(length_object);
- ASSERT(unsafe_start >= 0);
- ASSERT(unsafe_start < buffer_size_);
- ASSERT(unsafe_length >= 0);
- ASSERT(unsafe_length <= buffer_size_);
- intptr_t start = static_cast<intptr_t>(unsafe_start);
- intptr_t length = static_cast<intptr_t>(unsafe_length);
- uint8_t* buffer = buffers_[buffer_index];
-
- int bytes_processed = 0;
- switch (buffer_index) {
- case kReadPlaintext: {
- int bytes_free = buffer_size_ - start - length;
- bytes_processed = PR_Read(memio_,
- buffer + start + length,
- bytes_free);
- if (bytes_processed < 0) {
- ASSERT(bytes_processed == -1);
- // TODO(whesse): Handle unexpected errors here.
- PRErrorCode pr_error = PR_GetError();
- if (PR_WOULD_BLOCK_ERROR != pr_error) {
- ThrowPRException("Error reading plaintext from TlsFilter");
- }
- bytes_processed = 0;
- }
- break;
- }
-
- case kWriteEncrypted: {
- const uint8_t* buf1;
- const uint8_t* buf2;
- unsigned int len1;
- unsigned int len2;
- int bytes_free = buffer_size_ - start - length;
- memio_Private* secret = memio_GetSecret(memio_);
- memio_GetWriteParams(secret, &buf1, &len1, &buf2, &len2);
- int bytes_to_send =
- dart::Utils::Minimum(len1, static_cast<unsigned>(bytes_free));
- if (bytes_to_send > 0) {
- memmove(buffer + start + length, buf1, bytes_to_send);
- bytes_processed = bytes_to_send;
- }
- bytes_to_send = dart::Utils::Minimum(len2,
- static_cast<unsigned>(bytes_free - bytes_processed));
- if (bytes_to_send > 0) {
- memmove(buffer + start + length + bytes_processed, buf2,
- bytes_to_send);
- bytes_processed += bytes_to_send;
- }
- if (bytes_processed > 0) {
- memio_PutWriteResult(secret, bytes_processed);
- }
- break;
- }
-
- case kReadEncrypted: {
- if (length > 0) {
- bytes_processed = length;
- memio_Private* secret = memio_GetSecret(memio_);
- uint8_t* memio_buf;
- int free_bytes = memio_GetReadParams(secret, &memio_buf);
- if (free_bytes < bytes_processed) bytes_processed = free_bytes;
- memmove(memio_buf,
- buffer + start,
- bytes_processed);
- memio_PutReadResult(secret, bytes_processed);
- }
- break;
- }
-
- case kWritePlaintext: {
- if (length > 0) {
- bytes_processed = PR_Write(memio_,
- buffer + start,
- length);
- }
-
- if (bytes_processed < 0) {
- ASSERT(bytes_processed == -1);
- // TODO(whesse): Handle unexpected errors here.
- PRErrorCode pr_error = PR_GetError();
- if (PR_WOULD_BLOCK_ERROR != pr_error) {
- ThrowPRException("Error reading plaintext from TlsFilter");
- }
- bytes_processed = 0;
- }
- break;
- }
- }
- return bytes_processed;
-}
diff --git a/runtime/bin/tls_socket_patch.dart b/runtime/bin/tls_socket_patch.dart
deleted file mode 100644
index 73e40e8..0000000
--- a/runtime/bin/tls_socket_patch.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2012, 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.
-
-patch class TlsSocket {
- /* patch */ static void setCertificateDatabase(String pkcertDirectory)
- native "TlsSocket_SetCertificateDatabase";
-}
-
-
-patch class _TlsFilter {
- /* patch */ factory _TlsFilter() => new _TlsFilterImpl();
-}
-
-
-/**
- * _TlsFilterImpl wraps a filter that encrypts and decrypts data travelling
- * over a TLS encrypted socket. The filter also handles the handshaking
- * and certificate verification.
- *
- * The filter exposes its input and output buffers as Dart objects that
- * are backed by an external C array of bytes, so that both Dart code and
- * native code can access the same data.
- */
-class _TlsFilterImpl extends NativeFieldWrapperClass1 implements _TlsFilter {
- _TlsFilterImpl() {
- buffers = new List<_TlsExternalBuffer>(_TlsSocket.NUM_BUFFERS);
- for (int i = 0; i < _TlsSocket.NUM_BUFFERS; ++i) {
- buffers[i] = new _TlsExternalBuffer();
- }
- }
-
- void connect(String hostName, int port) native "TlsSocket_Connect";
-
- void destroy() {
- buffers = null;
- _destroy();
- }
-
- void _destroy() native "TlsSocket_Destroy";
-
- void handshake() native "TlsSocket_Handshake";
-
- void init() native "TlsSocket_Init";
-
- int processBuffer(int bufferIndex) native "TlsSocket_ProcessBuffer";
-
- void registerHandshakeCompleteCallback(Function handshakeCompleteHandler)
- native "TlsSocket_RegisterHandshakeCompleteCallback";
-
- List<_TlsExternalBuffer> buffers;
-}
diff --git a/runtime/bin/utils_win.cc b/runtime/bin/utils_win.cc
index 9ee1777..f9603f8 100644
--- a/runtime/bin/utils_win.cc
+++ b/runtime/bin/utils_win.cc
@@ -5,6 +5,7 @@
#include <errno.h>
#include "bin/utils.h"
+#include "bin/log.h"
static void FormatMessageIntoBuffer(DWORD code,
char* buffer,
@@ -19,7 +20,7 @@
NULL);
if (message_size == 0) {
if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
- fprintf(stderr, "FormatMessage failed %d\n", GetLastError());
+ Log::PrintErr("FormatMessage failed %d\n", GetLastError());
}
snprintf(buffer, buffer_length, "OS Error %d", code);
}
diff --git a/runtime/include/dart_api.h b/runtime/include/dart_api.h
index 8cc518a..821014c 100755
--- a/runtime/include/dart_api.h
+++ b/runtime/include/dart_api.h
@@ -1388,7 +1388,7 @@
* \return The String object if no error occurs. Otherwise returns
* an error handle.
*/
-DART_EXPORT Dart_Handle Dart_NewStringFromUTF32(const uint32_t* utf32_array,
+DART_EXPORT Dart_Handle Dart_NewStringFromUTF32(const int32_t* utf32_array,
intptr_t length);
/**
diff --git a/runtime/lib/array.dart b/runtime/lib/array.dart
index 1fb17fb..5bef0d0 100644
--- a/runtime/lib/array.dart
+++ b/runtime/lib/array.dart
@@ -138,6 +138,10 @@
"Cannot remove in a non-extendable array");
}
+ E get first {
+ return this[0];
+ }
+
E get last {
return this[length - 1];
}
@@ -285,6 +289,10 @@
"Cannot remove in a non-extendable array");
}
+ E get first {
+ return this[0];
+ }
+
E get last {
return this[length - 1];
}
diff --git a/runtime/lib/array_patch.dart b/runtime/lib/array_patch.dart
index 5bb7ec2c..2887a99 100644
--- a/runtime/lib/array_patch.dart
+++ b/runtime/lib/array_patch.dart
@@ -5,7 +5,7 @@
// Note that the optimizing compiler depends on the algorithm which
// returns a _GrowableObjectArray if length is null, otherwise returns
// fixed size array.
-patch class _ListImpl<E> {
+patch class List<E> {
/* patch */ factory List([int length = null]) {
if (length == null) {
return new _GrowableObjectArray<E>();
@@ -14,14 +14,6 @@
}
}
- /* patch */ factory List.from(Iterable<E> other) {
- _GrowableObjectArray<E> list = new _GrowableObjectArray<E>();
- for (final e in other) {
- list.add(e);
- }
- return list;
- }
-
// Factory constructing a mutable List from a parser generated List literal.
// [elements] contains elements that are already type checked.
factory List._fromLiteral(List elements) {
diff --git a/runtime/lib/byte_array.dart b/runtime/lib/byte_array.dart
index 0f97c3d..aa8e5dc 100644
--- a/runtime/lib/byte_array.dart
+++ b/runtime/lib/byte_array.dart
@@ -115,11 +115,11 @@
abstract class _ByteArrayBase {
- abstract int lengthInBytes();
+ int lengthInBytes();
- abstract int bytesPerElement();
+ int bytesPerElement();
- abstract operator[](int index);
+ operator[](int index);
// Methods implementing the Collection interface.
@@ -184,7 +184,7 @@
}
void sort([Comparator compare = Comparable.compare]) {
- _Sort.sort(this, compare);
+ coreSort(this, compare);
}
int indexOf(element, [int start = 0]) {
@@ -206,6 +206,10 @@
"Cannot remove from a non-extendable array");
}
+ get first {
+ return this[0];
+ }
+
get last {
return this[length - 1];
}
@@ -1601,7 +1605,7 @@
class _ByteArrayViewBase {
- abstract num operator[](int index);
+ num operator[](int index);
// Methods implementing the Collection interface.
@@ -1637,7 +1641,7 @@
return this.length == 0;
}
- abstract int get length;
+ int get length;
// Methods implementing the List interface.
@@ -1662,7 +1666,7 @@
}
void sort([Comparator compare = Comparable.compare]) {
- _Sort.sort(this, compare);
+ coreSort(this, compare);
}
int indexOf(element, [int start = 0]) {
@@ -1684,6 +1688,10 @@
"Cannot remove from a non-extendable array");
}
+ get first {
+ return this[0];
+ }
+
get last {
return this[length - 1];
}
diff --git a/runtime/lib/double.cc b/runtime/lib/double.cc
index 05977ba..76babac 100644
--- a/runtime/lib/double.cc
+++ b/runtime/lib/double.cc
@@ -11,6 +11,7 @@
#include "vm/exceptions.h"
#include "vm/native_entry.h"
#include "vm/object.h"
+#include "vm/symbols.h"
namespace dart {
@@ -202,6 +203,61 @@
}
+DEFINE_NATIVE_ENTRY(Double_parse, 1) {
+ GET_NATIVE_ARGUMENT(String, value, arguments->NativeArgAt(0));
+ const String& dummy_key = String::Handle(Symbols::Empty());
+ Scanner scanner(value, dummy_key);
+ const Scanner::GrowableTokenStream& tokens = scanner.GetStream();
+ String* number_string;
+ bool is_positive;
+ if (Scanner::IsValidLiteral(tokens,
+ Token::kDOUBLE,
+ &is_positive,
+ &number_string)) {
+ const char* cstr = number_string->ToCString();
+ char* p_end = NULL;
+ double double_value = strtod(cstr, &p_end);
+ ASSERT(p_end != cstr);
+ if (!is_positive) {
+ double_value = -double_value;
+ }
+ return Double::New(double_value);
+ }
+
+ if (Scanner::IsValidLiteral(tokens,
+ Token::kINTEGER,
+ &is_positive,
+ &number_string)) {
+ Integer& res = Integer::Handle(Integer::New(*number_string));
+ if (is_positive) {
+ return Double::New(res.AsDoubleValue());
+ }
+ return Double::New(-res.AsDoubleValue());
+ }
+
+ // Infinity and nan.
+ if (Scanner::IsValidLiteral(tokens,
+ Token::kIDENT,
+ &is_positive,
+ &number_string)) {
+ if (number_string->Equals("NaN")) {
+ return Double::New(NAN);
+ }
+ if (number_string->Equals("Infinity")) {
+ if (is_positive) {
+ return Double::New(INFINITY);
+ }
+ return Double::New(-INFINITY);
+ }
+ }
+
+ GrowableArray<const Object*> args;
+ args.Add(&value);
+ Exceptions::ThrowByType(Exceptions::kFormat, args);
+ return Object::null();
+}
+
+
DEFINE_NATIVE_ENTRY(Double_toStringAsFixed, 2) {
// The boundaries are exclusive.
static const double kLowerBoundary = -1e21;
diff --git a/runtime/lib/double.dart b/runtime/lib/double.dart
index f4025f3..aee84e2 100644
--- a/runtime/lib/double.dart
+++ b/runtime/lib/double.dart
@@ -114,7 +114,9 @@
if (exponent == 0) {
return 1.0; // ECMA-262 15.8.2.13
}
- // Throw NullPointerException if exponent is null.
+ if (exponent is! num) {
+ throw new ArgumentError(null);
+ }
double doubleExponent = exponent.toDouble();
if (isNaN || exponent.isNaN) {
return double.NAN;
diff --git a/runtime/lib/double_patch.dart b/runtime/lib/double_patch.dart
index d293249..5e6cc11 100644
--- a/runtime/lib/double_patch.dart
+++ b/runtime/lib/double_patch.dart
@@ -7,5 +7,5 @@
patch class double {
/* patch */
- static double parse(String string) native "MathNatives_parseDouble";
+ static double parse(String string) native "Double_parse";
}
diff --git a/runtime/lib/errors_patch.dart b/runtime/lib/errors_patch.dart
index d09dc3d..12caead 100644
--- a/runtime/lib/errors_patch.dart
+++ b/runtime/lib/errors_patch.dart
@@ -2,7 +2,7 @@
// 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.
-patch class NoSuchMethodError {
+patch class Error {
/* patch */ static String _objectToString(Object object) {
return Object._toString(object);
}
diff --git a/runtime/lib/expando_patch.dart b/runtime/lib/expando_patch.dart
index a218af6..5c61969 100644
--- a/runtime/lib/expando_patch.dart
+++ b/runtime/lib/expando_patch.dart
@@ -54,10 +54,7 @@
}
static _checkType(object) {
- if (object == null) {
- throw new NullPointerException();
- }
- if (object is bool || object is num || object is String) {
+ if (object == null || object is bool || object is num || object is String) {
throw new ArgumentError(object);
}
}
diff --git a/runtime/lib/growable_array.dart b/runtime/lib/growable_array.dart
index a34bca0..2e012c2 100644
--- a/runtime/lib/growable_array.dart
+++ b/runtime/lib/growable_array.dart
@@ -145,6 +145,10 @@
return elem;
}
+ T get first {
+ return this[0];
+ }
+
T get last {
return this[length - 1];
}
diff --git a/runtime/lib/integers.cc b/runtime/lib/integers.cc
index c9cf18d..9c379ca 100644
--- a/runtime/lib/integers.cc
+++ b/runtime/lib/integers.cc
@@ -9,6 +9,7 @@
#include "vm/exceptions.h"
#include "vm/native_entry.h"
#include "vm/object.h"
+#include "vm/symbols.h"
namespace dart {
@@ -172,6 +173,32 @@
}
+DEFINE_NATIVE_ENTRY(Integer_parse, 1) {
+ GET_NATIVE_ARGUMENT(String, value, arguments->NativeArgAt(0));
+ const String& dummy_key = String::Handle(Symbols::Empty());
+ Scanner scanner(value, dummy_key);
+ const Scanner::GrowableTokenStream& tokens = scanner.GetStream();
+ String* int_string;
+ bool is_positive;
+ if (Scanner::IsValidLiteral(tokens,
+ Token::kINTEGER,
+ &is_positive,
+ &int_string)) {
+ if (is_positive) {
+ return Integer::New(*int_string);
+ }
+ String& temp = String::Handle();
+ temp = String::Concat(String::Handle(Symbols::New("-")), *int_string);
+ return Integer::New(temp);
+ }
+
+ GrowableArray<const Object*> args;
+ args.Add(&value);
+ Exceptions::ThrowByType(Exceptions::kFormat, args);
+ return Object::null();
+}
+
+
static RawInteger* ShiftOperationHelper(Token::Kind kind,
const Integer& value,
const Smi& amount) {
diff --git a/runtime/lib/integers_patch.dart b/runtime/lib/integers_patch.dart
index c931ed4..162c050 100644
--- a/runtime/lib/integers_patch.dart
+++ b/runtime/lib/integers_patch.dart
@@ -6,5 +6,5 @@
// VM implementation of int.
patch class int {
- /* patch */ static int parse(String str) native "MathNatives_parseInt";
+ /* patch */ static int parse(String str) native "Integer_parse";
}
diff --git a/runtime/lib/lib_sources.gypi b/runtime/lib/lib_sources.gypi
index 2bffa7e..28c9afd 100644
--- a/runtime/lib/lib_sources.gypi
+++ b/runtime/lib/lib_sources.gypi
@@ -28,8 +28,6 @@
'integers_patch.dart',
'invocation_mirror_patch.dart',
'map_patch.dart',
- 'math.dart',
- 'math.cc',
'object.cc',
'object_patch.dart',
'print_patch.dart',
diff --git a/runtime/lib/math.cc b/runtime/lib/math.cc
index de48b16..ff4e6af 100644
--- a/runtime/lib/math.cc
+++ b/runtime/lib/math.cc
@@ -10,168 +10,60 @@
#include "vm/exceptions.h"
#include "vm/native_entry.h"
#include "vm/object.h"
-#include "vm/random.h"
#include "vm/scanner.h"
#include "vm/symbols.h"
namespace dart {
-DEFINE_NATIVE_ENTRY(MathNatives_sqrt, 1) {
+DEFINE_NATIVE_ENTRY(Math_sqrt, 1) {
GET_NATIVE_ARGUMENT(Double, operand, arguments->NativeArgAt(0));
return Double::New(sqrt(operand.value()));
}
-DEFINE_NATIVE_ENTRY(MathNatives_sin, 1) {
+DEFINE_NATIVE_ENTRY(Math_sin, 1) {
GET_NATIVE_ARGUMENT(Double, operand, arguments->NativeArgAt(0));
return Double::New(sin(operand.value()));
}
-DEFINE_NATIVE_ENTRY(MathNatives_cos, 1) {
+DEFINE_NATIVE_ENTRY(Math_cos, 1) {
GET_NATIVE_ARGUMENT(Double, operand, arguments->NativeArgAt(0));
return Double::New(cos(operand.value()));
}
-DEFINE_NATIVE_ENTRY(MathNatives_tan, 1) {
+DEFINE_NATIVE_ENTRY(Math_tan, 1) {
GET_NATIVE_ARGUMENT(Double, operand, arguments->NativeArgAt(0));
return Double::New(tan(operand.value()));
}
-DEFINE_NATIVE_ENTRY(MathNatives_asin, 1) {
+DEFINE_NATIVE_ENTRY(Math_asin, 1) {
GET_NATIVE_ARGUMENT(Double, operand, arguments->NativeArgAt(0));
return Double::New(asin(operand.value()));
}
-DEFINE_NATIVE_ENTRY(MathNatives_acos, 1) {
+DEFINE_NATIVE_ENTRY(Math_acos, 1) {
GET_NATIVE_ARGUMENT(Double, operand, arguments->NativeArgAt(0));
return Double::New(acos(operand.value()));
}
-DEFINE_NATIVE_ENTRY(MathNatives_atan, 1) {
+DEFINE_NATIVE_ENTRY(Math_atan, 1) {
GET_NATIVE_ARGUMENT(Double, operand, arguments->NativeArgAt(0));
return Double::New(atan(operand.value()));
}
-DEFINE_NATIVE_ENTRY(MathNatives_atan2, 2) {
+DEFINE_NATIVE_ENTRY(Math_atan2, 2) {
GET_NATIVE_ARGUMENT(Double, operand1, arguments->NativeArgAt(0));
GET_NATIVE_ARGUMENT(Double, operand2, arguments->NativeArgAt(1));
return Double::New(atan2(operand1.value(), operand2.value()));
}
-DEFINE_NATIVE_ENTRY(MathNatives_exp, 1) {
+DEFINE_NATIVE_ENTRY(Math_exp, 1) {
GET_NATIVE_ARGUMENT(Double, operand, arguments->NativeArgAt(0));
return Double::New(exp(operand.value()));
}
-DEFINE_NATIVE_ENTRY(MathNatives_log, 1) {
+DEFINE_NATIVE_ENTRY(Math_log, 1) {
GET_NATIVE_ARGUMENT(Double, operand, arguments->NativeArgAt(0));
return Double::New(log(operand.value()));
}
-DEFINE_NATIVE_ENTRY(MathNatives_random, 0) {
- return Double::New(static_cast<double>(Random::RandomInt32()-1)/0x80000000);
-}
-
-
-// TODO(srdjan): Investigate for performance hit; the integer and double parsing
-// may not be efficient as we need to generate two extra growable arrays.
-static bool IsValidLiteral(const Scanner::GrowableTokenStream& tokens,
- Token::Kind literal_kind,
- bool* is_positive,
- String** value) {
- if ((tokens.length() == 2) &&
- (tokens[0].kind == literal_kind) &&
- (tokens[1].kind == Token::kEOS)) {
- *is_positive = true;
- *value = tokens[0].literal;
- return true;
- }
- if ((tokens.length() == 3) &&
- ((tokens[0].kind == Token::kTIGHTADD) ||
- (tokens[0].kind == Token::kSUB)) &&
- (tokens[1].kind == literal_kind) &&
- (tokens[2].kind == Token::kEOS)) {
- // Check there is no space between "+/-" and number.
- if ((tokens[0].offset + 1) != tokens[1].offset) {
- return false;
- }
- *is_positive = tokens[0].kind == Token::kTIGHTADD;
- *value = tokens[1].literal;
- return true;
- }
- return false;
-}
-
-
-DEFINE_NATIVE_ENTRY(MathNatives_parseInt, 1) {
- GET_NATIVE_ARGUMENT(String, value, arguments->NativeArgAt(0));
- const String& dummy_key = String::Handle(Symbols::Empty());
- Scanner scanner(value, dummy_key);
- const Scanner::GrowableTokenStream& tokens = scanner.GetStream();
- String* int_string;
- bool is_positive;
- if (IsValidLiteral(tokens, Token::kINTEGER, &is_positive, &int_string)) {
- if (is_positive) {
- return Integer::New(*int_string);
- } else {
- String& temp = String::Handle();
- temp = String::Concat(String::Handle(Symbols::New("-")),
- *int_string);
- return Integer::New(temp);
- }
- } else {
- GrowableArray<const Object*> args;
- args.Add(&value);
- Exceptions::ThrowByType(Exceptions::kFormat, args);
- return Object::null();
- }
-}
-
-
-DEFINE_NATIVE_ENTRY(MathNatives_parseDouble, 1) {
- GET_NATIVE_ARGUMENT(String, value, arguments->NativeArgAt(0));
- const String& dummy_key = String::Handle(Symbols::Empty());
- Scanner scanner(value, dummy_key);
- const Scanner::GrowableTokenStream& tokens = scanner.GetStream();
- String* number_string;
- bool is_positive;
- if (IsValidLiteral(tokens, Token::kDOUBLE, &is_positive, &number_string)) {
- const char* cstr = number_string->ToCString();
- char* p_end = NULL;
- double double_value = strtod(cstr, &p_end);
- ASSERT(p_end != cstr);
- if (!is_positive) {
- double_value = -double_value;
- }
- return Double::New(double_value);
- }
-
- if (IsValidLiteral(tokens, Token::kINTEGER, &is_positive, &number_string)) {
- Integer& res = Integer::Handle(Integer::New(*number_string));
- if (is_positive) {
- return Double::New(res.AsDoubleValue());
- } else {
- return Double::New(-res.AsDoubleValue());
- }
- }
-
- // Infinity and nan.
- if (IsValidLiteral(tokens, Token::kIDENT, &is_positive, &number_string)) {
- if (number_string->Equals("NaN")) {
- return Double::New(NAN);
- }
- if (number_string->Equals("Infinity")) {
- if (is_positive) {
- return Double::New(INFINITY);
- } else {
- return Double::New(-INFINITY);
- }
- }
- }
-
- GrowableArray<const Object*> args;
- args.Add(&value);
- Exceptions::ThrowByType(Exceptions::kFormat, args);
- return Object::null();
-}
-
} // namespace dart
diff --git a/runtime/lib/math.dart b/runtime/lib/math.dart
deleted file mode 100644
index bb32560..0000000
--- a/runtime/lib/math.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2011, 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.
-
-class MathNatives {
- static num pow(num value, num exponent) {
- if (exponent is int) {
- return value.pow(exponent);
- }
- // Double.pow will call exponent.toDouble().
- return value.toDouble().pow(exponent);
- }
- static double random() => _random();
- static double sqrt(num value) => _sqrt(value.toDouble());
- static double sin(num value) => _sin(value.toDouble());
- static double cos(num value) => _cos(value.toDouble());
- static double tan(num value) => _tan(value.toDouble());
- static double acos(num value) => _acos(value.toDouble());
- static double asin(num value) => _asin(value.toDouble());
- static double atan(num value) => _atan(value.toDouble());
- static double atan2(num a, num b) => _atan2(a.toDouble(), b.toDouble());
- static double exp(num value) => _exp(value.toDouble());
- static double log(num value) => _log(value.toDouble());
-
- static double _random() native "MathNatives_random";
- static double _sqrt(double value) native "MathNatives_sqrt";
- static double _sin(double value) native "MathNatives_sin";
- static double _cos(double value) native "MathNatives_cos";
- static double _tan(double value) native "MathNatives_tan";
- static double _acos(double value) native "MathNatives_acos";
- static double _asin(double value) native "MathNatives_asin";
- static double _atan(double value) native "MathNatives_atan";
- static double _atan2(double a, double b) native "MathNatives_atan2";
- static double _exp(double value) native "MathNatives_exp";
- static double _log(double value) native "MathNatives_log";
-}
diff --git a/runtime/lib/math_patch.dart b/runtime/lib/math_patch.dart
index 0612d3d..bfcbacc 100644
--- a/runtime/lib/math_patch.dart
+++ b/runtime/lib/math_patch.dart
@@ -3,17 +3,35 @@
// BSD-style license that can be found in the LICENSE file.
// A VM patch of the dart:math library.
-patch num pow(num x, num exponent) => MathNatives.pow(x, exponent);
-patch double atan2(num a, num b) => MathNatives.atan2(a, b);
-patch double sin(num x) => MathNatives.sin(x);
-patch double cos(num x) => MathNatives.cos(x);
-patch double tan(num x) => MathNatives.tan(x);
-patch double acos(num x) => MathNatives.acos(x);
-patch double asin(num x) => MathNatives.asin(x);
-patch double atan(num x) => MathNatives.atan(x);
-patch double sqrt(num x) => MathNatives.sqrt(x);
-patch double exp(num x) => MathNatives.exp(x);
-patch double log(num x) => MathNatives.log(x);
+patch num pow(num x, num exponent) {
+ if (exponent is int) {
+ return x.pow(exponent);
+ }
+ // Double.pow will call exponent.toDouble().
+ return x.toDouble().pow(exponent);
+}
+
+patch double atan2(num a, num b) => _atan2(a.toDouble(), b.toDouble());
+patch double sin(num value) => _sin(value.toDouble());
+patch double cos(num value) => _cos(value.toDouble());
+patch double tan(num value) => _tan(value.toDouble());
+patch double acos(num value) => _acos(value.toDouble());
+patch double asin(num value) => _asin(value.toDouble());
+patch double atan(num value) => _atan(value.toDouble());
+patch double sqrt(num value) => _sqrt(value.toDouble());
+patch double exp(num value) => _exp(value.toDouble());
+patch double log(num value) => _log(value.toDouble());
+
+double _atan2(double a, double b) native "Math_atan2";
+double _sin(double x) native "Math_sin";
+double _cos(double x) native "Math_cos";
+double _tan(double x) native "Math_tan";
+double _acos(double x) native "Math_acos";
+double _asin(double x) native "Math_asin";
+double _atan(double x) native "Math_atan";
+double _sqrt(double x) native "Math_sqrt";
+double _exp(double x) native "Math_exp";
+double _log(double x) native "Math_log";
// TODO(iposva): Handle patch methods within a patch class correctly.
@@ -33,20 +51,24 @@
class _Random implements Random {
// Internal state of the random number generator.
- var _state_lo;
- var _state_hi;
+ var _state;
+ static const kSTATE_LO = 0;
+ static const kSTATE_HI = 1;
- _Random._internal(state)
- : _state_lo = (state & _MASK_32), _state_hi = (state >> 32);
+ _Random._internal(state) {
+ _state = new List(2);
+ _state[kSTATE_LO] = state & _MASK_32;
+ _state[kSTATE_HI] = state >> 32;
+ }
// The algorithm used here is Multiply with Carry (MWC) with a Base b = 2^32.
// http://en.wikipedia.org/wiki/Multiply-with-carry
// The constant A is selected from "Numerical Recipes 3rd Edition" p.348 B1.
int _nextInt32() {
- var state = ((_A * (_state_lo)) + _state_hi) & _MASK_64;
- _state_lo = state & _MASK_32;
- _state_hi = state >> 32;
- return _state_lo;
+ var state = ((_A * (_state[kSTATE_LO])) + _state[kSTATE_HI]) & _MASK_64;
+ _state[kSTATE_LO] = state & _MASK_32;
+ _state[kSTATE_HI] = state >> 32;
+ return _state[kSTATE_LO];
}
int nextInt(int max) {
diff --git a/runtime/lib/math_sources.gypi b/runtime/lib/math_sources.gypi
index 5fb0d9e..2a18173 100644
--- a/runtime/lib/math_sources.gypi
+++ b/runtime/lib/math_sources.gypi
@@ -4,6 +4,7 @@
{
'sources': [
+ 'math.cc',
'math_patch.dart',
],
}
diff --git a/runtime/lib/object.cc b/runtime/lib/object.cc
index 3d9ed92..6f1fef5 100644
--- a/runtime/lib/object.cc
+++ b/runtime/lib/object.cc
@@ -22,14 +22,8 @@
Instance::CheckedHandle(arguments->NativeArgAt(0));
GET_NATIVE_ARGUMENT(String, function_name, arguments->NativeArgAt(1));
GET_NATIVE_ARGUMENT(Array, func_args, arguments->NativeArgAt(2));
- if (instance.IsNull()) {
- GrowableArray<const Object*> args;
- args.Add(&function_name);
- args.Add(&func_args);
- Exceptions::ThrowByType(Exceptions::kNullPointer, args);
- }
const Object& null_object = Object::Handle(Object::null());
- GrowableArray<const Object*> dart_arguments(3);
+ GrowableArray<const Object*> dart_arguments(4);
dart_arguments.Add(&instance);
dart_arguments.Add(&function_name);
dart_arguments.Add(&func_args);
diff --git a/runtime/lib/regexp.cc b/runtime/lib/regexp.cc
index 00088b5..969d5ff 100644
--- a/runtime/lib/regexp.cc
+++ b/runtime/lib/regexp.cc
@@ -12,19 +12,9 @@
namespace dart {
-static void CheckAndThrowExceptionIfNull(const Instance& obj) {
- if (obj.IsNull()) {
- GrowableArray<const Object*> args;
- Exceptions::ThrowByType(Exceptions::kNullPointer, args);
- }
-}
-
-
DEFINE_NATIVE_ENTRY(JSSyntaxRegExp_factory, 4) {
ASSERT(AbstractTypeArguments::CheckedHandle(
arguments->NativeArgAt(0)).IsNull());
- const Instance& arg1 = Instance::CheckedHandle(arguments->NativeArgAt(1));
- CheckAndThrowExceptionIfNull(arg1);
GET_NATIVE_ARGUMENT(String, pattern, arguments->NativeArgAt(1));
GET_NATIVE_ARGUMENT(Instance, handle_multi_line, arguments->NativeArgAt(2));
GET_NATIVE_ARGUMENT(Instance, handle_ignore_case, arguments->NativeArgAt(3));
@@ -75,8 +65,6 @@
DEFINE_NATIVE_ENTRY(JSSyntaxRegExp_ExecuteMatch, 3) {
const JSRegExp& regexp = JSRegExp::CheckedHandle(arguments->NativeArgAt(0));
ASSERT(!regexp.IsNull());
- const Instance& arg1 = Instance::CheckedHandle(arguments->NativeArgAt(1));
- CheckAndThrowExceptionIfNull(arg1);
GET_NATIVE_ARGUMENT(String, str, arguments->NativeArgAt(1));
GET_NATIVE_ARGUMENT(Smi, start_index, arguments->NativeArgAt(2));
return Jscre::Execute(regexp, str, start_index.Value());
diff --git a/runtime/lib/regexp_patch.dart b/runtime/lib/regexp_patch.dart
index d6e830c..6a921fa 100644
--- a/runtime/lib/regexp_patch.dart
+++ b/runtime/lib/regexp_patch.dart
@@ -77,6 +77,7 @@
}
Iterable<Match> allMatches(String str) {
+ if (str is! String) throw new ArgumentError(str);
List<Match> result = new List<Match>();
int length = str.length;
int startIndex = 0;
diff --git a/runtime/lib/string.cc b/runtime/lib/string.cc
index 76c097a..797cad2 100644
--- a/runtime/lib/string.cc
+++ b/runtime/lib/string.cc
@@ -20,7 +20,7 @@
// Unbox the array and determine the maximum element width.
bool is_one_byte_string = true;
intptr_t utf16_len = array_len;
- uint32_t* utf32_array = zone->Alloc<uint32_t>(array_len);
+ int32_t* utf32_array = zone->Alloc<int32_t>(array_len);
Object& index_object = Object::Handle(isolate);
for (intptr_t i = 0; i < array_len; i++) {
index_object = a.At(i);
@@ -102,7 +102,7 @@
GET_NATIVE_ARGUMENT(Integer, index, arguments->NativeArgAt(1));
uint32_t value = StringValueAt(receiver, index);
ASSERT(value <= 0x10FFFF);
- return Symbols::New(&value, 1);
+ return Symbols::FromCharCode(value);
}
DEFINE_NATIVE_ENTRY(String_charCodeAt, 2) {
@@ -144,10 +144,6 @@
Instance& elem = Instance::Handle();
for (intptr_t i = 0; i < strings.Length(); i++) {
elem ^= strings.At(i);
- if (elem.IsNull()) {
- GrowableArray<const Object*> args;
- Exceptions::ThrowByType(Exceptions::kNullPointer, args);
- }
if (!elem.IsString()) {
GrowableArray<const Object*> args;
args.Add(&elem);
diff --git a/runtime/tests/vm/dart/isolate_mirror_local_test.dart b/runtime/tests/vm/dart/isolate_mirror_local_test.dart
index 821912b..d4b8b88 100644
--- a/runtime/tests/vm/dart/isolate_mirror_local_test.dart
+++ b/runtime/tests/vm/dart/isolate_mirror_local_test.dart
@@ -304,9 +304,8 @@
Expect.equals('dart:core.List', list_intf.qualifiedName);
Expect.isFalse(list_intf.isPrivate);
Expect.equals('Object', list_intf.superclass.simpleName);
- Expect.equals('_ListImpl', list_intf.defaultFactory.simpleName);
Expect.equals('dart:core', list_intf.owner.simpleName);
- Expect.isFalse(list_intf.isClass);
+ Expect.isTrue(list_intf.isClass);
Expect.equals('Collection', list_intf.superinterfaces[0].simpleName);
Expect.equals("ClassMirror on 'List'", list_intf.toString());
diff --git a/runtime/tests/vm/vm.status b/runtime/tests/vm/vm.status
index 5f2ec21..9b8ab80 100644
--- a/runtime/tests/vm/vm.status
+++ b/runtime/tests/vm/vm.status
@@ -5,6 +5,8 @@
# When a spawned isolate throws an uncaught exception, we terminate the vm.
cc/RunLoop_ExceptionChild: Fail
+cc/SymbolUnicode: Fail
+
# These tests are expected to crash on all platforms.
cc/ArrayNew_Overflow_Crash: Crash
cc/AllocGeneric_Overflow: Crash
diff --git a/runtime/tools/gyp/nss_configurations.gypi b/runtime/tools/gyp/nss_configurations.gypi
index 2897c6c..74c857c 100644
--- a/runtime/tools/gyp/nss_configurations.gypi
+++ b/runtime/tools/gyp/nss_configurations.gypi
@@ -37,9 +37,6 @@
'-Werror',
'-Wall',
'-ansi',
- # This flag would let a certain assembly function be inlined,
- # causing errors in mpcpucache.c.
- '-fvisibility=hidden',
# Not supported for C, only for C++.
'-Wnon-virtual-dtor',
'-Wno-conversion-null',
diff --git a/runtime/vm/assembler_ia32.cc b/runtime/vm/assembler_ia32.cc
index ec7f4c1..7fa7e21 100644
--- a/runtime/vm/assembler_ia32.cc
+++ b/runtime/vm/assembler_ia32.cc
@@ -19,15 +19,16 @@
DEFINE_FLAG(bool, use_sse41, true, "Use SSE 4.1 if available");
-bool CPUFeatures::sse3_supported_ = false;
+bool CPUFeatures::sse2_supported_ = false;
bool CPUFeatures::sse4_1_supported_ = false;
#ifdef DEBUG
bool CPUFeatures::initialized_ = false;
#endif
-bool CPUFeatures::sse3_supported() {
+
+bool CPUFeatures::sse2_supported() {
DEBUG_ASSERT(initialized_);
- return sse3_supported_;
+ return sse2_supported_;
}
@@ -60,7 +61,7 @@
typedef uint64_t (*DetectCPUFeatures)();
uint64_t features =
reinterpret_cast<DetectCPUFeatures>(instructions.EntryPoint())();
- sse3_supported_ = (features & kSSE3BitMask) != 0;
+ sse2_supported_ = (features & kSSE2BitMask) != 0;
sse4_1_supported_ = (features & kSSE4_1BitMask) != 0;
#ifdef DEBUG
initialized_ = true;
diff --git a/runtime/vm/assembler_ia32.h b/runtime/vm/assembler_ia32.h
index 5d80c8b..a738df3 100644
--- a/runtime/vm/assembler_ia32.h
+++ b/runtime/vm/assembler_ia32.h
@@ -258,14 +258,14 @@
class CPUFeatures : public AllStatic {
public:
static void InitOnce();
- static bool sse3_supported();
+ static bool sse2_supported();
static bool sse4_1_supported();
private:
- static const uint64_t kSSE3BitMask = static_cast<uint64_t>(1) << 32;
+ static const uint64_t kSSE2BitMask = static_cast<uint64_t>(1) << 26;
static const uint64_t kSSE4_1BitMask = static_cast<uint64_t>(1) << 51;
- static bool sse3_supported_;
+ static bool sse2_supported_;
static bool sse4_1_supported_;
#ifdef DEBUG
static bool initialized_;
diff --git a/runtime/vm/assembler_x64.cc b/runtime/vm/assembler_x64.cc
index 373925e..57ffd01 100644
--- a/runtime/vm/assembler_x64.cc
+++ b/runtime/vm/assembler_x64.cc
@@ -19,18 +19,11 @@
DEFINE_FLAG(bool, use_sse41, true, "Use SSE 4.1 if available");
-bool CPUFeatures::sse3_supported_ = false;
bool CPUFeatures::sse4_1_supported_ = false;
#ifdef DEBUG
bool CPUFeatures::initialized_ = false;
#endif
-bool CPUFeatures::sse3_supported() {
- DEBUG_ASSERT(initialized_);
- return sse3_supported_;
-}
-
-
bool CPUFeatures::sse4_1_supported() {
DEBUG_ASSERT(initialized_);
return sse4_1_supported_ && FLAG_use_sse41;
@@ -63,7 +56,6 @@
typedef uint64_t (*DetectCPUFeatures)();
uint64_t features =
reinterpret_cast<DetectCPUFeatures>(instructions.EntryPoint())();
- sse3_supported_ = (features & kSSE3BitMask) != 0;
sse4_1_supported_ = (features & kSSE4_1BitMask) != 0;
#ifdef DEBUG
initialized_ = true;
@@ -395,11 +387,10 @@
void Assembler::movss(XmmRegister dst, const Address& src) {
- // TODO(srdjan): implement and test XMM8 - XMM15.
- ASSERT(dst <= XMM7);
+ ASSERT(dst <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0xF3);
- EmitOperandREX(0, src, REX_NONE);
+ EmitREX_RB(dst, src);
EmitUint8(0x0F);
EmitUint8(0x10);
EmitOperand(dst & 7, src);
@@ -407,11 +398,10 @@
void Assembler::movss(const Address& dst, XmmRegister src) {
- // TODO(srdjan): implement and test XMM8 - XMM15.
- ASSERT(src <= XMM7);
+ ASSERT(src <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0xF3);
- EmitOperandREX(0, dst, REX_NONE);
+ EmitREX_RB(src, dst);
EmitUint8(0x0F);
EmitUint8(0x11);
EmitOperand(src & 7, dst);
@@ -419,11 +409,11 @@
void Assembler::movss(XmmRegister dst, XmmRegister src) {
- // TODO(srdjan): implement and test XMM8 - XMM15.
- ASSERT(src <= XMM7);
- ASSERT(dst <= XMM7);
+ ASSERT(src <= XMM15);
+ ASSERT(dst <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0xF3);
+ EmitREX_RB(src, dst);
EmitUint8(0x0F);
EmitUint8(0x11);
EmitXmmRegisterOperand(src & 7, dst);
@@ -431,9 +421,10 @@
void Assembler::movd(XmmRegister dst, Register src) {
- ASSERT(dst <= XMM7);
+ ASSERT(dst <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0x66);
+ EmitREX_RB(dst, src);
EmitUint8(0x0F);
EmitUint8(0x6E);
EmitOperand(dst & 7, Operand(src));
@@ -441,9 +432,10 @@
void Assembler::movd(Register dst, XmmRegister src) {
- ASSERT(src <= XMM7);
+ ASSERT(src <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0x66);
+ EmitREX_RB(src, dst);
EmitUint8(0x0F);
EmitUint8(0x7E);
EmitOperand(src & 7, Operand(dst));
@@ -451,59 +443,58 @@
void Assembler::addss(XmmRegister dst, XmmRegister src) {
- // TODO(srdjan): implement and test XMM8 - XMM15.
- ASSERT(src <= XMM7);
- ASSERT(dst <= XMM7);
+ ASSERT(src <= XMM15);
+ ASSERT(dst <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0xF3);
+ EmitREX_RB(dst, src);
EmitUint8(0x0F);
EmitUint8(0x58);
- EmitXmmRegisterOperand(dst, src);
+ EmitXmmRegisterOperand(dst & 7, src);
}
void Assembler::subss(XmmRegister dst, XmmRegister src) {
- // TODO(srdjan): implement and test XMM8 - XMM15.
- ASSERT(src <= XMM7);
- ASSERT(dst <= XMM7);
+ ASSERT(src <= XMM15);
+ ASSERT(dst <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0xF3);
+ EmitREX_RB(dst, src);
EmitUint8(0x0F);
EmitUint8(0x5C);
- EmitXmmRegisterOperand(dst, src);
+ EmitXmmRegisterOperand(dst & 7, src);
}
void Assembler::mulss(XmmRegister dst, XmmRegister src) {
- // TODO(srdjan): implement and test XMM8 - XMM15.
- ASSERT(src <= XMM7);
- ASSERT(dst <= XMM7);
+ ASSERT(src <= XMM15);
+ ASSERT(dst <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0xF3);
+ EmitREX_RB(dst, src);
EmitUint8(0x0F);
EmitUint8(0x59);
- EmitXmmRegisterOperand(dst, src);
+ EmitXmmRegisterOperand(dst & 7, src);
}
void Assembler::divss(XmmRegister dst, XmmRegister src) {
- // TODO(srdjan): implement and test XMM8 - XMM15.
- ASSERT(src <= XMM7);
- ASSERT(dst <= XMM7);
+ ASSERT(src <= XMM15);
+ ASSERT(dst <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0xF3);
+ EmitREX_RB(dst, src);
EmitUint8(0x0F);
EmitUint8(0x5E);
- EmitXmmRegisterOperand(dst, src);
+ EmitXmmRegisterOperand(dst & 7, src);
}
void Assembler::movsd(XmmRegister dst, const Address& src) {
- // TODO(srdjan): implement and test XMM8 - XMM15.
- ASSERT(dst <= XMM7);
+ ASSERT(dst <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0xF2);
- EmitOperandREX(0, src, REX_NONE);
+ EmitREX_RB(dst, src);
EmitUint8(0x0F);
EmitUint8(0x10);
EmitOperand(dst & 7, src);
@@ -511,11 +502,10 @@
void Assembler::movsd(const Address& dst, XmmRegister src) {
- // TODO(srdjan): implement and test XMM8 - XMM15.
- ASSERT(src <= XMM7);
+ ASSERT(src <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0xF2);
- EmitOperandREX(0, dst, REX_NONE);
+ EmitREX_RB(src, dst);
EmitUint8(0x0F);
EmitUint8(0x11);
EmitOperand(src & 7, dst);
@@ -523,11 +513,11 @@
void Assembler::movsd(XmmRegister dst, XmmRegister src) {
- // TODO(srdjan): implement and test XMM8 - XMM15.
- ASSERT(src <= XMM7);
- ASSERT(dst <= XMM7);
+ ASSERT(src <= XMM15);
+ ASSERT(dst <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0xF2);
+ EmitREX_RB(src, dst);
EmitUint8(0x0F);
EmitUint8(0x11);
EmitXmmRegisterOperand(src & 7, dst);
@@ -535,10 +525,10 @@
void Assembler::movaps(XmmRegister dst, XmmRegister src) {
- // TODO(vegorov): implement and test XMM8 - XMM15.
- ASSERT(src <= XMM7);
- ASSERT(dst <= XMM7);
+ ASSERT(src <= XMM15);
+ ASSERT(dst <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
+ EmitREX_RB(dst, src);
EmitUint8(0x0F);
EmitUint8(0x28);
EmitXmmRegisterOperand(dst & 7, src);
@@ -546,90 +536,93 @@
void Assembler::addsd(XmmRegister dst, XmmRegister src) {
- // TODO(srdjan): implement and test XMM8 - XMM15.
- ASSERT(src <= XMM7);
- ASSERT(dst <= XMM7);
+ ASSERT(src <= XMM15);
+ ASSERT(dst <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0xF2);
+ EmitREX_RB(dst, src);
EmitUint8(0x0F);
EmitUint8(0x58);
- EmitXmmRegisterOperand(dst, src);
+ EmitXmmRegisterOperand(dst & 7, src);
}
void Assembler::subsd(XmmRegister dst, XmmRegister src) {
- // TODO(srdjan): implement and test XMM8 - XMM15.
- ASSERT(src <= XMM7);
- ASSERT(dst <= XMM7);
+ ASSERT(src <= XMM15);
+ ASSERT(dst <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0xF2);
+ EmitREX_RB(dst, src);
EmitUint8(0x0F);
EmitUint8(0x5C);
- EmitXmmRegisterOperand(dst, src);
+ EmitXmmRegisterOperand(dst & 7, src);
}
void Assembler::mulsd(XmmRegister dst, XmmRegister src) {
- // TODO(srdjan): implement and test XMM8 - XMM15.
- ASSERT(src <= XMM7);
- ASSERT(dst <= XMM7);
+ ASSERT(src <= XMM15);
+ ASSERT(dst <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0xF2);
+ EmitREX_RB(dst, src);
EmitUint8(0x0F);
EmitUint8(0x59);
- EmitXmmRegisterOperand(dst, src);
+ EmitXmmRegisterOperand(dst & 7, src);
}
void Assembler::divsd(XmmRegister dst, XmmRegister src) {
- // TODO(srdjan): implement and test XMM8 - XMM15.
- ASSERT(src <= XMM7);
- ASSERT(dst <= XMM7);
+ ASSERT(src <= XMM15);
+ ASSERT(dst <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0xF2);
+ EmitREX_RB(dst, src);
EmitUint8(0x0F);
EmitUint8(0x5E);
- EmitXmmRegisterOperand(dst, src);
+ EmitXmmRegisterOperand(dst & 7, src);
}
void Assembler::comisd(XmmRegister a, XmmRegister b) {
- ASSERT(a <= XMM7);
- ASSERT(b <= XMM7);
+ ASSERT(a <= XMM15);
+ ASSERT(b <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0x66);
+ EmitREX_RB(a, b);
EmitUint8(0x0F);
EmitUint8(0x2F);
- EmitXmmRegisterOperand(a, b);
+ EmitXmmRegisterOperand(a & 7, b);
}
void Assembler::movmskpd(Register dst, XmmRegister src) {
- ASSERT(src <= XMM7);
+ ASSERT(src <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0x66);
+ EmitREX_RB(dst, src);
EmitUint8(0x0F);
EmitUint8(0x50);
- EmitXmmRegisterOperand(dst, src);
+ EmitXmmRegisterOperand(dst & 7, src);
}
void Assembler::sqrtsd(XmmRegister dst, XmmRegister src) {
- ASSERT(dst <= XMM7);
- ASSERT(src <= XMM7);
+ ASSERT(dst <= XMM15);
+ ASSERT(src <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0xF2);
+ EmitREX_RB(dst, src);
EmitUint8(0x0F);
EmitUint8(0x51);
- EmitXmmRegisterOperand(dst, src);
+ EmitXmmRegisterOperand(dst & 7, src);
}
void Assembler::xorpd(XmmRegister dst, const Address& src) {
- ASSERT(dst <= XMM7);
+ ASSERT(dst <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0x66);
- EmitOperandREX(0, src, REX_NONE);
+ EmitOperandREX(dst, src, REX_NONE);
EmitUint8(0x0F);
EmitUint8(0x57);
EmitOperand(dst & 7, src);
@@ -637,59 +630,62 @@
void Assembler::xorpd(XmmRegister dst, XmmRegister src) {
- ASSERT(dst <= XMM7);
- ASSERT(src <= XMM7);
+ ASSERT(dst <= XMM15);
+ ASSERT(src <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0x66);
+ EmitREX_RB(dst, src);
EmitUint8(0x0F);
EmitUint8(0x57);
- EmitXmmRegisterOperand(dst, src);
+ EmitXmmRegisterOperand(dst & 7, src);
}
void Assembler::cvtsi2sd(XmmRegister dst, Register src) {
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
- ASSERT(dst <= XMM7);
+ ASSERT(dst <= XMM15);
Operand operand(src);
EmitUint8(0xF2);
- EmitOperandREX(0, operand, REX_W);
+ EmitOperandREX(dst, operand, REX_W);
EmitUint8(0x0F);
EmitUint8(0x2A);
- EmitOperand(dst, operand);
+ EmitOperand(dst & 7, operand);
}
void Assembler::cvttsd2siq(Register dst, XmmRegister src) {
- ASSERT(src <= XMM7);
+ ASSERT(src <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0xF2);
Operand operand(dst);
- EmitOperandREX(0, operand, REX_W);
+ EmitREX_RB(dst, src, REX_W);
EmitUint8(0x0F);
EmitUint8(0x2C);
- EmitXmmRegisterOperand(dst, src);
+ EmitXmmRegisterOperand(dst & 7, src);
}
void Assembler::cvtss2sd(XmmRegister dst, XmmRegister src) {
- ASSERT(src <= XMM7);
- ASSERT(dst <= XMM7);
+ ASSERT(src <= XMM15);
+ ASSERT(dst <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0xF3);
+ EmitREX_RB(dst, src);
EmitUint8(0x0F);
EmitUint8(0x5A);
- EmitXmmRegisterOperand(dst, src);
+ EmitXmmRegisterOperand(dst & 7, src);
}
void Assembler::cvtsd2ss(XmmRegister dst, XmmRegister src) {
- ASSERT(src <= XMM7);
- ASSERT(dst <= XMM7);
+ ASSERT(src <= XMM15);
+ ASSERT(dst <= XMM15);
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0xF2);
+ EmitREX_RB(dst, src);
EmitUint8(0x0F);
EmitUint8(0x5A);
- EmitXmmRegisterOperand(dst, src);
+ EmitXmmRegisterOperand(dst & 7, src);
}
@@ -2107,7 +2103,8 @@
static const char* xmm_reg_names[kNumberOfXmmRegisters] = {
- "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7"
+ "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7",
+ "xmm8", "xmm9", "xmm10", "xmm11", "xmm12", "xmm13", "xmm14", "xmm15"
};
diff --git a/runtime/vm/assembler_x64.h b/runtime/vm/assembler_x64.h
index cebc865..ab97b2a 100644
--- a/runtime/vm/assembler_x64.h
+++ b/runtime/vm/assembler_x64.h
@@ -275,14 +275,13 @@
class CPUFeatures : public AllStatic {
public:
static void InitOnce();
- static bool sse3_supported();
+ // x64 always has at least SSE2.
+ static bool sse2_supported() { return true; }
static bool sse4_1_supported();
private:
- static const uint64_t kSSE3BitMask = static_cast<uint64_t>(1) << 32;
static const uint64_t kSSE4_1BitMask = static_cast<uint64_t>(1) << 51;
- static bool sse3_supported_;
static bool sse4_1_supported_;
#ifdef DEBUG
static bool initialized_;
@@ -678,7 +677,18 @@
inline void EmitXmmRegisterOperand(int rm, XmmRegister reg);
inline void EmitFixup(AssemblerFixup* fixup);
inline void EmitOperandSizeOverride();
-
+ inline void EmitREX_RB(XmmRegister reg,
+ XmmRegister base,
+ uint8_t rex = REX_NONE);
+ inline void EmitREX_RB(XmmRegister reg,
+ const Operand& operand,
+ uint8_t rex = REX_NONE);
+ inline void EmitREX_RB(XmmRegister reg,
+ Register base,
+ uint8_t rex = REX_NONE);
+ inline void EmitREX_RB(Register reg,
+ XmmRegister base,
+ uint8_t rex = REX_NONE);
void EmitOperand(int rm, const Operand& operand);
void EmitImmediate(const Immediate& imm);
void EmitComplex(int rm, const Operand& operand, const Immediate& immediate);
@@ -726,6 +736,42 @@
}
+inline void Assembler::EmitREX_RB(XmmRegister reg,
+ XmmRegister base,
+ uint8_t rex) {
+ if (reg > 7) rex |= REX_R;
+ if (base > 7) rex |= REX_B;
+ if (rex != REX_NONE) EmitUint8(REX_PREFIX | rex);
+}
+
+
+inline void Assembler::EmitREX_RB(XmmRegister reg,
+ const Operand& operand,
+ uint8_t rex) {
+ if (reg > 7) rex |= REX_R;
+ rex |= operand.rex();
+ if (rex != REX_NONE) EmitUint8(REX_PREFIX | rex);
+}
+
+
+inline void Assembler::EmitREX_RB(XmmRegister reg,
+ Register base,
+ uint8_t rex) {
+ if (reg > 7) rex |= REX_R;
+ if (base > 7) rex |= REX_B;
+ if (rex != REX_NONE) EmitUint8(REX_PREFIX | rex);
+}
+
+
+inline void Assembler::EmitREX_RB(Register reg,
+ XmmRegister base,
+ uint8_t rex) {
+ if (reg > 7) rex |= REX_R;
+ if (base > 7) rex |= REX_B;
+ if (rex != REX_NONE) EmitUint8(REX_PREFIX | rex);
+}
+
+
inline void Assembler::EmitFixup(AssemblerFixup* fixup) {
buffer_.EmitFixup(fixup);
}
diff --git a/runtime/vm/assembler_x64_test.cc b/runtime/vm/assembler_x64_test.cc
index f2d6fce..32a54fa 100644
--- a/runtime/vm/assembler_x64_test.cc
+++ b/runtime/vm/assembler_x64_test.cc
@@ -1244,6 +1244,14 @@
__ movss(XMM5, XMM4);
__ movss(XMM6, XMM5);
__ movss(XMM7, XMM6);
+ __ movss(XMM8, XMM7);
+ __ movss(XMM9, XMM8);
+ __ movss(XMM10, XMM9);
+ __ movss(XMM11, XMM10);
+ __ movss(XMM12, XMM11);
+ __ movss(XMM13, XMM12);
+ __ movss(XMM14, XMM13);
+ __ movss(XMM15, XMM14);
__ pushq(R15); // Callee saved.
__ pushq(RAX);
__ movq(Address(RSP, 0), Immediate(0));
@@ -1258,8 +1266,23 @@
__ movss(XMM3, Address(R15, 0));
__ movq(RAX, RSP);
__ movss(Address(RAX, 0), XMM3);
- __ movss(XMM4, Address(RAX, 0));
- __ movss(XMM0, Address(RAX, 0));
+ __ movss(XMM1, Address(RAX, 0));
+ __ movss(XMM15, Address(RAX, 0));
+ __ movss(XMM14, XMM15);
+ __ movss(XMM13, XMM14);
+ __ movss(XMM12, XMM13);
+ __ movss(XMM11, XMM12);
+ __ movss(XMM10, XMM11);
+ __ movss(XMM9, XMM10);
+ __ movss(XMM8, XMM9);
+ __ movss(XMM7, XMM8);
+ __ movss(XMM6, XMM7);
+ __ movss(XMM5, XMM6);
+ __ movss(XMM4, XMM5);
+ __ movss(XMM3, XMM4);
+ __ movss(XMM2, XMM3);
+ __ movss(XMM1, XMM2);
+ __ movss(XMM0, XMM1);
__ popq(RAX);
__ popq(R15); // Callee saved.
__ ret();
@@ -1275,12 +1298,18 @@
ASSEMBLER_TEST_GENERATE(SingleFPMoves2, assembler) {
__ movq(RAX, Immediate(bit_cast<int32_t, float>(234.0f)));
__ movd(XMM0, RAX);
- __ movss(XMM1, XMM0);
+ __ movd(XMM8, RAX);
+ __ movss(XMM1, XMM8);
__ pushq(RAX);
__ movq(Address(RSP, 0), Immediate(0));
__ movss(XMM0, Address(RSP, 0));
__ movss(Address(RSP, 0), XMM1);
__ movss(XMM0, Address(RSP, 0));
+ __ movq(Address(RSP, 0), Immediate(0));
+ __ movss(XMM9, XMM8);
+ __ movss(Address(RSP, 0), XMM9);
+ __ movss(XMM8, Address(RSP, 0));
+ __ movss(XMM0, XMM8);
__ popq(RAX);
__ ret();
}
@@ -1297,12 +1326,19 @@
__ pushq(RCX);
__ movq(RBX, Immediate(bit_cast<int32_t, float>(12.3f)));
__ movd(XMM0, RBX);
+ __ movd(XMM8, RBX);
__ movq(RCX, Immediate(bit_cast<int32_t, float>(3.4f)));
__ movd(XMM1, RCX);
+ __ movd(XMM9, RCX);
__ addss(XMM0, XMM1); // 15.7f
__ mulss(XMM0, XMM1); // 53.38f
__ subss(XMM0, XMM1); // 49.98f
__ divss(XMM0, XMM1); // 14.7f
+ __ addss(XMM8, XMM9); // 15.7f
+ __ mulss(XMM8, XMM9); // 53.38f
+ __ subss(XMM8, XMM9); // 49.98f
+ __ divss(XMM8, XMM9); // 14.7f
+ __ subss(XMM0, XMM8); // 0.0f
__ popq(RCX);
__ popq(RBX);
__ ret();
@@ -1312,7 +1348,7 @@
ASSEMBLER_TEST_RUN(SingleFPOperations, entry) {
typedef float (*SingleFPOperationsCode)();
float res = reinterpret_cast<SingleFPOperationsCode>(entry)();
- EXPECT_FLOAT_EQ(14.7f, res, 0.001f);
+ EXPECT_FLOAT_EQ(0.0f, res, 0.001f);
}
@@ -1328,9 +1364,17 @@
__ movsd(XMM5, XMM4);
__ movsd(XMM6, XMM5);
__ movsd(XMM7, XMM6);
+ __ movsd(XMM8, XMM7);
+ __ movsd(XMM9, XMM8);
+ __ movsd(XMM10, XMM9);
+ __ movsd(XMM11, XMM10);
+ __ movsd(XMM12, XMM11);
+ __ movsd(XMM13, XMM12);
+ __ movsd(XMM14, XMM13);
+ __ movsd(XMM15, XMM14);
__ movq(Address(RSP, 0), Immediate(0));
__ movsd(XMM0, Address(RSP, 0));
- __ movsd(Address(RSP, 0), XMM7);
+ __ movsd(Address(RSP, 0), XMM15);
__ movsd(XMM1, Address(RSP, 0));
__ movq(R10, RSP);
__ movsd(Address(R10, 0), XMM1);
@@ -1341,7 +1385,15 @@
__ movq(RAX, RSP);
__ movsd(Address(RAX, 0), XMM3);
__ movsd(XMM4, Address(RAX, 0));
- __ movsd(XMM7, Address(RSP, 0));
+ __ movsd(XMM15, Address(RSP, 0));
+ __ movaps(XMM14, XMM15);
+ __ movaps(XMM13, XMM14);
+ __ movaps(XMM12, XMM13);
+ __ movaps(XMM11, XMM12);
+ __ movaps(XMM10, XMM11);
+ __ movaps(XMM9, XMM10);
+ __ movaps(XMM8, XMM9);
+ __ movaps(XMM7, XMM8);
__ movaps(XMM6, XMM7);
__ movaps(XMM5, XMM6);
__ movaps(XMM4, XMM5);
@@ -1365,13 +1417,22 @@
__ movq(RAX, Immediate(bit_cast<int64_t, double>(12.3)));
__ pushq(RAX);
__ movsd(XMM0, Address(RSP, 0));
+ __ movsd(XMM8, Address(RSP, 0));
__ movq(RAX, Immediate(bit_cast<int64_t, double>(3.4)));
__ movq(Address(RSP, 0), RAX);
+ __ movsd(XMM12, Address(RSP, 0));
+ __ addsd(XMM8, XMM12); // 15.7
+ __ mulsd(XMM8, XMM12); // 53.38
+ __ subsd(XMM8, XMM12); // 49.98
+ __ divsd(XMM8, XMM12); // 14.7
+ __ sqrtsd(XMM8, XMM8); // 3.834
__ movsd(XMM1, Address(RSP, 0));
__ addsd(XMM0, XMM1); // 15.7
__ mulsd(XMM0, XMM1); // 53.38
__ subsd(XMM0, XMM1); // 49.98
__ divsd(XMM0, XMM1); // 14.7
+ __ sqrtsd(XMM0, XMM0); // 3.834057902
+ __ addsd(XMM0, XMM8); // 7.6681
__ popq(RAX);
__ ret();
}
@@ -1380,13 +1441,16 @@
ASSEMBLER_TEST_RUN(DoubleFPOperations, entry) {
typedef double (*SingleFPOperationsCode)();
double res = reinterpret_cast<SingleFPOperationsCode>(entry)();
- EXPECT_FLOAT_EQ(14.7, res, 0.001);
+ EXPECT_FLOAT_EQ(7.668, res, 0.001);
}
ASSEMBLER_TEST_GENERATE(Int32ToDoubleConversion, assembler) {
__ movl(RDX, Immediate(6));
__ cvtsi2sd(XMM0, RDX);
+ __ movl(RDX, Immediate(8));
+ __ cvtsi2sd(XMM8, RDX);
+ __ subsd(XMM0, XMM8);
__ ret();
}
@@ -1394,13 +1458,16 @@
ASSEMBLER_TEST_RUN(Int32ToDoubleConversion, entry) {
typedef double (*IntToDoubleConversionCode)();
double res = reinterpret_cast<IntToDoubleConversionCode>(entry)();
- EXPECT_FLOAT_EQ(6.0, res, 0.001);
+ EXPECT_FLOAT_EQ(-2.0, res, 0.001);
}
ASSEMBLER_TEST_GENERATE(Int64ToDoubleConversion, assembler) {
__ movq(RDX, Immediate(12LL << 32));
__ cvtsi2sd(XMM0, RDX);
+ __ movsd(XMM15, XMM0); // Move to high register
+ __ addsd(XMM0, XMM0); // Stomp XMM0
+ __ movsd(XMM0, XMM15); // Move back to XMM0
__ ret();
}
@@ -1415,9 +1482,14 @@
ASSEMBLER_TEST_GENERATE(DoubleToInt64Conversion, assembler) {
__ movq(RAX, Immediate(bit_cast<int64_t, double>(12.3)));
__ pushq(RAX);
+ __ movsd(XMM9, Address(RSP, 0));
__ movsd(XMM6, Address(RSP, 0));
__ popq(RAX);
+ __ cvttsd2siq(R10, XMM6);
__ cvttsd2siq(RDX, XMM6);
+ __ cvttsd2siq(R10, XMM9);
+ __ cvttsd2siq(RDX, XMM9);
+ __ subq(RDX, R10);
__ movq(RAX, RDX);
__ ret();
}
@@ -1426,7 +1498,7 @@
ASSEMBLER_TEST_RUN(DoubleToInt64Conversion, entry) {
typedef int64_t (*DoubleToInt64ConversionCode)();
int64_t res = reinterpret_cast<DoubleToInt64ConversionCode>(entry)();
- EXPECT_EQ(12, res);
+ EXPECT_EQ(0, res);
}
@@ -1605,7 +1677,14 @@
ASSEMBLER_TEST_GENERATE(XorpdZeroing2, assembler) {
+ Label done;
+ __ xorpd(XMM15, XMM15);
__ xorpd(XMM0, XMM0);
+ __ xorpd(XMM0, XMM15);
+ __ comisd(XMM0, XMM15);
+ __ j(ZERO, &done);
+ __ int3();
+ __ Bind(&done);
__ ret();
}
diff --git a/runtime/vm/benchmark_test.cc b/runtime/vm/benchmark_test.cc
index 29a2417..d719b0e 100644
--- a/runtime/vm/benchmark_test.cc
+++ b/runtime/vm/benchmark_test.cc
@@ -275,7 +275,7 @@
char* script = NULL;
if (dart_root != NULL) {
const char* kFormatStr =
- "#import('%s/sdk/lib/_internal/compiler/compiler.dart');";
+ "import '%s/sdk/lib/_internal/compiler/compiler.dart';";
intptr_t len = OS::SNPrint(NULL, 0, kFormatStr, dart_root) + 1;
script = reinterpret_cast<char*>(malloc(len));
EXPECT(script != NULL);
@@ -286,7 +286,7 @@
EXPECT_VALID(lib);
} else {
Dart_Handle lib = TestCase::LoadTestScript(
- "#import('sdk/lib/_internal/compiler/compiler.dart');",
+ "import 'sdk/lib/_internal/compiler/compiler.dart';",
reinterpret_cast<Dart_NativeEntryResolver>(NativeResolver));
EXPECT_VALID(lib);
}
diff --git a/runtime/vm/bootstrap_natives.cc b/runtime/vm/bootstrap_natives.cc
index 47a8c3a..9978bf7 100644
--- a/runtime/vm/bootstrap_natives.cc
+++ b/runtime/vm/bootstrap_natives.cc
@@ -60,7 +60,7 @@
ASSERT(!library.IsNull());
library.set_native_entry_resolver(resolver);
- library = Library::CollectionLibrary();
+ library = Library::MathLibrary();
ASSERT(!library.IsNull());
library.set_native_entry_resolver(resolver);
diff --git a/runtime/vm/bootstrap_natives.h b/runtime/vm/bootstrap_natives.h
index 7b424b0..fad33c9 100644
--- a/runtime/vm/bootstrap_natives.h
+++ b/runtime/vm/bootstrap_natives.h
@@ -27,6 +27,7 @@
V(Integer_moduloFromInteger, 2) \
V(Integer_greaterThanFromInteger, 2) \
V(Integer_equalToInteger, 2) \
+ V(Integer_parse, 1) \
V(ReceivePortImpl_factory, 1) \
V(ReceivePortImpl_closeInternal, 1) \
V(SendPortImpl_sendInternal_, 3) \
@@ -55,6 +56,7 @@
V(Double_ceil, 1) \
V(Double_truncate, 1) \
V(Double_toInt, 1) \
+ V(Double_parse, 1) \
V(Double_toStringAsFixed, 2) \
V(Double_toStringAsExponential, 2) \
V(Double_toStringAsPrecision, 2) \
@@ -80,19 +82,16 @@
V(String_toLowerCase, 1) \
V(String_toUpperCase, 1) \
V(Strings_concatAll, 1) \
- V(MathNatives_sqrt, 1) \
- V(MathNatives_sin, 1) \
- V(MathNatives_cos, 1) \
- V(MathNatives_tan, 1) \
- V(MathNatives_asin, 1) \
- V(MathNatives_acos, 1) \
- V(MathNatives_atan, 1) \
- V(MathNatives_atan2, 2) \
- V(MathNatives_exp, 1) \
- V(MathNatives_log, 1) \
- V(MathNatives_random, 0) \
- V(MathNatives_parseInt, 1) \
- V(MathNatives_parseDouble, 1) \
+ V(Math_sqrt, 1) \
+ V(Math_sin, 1) \
+ V(Math_cos, 1) \
+ V(Math_tan, 1) \
+ V(Math_asin, 1) \
+ V(Math_acos, 1) \
+ V(Math_atan, 1) \
+ V(Math_atan2, 2) \
+ V(Math_exp, 1) \
+ V(Math_log, 1) \
V(DateNatives_currentTimeMillis, 0) \
V(DateNatives_timeZoneName, 1) \
V(DateNatives_timeZoneOffsetInSeconds, 1) \
diff --git a/runtime/vm/class_finalizer.cc b/runtime/vm/class_finalizer.cc
index 3283db1..bae68fd 100644
--- a/runtime/vm/class_finalizer.cc
+++ b/runtime/vm/class_finalizer.cc
@@ -838,16 +838,6 @@
type_argument = arguments.TypeAt(i);
type_argument = FinalizeType(cls, type_argument, finalization);
if (type_argument.IsMalformed()) {
- // Malformed type arguments to a constructor of a generic type are
- // reported as a compile-time error.
- if (finalization >= kCanonicalizeForCreation) {
- const Script& script = Script::Handle(cls.script());
- const String& type_name =
- String::Handle(parameterized_type.UserVisibleName());
- ReportError(script, parameterized_type.token_pos(),
- "type '%s' has malformed type argument",
- type_name.ToCString());
- }
// In production mode, malformed type arguments are mapped to dynamic.
// In checked mode, a type with malformed type arguments is malformed.
if (FLAG_enable_type_checks || FLAG_error_on_malformed_type) {
@@ -877,7 +867,7 @@
// However, type parameter bounds are checked below, even for a raw type.
if (!arguments.IsNull() && (arguments.Length() != num_type_parameters)) {
// Wrong number of type arguments. The type is malformed.
- if (finalization >= kCanonicalizeForCreation) {
+ if (finalization >= kCanonicalizeExpression) {
const Script& script = Script::Handle(cls.script());
const String& type_name =
String::Handle(parameterized_type.UserVisibleName());
diff --git a/runtime/vm/class_finalizer.h b/runtime/vm/class_finalizer.h
index 18ce755..2fe9ea6 100644
--- a/runtime/vm/class_finalizer.h
+++ b/runtime/vm/class_finalizer.h
@@ -33,10 +33,13 @@
kDoNotResolve, // Type resolution is postponed.
kTryResolve, // Type resolution is attempted.
kFinalize, // Type resolution and type finalization are
- // required; a malformed type is tolerated.
+ // required; a malformed type is tolerated, since
+ // the type may be used as a type annotation.
kCanonicalize, // Same as kFinalize, but with canonicalization.
- kCanonicalizeForCreation, // Same as kCanonicalize, but do not tolerate
- // wrong number of type arguments.
+ kCanonicalizeExpression, // Same as kCanonicalize, but do not tolerate
+ // wrong number of type arguments or ambiguous
+ // type reference, since the type is not used as
+ // a type annotation, but as a type expression.
kCanonicalizeWellFormed // Error-free resolution, finalization, and
// canonicalization are required; a malformed
// type is not tolerated.
diff --git a/runtime/vm/code_generator.cc b/runtime/vm/code_generator.cc
index 008673f..f24bd03 100644
--- a/runtime/vm/code_generator.cc
+++ b/runtime/vm/code_generator.cc
@@ -770,73 +770,38 @@
}
-static bool UpdateResolvedStaticCall(const Code& code,
- intptr_t offset,
- const Code& target_code) {
- // PC offsets are mapped to the corresponding code object in the
- // resolved_static_calls array. The array grows as static calls are being
- // resolved.
- const int kOffset = 0;
- const int kCode = 1;
- const int kEntrySize = 2;
-
- GrowableObjectArray& resolved_static_calls =
- GrowableObjectArray::Handle(code.resolved_static_calls());
- intptr_t index = -1;
- if (resolved_static_calls.IsNull()) {
- resolved_static_calls = GrowableObjectArray::New(2, Heap::kOld);
- code.set_resolved_static_calls(resolved_static_calls);
- } else {
- // Search for the offset in the resolved static calls.
- const intptr_t len = resolved_static_calls.Length();
- Object& off = Object::Handle();
- for (intptr_t i = 0; i < len; i += kEntrySize) {
- off = resolved_static_calls.At(i + kOffset);
- if (Smi::Cast(off).Value() == offset) {
- index = i;
- break;
- }
- }
- }
- if (index == -1) {
- // The static call with this offset is not yet present: Add it.
- resolved_static_calls.Add(Smi::Handle(Smi::New(offset)));
- resolved_static_calls.Add(target_code);
- } else {
- // Overwrite the currently recorded target.
- resolved_static_calls.SetAt(index + kCode, target_code);
- }
- return index != -1;
-}
-
-
+// Patches static call with the target's entry point. Compiles target if
+// necessary.
DEFINE_RUNTIME_ENTRY(PatchStaticCall, 0) {
- // This function is called after successful resolving and compilation of
- // the target method.
ASSERT(arguments.ArgCount() == kPatchStaticCallRuntimeEntry.argument_count());
DartFrameIterator iterator;
StackFrame* caller_frame = iterator.NextFrame();
ASSERT(caller_frame != NULL);
- uword target = 0;
- Function& target_function = Function::Handle();
- CodePatcher::GetStaticCallAt(caller_frame->pc(), &target_function, &target);
- ASSERT(target_function.HasCode());
+ const Code& caller_code = Code::Handle(caller_frame->LookupDartCode());
+ ASSERT(!caller_code.IsNull());
+ const Function& target_function = Function::Handle(
+ caller_code.GetStaticCallTargetFunctionAt(caller_frame->pc()));
+ if (!target_function.HasCode()) {
+ const Error& error =
+ Error::Handle(Compiler::CompileFunction(target_function));
+ if (!error.IsNull()) {
+ Exceptions::PropagateError(error);
+ }
+ }
const Code& target_code = Code::Handle(target_function.CurrentCode());
- uword new_target = target_code.EntryPoint();
- // Verify that we are not patching repeatedly.
- ASSERT(target != new_target);
- CodePatcher::PatchStaticCallAt(caller_frame->pc(), new_target);
- const Code& code = Code::Handle(caller_frame->LookupDartCode());
- bool found = UpdateResolvedStaticCall(code,
- caller_frame->pc() - code.EntryPoint(),
- target_code);
- ASSERT(!found);
+ // Before patching verify that we are not repeatedly patching to the same
+ // target.
+ ASSERT(target_code.EntryPoint() !=
+ CodePatcher::GetStaticCallTargetAt(caller_frame->pc()));
+ CodePatcher::PatchStaticCallAt(caller_frame->pc(), target_code.EntryPoint());
+ caller_code.SetStaticCallTargetCodeAt(caller_frame->pc(), target_code);
if (FLAG_trace_patching) {
OS::Print("PatchStaticCall: patching from %#"Px" to '%s' %#"Px"\n",
caller_frame->pc(),
target_function.ToFullyQualifiedCString(),
- new_target);
+ target_code.EntryPoint());
}
+ arguments.SetReturn(target_code);
}
@@ -904,8 +869,7 @@
// Gets called from debug stub when code reaches a breakpoint.
-// Arg0: function object of the static function that was about to be called.
-DEFINE_RUNTIME_ENTRY(BreakpointStaticHandler, 1) {
+DEFINE_RUNTIME_ENTRY(BreakpointStaticHandler, 0) {
ASSERT(arguments.ArgCount() ==
kBreakpointStaticHandlerRuntimeEntry.argument_count());
ASSERT(isolate->debugger() != NULL);
@@ -913,13 +877,20 @@
// Make sure the static function that is about to be called is
// compiled. The stub will jump to the entry point without any
// further tests.
- const Function& function = Function::CheckedHandle(arguments.ArgAt(0));
+ DartFrameIterator iterator;
+ StackFrame* caller_frame = iterator.NextFrame();
+ ASSERT(caller_frame != NULL);
+ const Code& code = Code::Handle(caller_frame->LookupDartCode());
+ const Function& function =
+ Function::Handle(code.GetStaticCallTargetFunctionAt(caller_frame->pc()));
+
if (!function.HasCode()) {
const Error& error = Error::Handle(Compiler::CompileFunction(function));
if (!error.IsNull()) {
Exceptions::PropagateError(error);
}
}
+ arguments.SetReturn(Code::ZoneHandle(function.CurrentCode()));
}
@@ -1376,12 +1347,6 @@
const Array& function_args = Array::CheckedHandle(arguments.ArgAt(1));
const String& function_name = String::Handle(Symbols::Call());
GrowableArray<const Object*> dart_arguments(5);
- if (instance.IsNull()) {
- dart_arguments.Add(&function_name);
- dart_arguments.Add(&function_args);
- Exceptions::ThrowByType(Exceptions::kNullPointer, dart_arguments);
- UNREACHABLE();
- }
// TODO(regis): Resolve and invoke "call" method, if existing.
@@ -1565,13 +1530,10 @@
// The caller must be a static call in a Dart frame, or an entry frame.
-// Patch static call to point to 'new_entry_point'.
-DEFINE_RUNTIME_ENTRY(FixCallersTarget, 1) {
+// Patch static call to point to valid code's entry point.
+DEFINE_RUNTIME_ENTRY(FixCallersTarget, 0) {
ASSERT(arguments.ArgCount() ==
kFixCallersTargetRuntimeEntry.argument_count());
- const Function& function = Function::CheckedHandle(arguments.ArgAt(0));
- ASSERT(!function.IsNull());
- ASSERT(function.HasCode());
StackFrameIterator iterator(StackFrameIterator::kDontValidateFrames);
StackFrame* frame = iterator.NextFrame();
@@ -1579,29 +1541,25 @@
frame = iterator.NextFrame();
}
ASSERT(frame != NULL);
- if (!frame->IsEntryFrame()) {
- ASSERT(frame->IsDartFrame());
- uword target = 0;
- Function& target_function = Function::Handle();
- CodePatcher::GetStaticCallAt(frame->pc(), &target_function, &target);
- ASSERT(target_function.HasCode());
- ASSERT(target_function.raw() == function.raw());
- const Code& target_code = Code::Handle(function.CurrentCode());
- const uword new_entry_point = target_code.EntryPoint();
- ASSERT(target != new_entry_point); // Why patch otherwise.
- CodePatcher::PatchStaticCallAt(frame->pc(), new_entry_point);
- const Code& code = Code::Handle(frame->LookupDartCode());
- bool found = UpdateResolvedStaticCall(code,
- frame->pc() - code.EntryPoint(),
- target_code);
- ASSERT(found);
- if (FLAG_trace_patching) {
- OS::Print("FixCallersTarget: patching from %#"Px" to '%s' %#"Px"\n",
- frame->pc(),
- target_function.ToFullyQualifiedCString(),
- new_entry_point);
- }
+ if (frame->IsEntryFrame()) {
+ // Since function's current code is always unpatched, the entry frame always
+ // calls to unpatched code.
+ UNREACHABLE();
}
+ ASSERT(frame->IsDartFrame());
+ const Code& caller_code = Code::Handle(frame->LookupDartCode());
+ const Function& target_function = Function::Handle(
+ caller_code.GetStaticCallTargetFunctionAt(frame->pc()));
+ const Code& target_code = Code::Handle(target_function.CurrentCode());
+ CodePatcher::PatchStaticCallAt(frame->pc(), target_code.EntryPoint());
+ caller_code.SetStaticCallTargetCodeAt(frame->pc(), target_code);
+ if (FLAG_trace_patching) {
+ OS::Print("FixCallersTarget: patching from %#"Px" to '%s' %#"Px"\n",
+ frame->pc(),
+ Function::Handle(target_code.function()).ToFullyQualifiedCString(),
+ target_code.EntryPoint());
+ }
+ arguments.SetReturn(target_code);
}
diff --git a/runtime/vm/code_patcher.h b/runtime/vm/code_patcher.h
index ebe8980..8377692 100644
--- a/runtime/vm/code_patcher.h
+++ b/runtime/vm/code_patcher.h
@@ -43,10 +43,7 @@
// or dynamic Dart call.
static bool IsDartCall(uword return_address);
- // Get static call information.
- static void GetStaticCallAt(uword return_address,
- Function* function,
- uword* target);
+ static uword GetStaticCallTargetAt(uword return_address);
// Get instance call information.
static void GetInstanceCallAt(uword return_address,
diff --git a/runtime/vm/code_patcher_arm.cc b/runtime/vm/code_patcher_arm.cc
index e67ce9d..0211183 100644
--- a/runtime/vm/code_patcher_arm.cc
+++ b/runtime/vm/code_patcher_arm.cc
@@ -10,7 +10,6 @@
namespace dart {
void CodePatcher::GetStaticCallAt(uword return_address,
- Function* function,
uword* target) {
UNIMPLEMENTED();
}
diff --git a/runtime/vm/code_patcher_ia32.cc b/runtime/vm/code_patcher_ia32.cc
index fc9a340..83260ce 100644
--- a/runtime/vm/code_patcher_ia32.cc
+++ b/runtime/vm/code_patcher_ia32.cc
@@ -14,7 +14,7 @@
namespace dart {
-// The pattern of a Dart call is:
+// The pattern of a Dart instance call is:
// 1: mov ECX, immediate 1
// 2: mov EDX, immediate 2
// 3: call target_address
@@ -97,27 +97,6 @@
};
-// The expected pattern of a dart static call:
-// mov ECX, function_object
-// mov EDX, argument_descriptor_array
-// call target_address
-// <- return address
-class StaticCall : public DartCallPattern {
- public:
- explicit StaticCall(uword return_address)
- : DartCallPattern(return_address) {}
-
- RawFunction* function() const {
- Function& f = Function::Handle();
- f ^= reinterpret_cast<RawObject*>(immediate_one());
- return f.raw();
- }
-
- private:
- DISALLOW_IMPLICIT_CONSTRUCTORS(StaticCall);
-};
-
-
// The expected pattern of a dart instance call:
// mov ECX, ic-data
// mov EDX, argument_descriptor_array
@@ -139,14 +118,59 @@
};
-void CodePatcher::GetStaticCallAt(uword return_address,
- Function* function,
- uword* target) {
- ASSERT(function != NULL);
- ASSERT(target != NULL);
+// The expected pattern of a dart static call:
+// mov EDX, argument_descriptor_array
+// call target_address
+// <- return address
+class StaticCall : public ValueObject {
+ public:
+ explicit StaticCall(uword return_address)
+ : start_(return_address - (kNumInstructions * kInstructionSize)) {
+ ASSERT(IsValid(return_address));
+ ASSERT(kInstructionSize == Assembler::kCallExternalLabelSize);
+ }
+
+ static bool IsValid(uword return_address) {
+ uint8_t* code_bytes =
+ reinterpret_cast<uint8_t*>(
+ return_address - (kNumInstructions * kInstructionSize));
+ return (code_bytes[0] == 0xBA) &&
+ (code_bytes[1 * kInstructionSize] == 0xE8);
+ }
+
+ uword target() const {
+ const uword offset = *reinterpret_cast<uword*>(call_address() + 1);
+ return return_address() + offset;
+ }
+
+ void set_target(uword target) const {
+ uword* target_addr = reinterpret_cast<uword*>(call_address() + 1);
+ uword offset = target - return_address();
+ *target_addr = offset;
+ CPU::FlushICache(call_address(), kInstructionSize);
+ }
+
+ static const int kNumInstructions = 2;
+ static const int kInstructionSize = 5; // All instructions have same length.
+
+ private:
+ uword return_address() const {
+ return start_ + kNumInstructions * kInstructionSize;
+ }
+
+ uword call_address() const {
+ return start_ + 1 * kInstructionSize;
+ }
+
+ uword start_;
+
+ DISALLOW_IMPLICIT_CONSTRUCTORS(StaticCall);
+};
+
+
+uword CodePatcher::GetStaticCallTargetAt(uword return_address) {
StaticCall call(return_address);
- *target = call.target();
- *function = call.function();
+ return call.target();
}
diff --git a/runtime/vm/code_patcher_x64.cc b/runtime/vm/code_patcher_x64.cc
index 059c9cd..58a3785 100644
--- a/runtime/vm/code_patcher_x64.cc
+++ b/runtime/vm/code_patcher_x64.cc
@@ -14,7 +14,7 @@
namespace dart {
-// The pattern of a Dart call is:
+// The pattern of a Dart instance call is:
// 00: 48 bb imm64 mov RBX, immediate 1
// 10: 49 ba imm64 mov R10, immediate 2
// 20: 49 bb imm64 mov R11, target_address
@@ -87,24 +87,13 @@
};
-// A Dart static call passes the function object in RBX.
-class StaticCall : public DartCallPattern {
- public:
- explicit StaticCall(uword return_address)
- : DartCallPattern(return_address) {}
-
- RawFunction* function() const {
- Function& f = Function::Handle();
- f ^= reinterpret_cast<RawObject*>(immediate_one());
- return f.raw();
- }
-
- private:
- DISALLOW_IMPLICIT_CONSTRUCTORS(StaticCall);
-};
-
-
// A Dart instance call passes the ic-data in RBX.
+// The expected pattern of a dart instance call:
+// mov RBX, ic-data
+// mov R10, argument_descriptor_array
+// mov R11, target_address
+// call R11
+// <- return address
class InstanceCall : public DartCallPattern {
public:
explicit InstanceCall(uword return_address)
@@ -121,14 +110,50 @@
};
-void CodePatcher::GetStaticCallAt(uword return_address,
- Function* function,
- uword* target) {
- ASSERT(function != NULL);
- ASSERT(target != NULL);
+// The expected pattern of a dart static call:
+// mov R10, argument_descriptor_array (10 bytes)
+// mov R11, target_address (10 bytes)
+// call R11 (3 bytes)
+// <- return address
+class StaticCall : public ValueObject {
+ public:
+ explicit StaticCall(uword return_address)
+ : start_(return_address - kCallPatternSize) {
+ ASSERT(IsValid(return_address));
+ ASSERT((kCallPatternSize - 10) == Assembler::kCallExternalLabelSize);
+ }
+
+ static const int kCallPatternSize = 23;
+
+ static bool IsValid(uword return_address) {
+ uint8_t* code_bytes =
+ reinterpret_cast<uint8_t*>(return_address - kCallPatternSize);
+ return (code_bytes[00] == 0x49) && (code_bytes[01] == 0xBA) &&
+ (code_bytes[10] == 0x49) && (code_bytes[11] == 0xBB) &&
+ (code_bytes[20] == 0x41) && (code_bytes[21] == 0xFF) &&
+ (code_bytes[22] == 0xD3);
+ }
+
+ uword target() const {
+ return *reinterpret_cast<uword*>(start_ + 10 + 2);
+ }
+
+ void set_target(uword target) const {
+ uword* target_addr = reinterpret_cast<uword*>(start_ + 10 + 2);
+ *target_addr = target;
+ CPU::FlushICache(start_ + 10, 2 + 8);
+ }
+
+ private:
+ uword start_;
+
+ DISALLOW_IMPLICIT_CONSTRUCTORS(StaticCall);
+};
+
+
+uword CodePatcher::GetStaticCallTargetAt(uword return_address) {
StaticCall call(return_address);
- *target = call.target();
- *function = call.function();
+ return call.target();
}
diff --git a/runtime/vm/compiler.cc b/runtime/vm/compiler.cc
index 4b11672..25cb8a3 100644
--- a/runtime/vm/compiler.cc
+++ b/runtime/vm/compiler.cc
@@ -277,6 +277,7 @@
graph_compiler.FinalizeVarDescriptors(code);
graph_compiler.FinalizeExceptionHandlers(code);
graph_compiler.FinalizeComments(code);
+ graph_compiler.FinalizeStaticCallTargetsTable(code);
if (optimized) {
CodePatcher::PatchEntry(Code::Handle(function.CurrentCode()));
function.SetCode(code);
@@ -416,6 +417,25 @@
const ExceptionHandlers& handlers =
ExceptionHandlers::Handle(code.exception_handlers());
OS::Print("%s}\n", handlers.ToCString());
+
+ {
+ OS::Print("Static call target functions {\n");
+ const Array& table = Array::Handle(code.static_calls_target_table());
+ Smi& offset = Smi::Handle();
+ Function& function = Function::Handle();
+ Code& code = Code::Handle();
+ for (intptr_t i = 0; i < table.Length();
+ i += Code::kSCallTableEntryLength) {
+ offset ^= table.At(i + Code::kSCallTableOffsetEntry);
+ function ^= table.At(i + Code::kSCallTableFunctionEntry);
+ code ^= table.At(i + Code::kSCallTableCodeEntry);
+ OS::Print(" 0x%"Px": %s, %p\n",
+ start + offset.Value(),
+ function.ToFullyQualifiedCString(),
+ code.raw());
+ }
+ OS::Print("}\n");
+ }
}
diff --git a/runtime/vm/constants_ia32.h b/runtime/vm/constants_ia32.h
index 1c8325f..02a84b7 100644
--- a/runtime/vm/constants_ia32.h
+++ b/runtime/vm/constants_ia32.h
@@ -69,7 +69,8 @@
TIMES_1 = 0,
TIMES_2 = 1,
TIMES_4 = 2,
- TIMES_8 = 3
+ TIMES_8 = 3,
+ TIMES_HALF_WORD_SIZE = kWordSizeLog2 - 1
};
diff --git a/runtime/vm/constants_x64.h b/runtime/vm/constants_x64.h
index 579ea56..38a2046 100644
--- a/runtime/vm/constants_x64.h
+++ b/runtime/vm/constants_x64.h
@@ -51,7 +51,15 @@
XMM5 = 5,
XMM6 = 6,
XMM7 = 7,
- kNumberOfXmmRegisters = 8,
+ XMM8 = 8,
+ XMM9 = 9,
+ XMM10 = 10,
+ XMM11 = 11,
+ XMM12 = 12,
+ XMM13 = 13,
+ XMM14 = 14,
+ XMM15 = 15,
+ kNumberOfXmmRegisters = 16,
kNoXmmRegister = -1 // Signals an illegal register.
};
@@ -84,7 +92,8 @@
TIMES_1 = 0,
TIMES_2 = 1,
TIMES_4 = 2,
- TIMES_8 = 3
+ TIMES_8 = 3,
+ TIMES_HALF_WORD_SIZE = kWordSizeLog2 - 1
};
diff --git a/runtime/vm/custom_isolate_test.cc b/runtime/vm/custom_isolate_test.cc
index 2090a7d..d8e2444 100644
--- a/runtime/vm/custom_isolate_test.cc
+++ b/runtime/vm/custom_isolate_test.cc
@@ -24,7 +24,7 @@
static const char* kCustomIsolateScriptChars =
- "#import('dart:isolate');\n"
+ "import 'dart:isolate';\n"
"\n"
"ReceivePort mainPort;\n"
"\n"
diff --git a/runtime/vm/dart.cc b/runtime/vm/dart.cc
index 99e2886..fcc3501 100644
--- a/runtime/vm/dart.cc
+++ b/runtime/vm/dart.cc
@@ -48,12 +48,12 @@
// TODO(turnidge): We should add a corresponding Dart::Cleanup.
-bool Dart::InitOnce(Dart_IsolateCreateCallback create,
+const char* Dart::InitOnce(Dart_IsolateCreateCallback create,
Dart_IsolateInterruptCallback interrupt,
Dart_IsolateShutdownCallback shutdown) {
// TODO(iposva): Fix race condition here.
if (vm_isolate_ != NULL || !Flags::Initialized()) {
- return false;
+ return "VM already initialized.";
}
OS::InitOnce();
VirtualMemory::InitOnce();
@@ -78,8 +78,10 @@
Symbols::InitOnce(vm_isolate_);
CPUFeatures::InitOnce();
#if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64)
- // Dart VM requires at least SSE3.
- if (!CPUFeatures::sse3_supported()) return false;
+ // Dart VM requires at least SSE2.
+ if (!CPUFeatures::sse2_supported()) {
+ return "SSE2 is required.";
+ }
#endif
PremarkingVisitor premarker(vm_isolate_);
vm_isolate_->heap()->IterateOldObjects(&premarker);
@@ -89,7 +91,7 @@
Isolate::SetCreateCallback(create);
Isolate::SetInterruptCallback(interrupt);
Isolate::SetShutdownCallback(shutdown);
- return true;
+ return NULL;
}
diff --git a/runtime/vm/dart.h b/runtime/vm/dart.h
index 4b741e0..585cddd 100644
--- a/runtime/vm/dart.h
+++ b/runtime/vm/dart.h
@@ -18,9 +18,9 @@
class Dart : public AllStatic {
public:
- static bool InitOnce(Dart_IsolateCreateCallback create,
- Dart_IsolateInterruptCallback interrupt,
- Dart_IsolateShutdownCallback shutdown);
+ static const char* InitOnce(Dart_IsolateCreateCallback create,
+ Dart_IsolateInterruptCallback interrupt,
+ Dart_IsolateShutdownCallback shutdown);
static Isolate* CreateIsolate(const char* name_prefix);
static RawError* InitializeIsolate(const uint8_t* snapshot, void* data);
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index 88d0389..aed8a10 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -739,7 +739,12 @@
DART_EXPORT bool Dart_Initialize(Dart_IsolateCreateCallback create,
Dart_IsolateInterruptCallback interrupt,
Dart_IsolateShutdownCallback shutdown) {
- return Dart::InitOnce(create, interrupt, shutdown);
+ const char* err_msg = Dart::InitOnce(create, interrupt, shutdown);
+ if (err_msg != NULL) {
+ OS::PrintErr("Dart_Initialize: %s\n", err_msg);
+ return false;
+ }
+ return true;
}
DART_EXPORT bool Dart_SetVMFlags(int argc, const char** argv) {
@@ -1571,7 +1576,7 @@
}
-DART_EXPORT Dart_Handle Dart_NewStringFromUTF32(const uint32_t* utf32_array,
+DART_EXPORT Dart_Handle Dart_NewStringFromUTF32(const int32_t* utf32_array,
intptr_t length) {
Isolate* isolate = Isolate::Current();
DARTSCOPE(isolate);
diff --git a/runtime/vm/dart_api_impl_test.cc b/runtime/vm/dart_api_impl_test.cc
index 0fa7e0b..ecc1df1 100644
--- a/runtime/vm/dart_api_impl_test.cc
+++ b/runtime/vm/dart_api_impl_test.cc
@@ -541,7 +541,7 @@
EXPECT(Dart_IsString(ext16));
EXPECT(Dart_IsExternalString(ext16));
- uint32_t data32[] = { 'f', 'o', 'u', 'r', 0x10FFFF };
+ int32_t data32[] = { 'f', 'o', 'u', 'r', 0x10FFFF };
Dart_Handle str32 = Dart_NewStringFromUTF32(data32, ARRAY_SIZE(data32));
EXPECT_VALID(str32);
@@ -2647,7 +2647,7 @@
" return new Fields();\n"
"}\n";
const char* kImportedScriptChars =
- "#library('library_name');\n"
+ "library library_name;\n"
"var imported_fld = 'imported';\n"
"var _imported_fld = 'hidden imported';\n"
"get imported_getset_fld { return _gs_fld1; }\n"
@@ -2951,7 +2951,7 @@
TEST_CASE(InjectNativeFields3) {
const char* kScriptChars =
- "#import('dart:nativewrappers');"
+ "import 'dart:nativewrappers';"
"class NativeFields extends NativeFieldWrapperClass2 {\n"
" NativeFields(int i, int j) : fld1 = i, fld2 = j {}\n"
" int fld1;\n"
@@ -2993,7 +2993,7 @@
TEST_CASE(InjectNativeFields4) {
const char* kScriptChars =
- "#import('dart:nativewrappers');"
+ "import 'dart:nativewrappers';"
"class NativeFields extends NativeFieldWrapperClass2 {\n"
" NativeFields(int i, int j) : fld1 = i, fld2 = j {}\n"
" int fld1;\n"
@@ -3015,7 +3015,7 @@
// We expect the test script to fail finalization with the error below:
EXPECT(Dart_IsError(result));
Dart_Handle expected_error = Dart_Error(
- "'dart:test-lib': Error: line 1 pos 38: "
+ "'dart:test-lib': Error: line 1 pos 36: "
"class 'NativeFields' is trying to extend a native fields class, "
"but library '%s' has no native resolvers",
TestCase::url());
@@ -3025,7 +3025,7 @@
TEST_CASE(InjectNativeFieldsSuperClass) {
const char* kScriptChars =
- "#import('dart:nativewrappers');"
+ "import 'dart:nativewrappers';"
"class NativeFieldsSuper extends NativeFieldWrapperClass1 {\n"
" NativeFieldsSuper() : fld1 = 42 {}\n"
" int fld1;\n"
@@ -3185,7 +3185,7 @@
TEST_CASE(ImplicitNativeFieldAccess) {
const char* kScriptChars =
- "#import('dart:nativewrappers');"
+ "import 'dart:nativewrappers';"
"class NativeFields extends NativeFieldWrapperClass4 {\n"
" NativeFields(int i, int j) : fld1 = i, fld2 = j {}\n"
" int fld0;\n"
@@ -3811,11 +3811,11 @@
TEST_CASE(Invoke_CrossLibrary) {
const char* kLibrary1Chars =
- "#library('library1_name');\n"
+ "library library1_name;\n"
"void local() {}\n"
"void _local() {}\n";
const char* kLibrary2Chars =
- "#library('library2_name');\n"
+ "library library2_name;\n"
"void imported() {}\n"
"void _imported() {}\n";
@@ -5115,11 +5115,11 @@
TEST_CASE(LookupLibrary) {
const char* kScriptChars =
- "#import('library1.dart');"
+ "import 'library1_dart';"
"main() {}";
const char* kLibrary1Chars =
- "#library('library1.dart');"
- "#import('library2.dart');";
+ "library library1_dart;"
+ "import 'library2_dart';";
// Create a test library and Load up a test script in it.
Dart_Handle url = NewString(TestCase::url());
@@ -5129,7 +5129,7 @@
result = Dart_LoadScript(url, source);
EXPECT_VALID(result);
- url = NewString("library1.dart");
+ url = NewString("library1_dart");
source = NewString(kLibrary1Chars);
result = Dart_LoadLibrary(url, source);
EXPECT_VALID(result);
@@ -5162,7 +5162,7 @@
TEST_CASE(LibraryName) {
const char* kLibrary1Chars =
- "#library('library1_name');";
+ "library library1_name;";
Dart_Handle url = NewString("library1_url");
Dart_Handle source = NewString(kLibrary1Chars);
Dart_Handle lib = Dart_LoadLibrary(url, source);
@@ -5195,7 +5195,7 @@
TEST_CASE(LibraryUrl) {
const char* kLibrary1Chars =
- "#library('library1_name');";
+ "library library1_name;";
Dart_Handle url = NewString("library1_url");
Dart_Handle source = NewString(kLibrary1Chars);
Dart_Handle lib = Dart_LoadLibrary(url, source);
@@ -5228,7 +5228,7 @@
TEST_CASE(LibraryGetClassNames) {
const char* kLibraryChars =
- "#library('library_name');\n"
+ "library library_name;\n"
"\n"
"class A {}\n"
"class B {}\n"
@@ -5265,7 +5265,7 @@
TEST_CASE(GetFunctionNames) {
const char* kLibraryChars =
- "#library('library_name');\n"
+ "library library_name;\n"
"\n"
"void A() {}\n"
"get B => 11;\n"
@@ -5335,7 +5335,7 @@
TEST_CASE(GetVariableNames) {
const char* kLibraryChars =
- "#library('library_name');\n"
+ "library library_name;\n"
"\n"
"var A;\n"
"get B => 12;\n"
@@ -5400,9 +5400,9 @@
TEST_CASE(LibraryImportLibrary) {
const char* kLibrary1Chars =
- "#library('library1_name');";
+ "library library1_name;";
const char* kLibrary2Chars =
- "#library('library2_name');";
+ "library library2_name;";
Dart_Handle error = Dart_Error("incoming error");
Dart_Handle result;
@@ -5455,7 +5455,7 @@
TEST_CASE(ImportLibraryWithPrefix) {
const char* kLibrary1Chars =
- "#library('library1_name');"
+ "library library1_name;"
"int bar() => 42;";
Dart_Handle url1 = NewString("library1_url");
Dart_Handle source1 = NewString(kLibrary1Chars);
@@ -5464,7 +5464,7 @@
EXPECT(Dart_IsLibrary(lib1));
const char* kLibrary2Chars =
- "#library('library2_name');"
+ "library library2_name;"
"int foobar() => foo.bar();";
Dart_Handle url2 = NewString("library2_url");
Dart_Handle source2 = NewString(kLibrary2Chars);
@@ -5496,7 +5496,7 @@
TEST_CASE(LoadLibrary) {
const char* kLibrary1Chars =
- "#library('library1_name');";
+ "library library1_name;";
Dart_Handle error = Dart_Error("incoming error");
Dart_Handle result;
@@ -5548,7 +5548,7 @@
TEST_CASE(LoadLibrary_CompileError) {
const char* kLibrary1Chars =
- "#library('library1_name');"
+ "library library1_name;"
")";
Dart_Handle url = NewString("library1_url");
Dart_Handle source = NewString(kLibrary1Chars);
@@ -5560,7 +5560,7 @@
TEST_CASE(LoadSource) {
const char* kLibrary1Chars =
- "#library('library1_name');";
+ "library library1_name;";
const char* kSourceChars =
"// Something innocuous";
const char* kBadSourceChars =
@@ -5643,7 +5643,7 @@
TEST_CASE(LoadSource_LateLoad) {
const char* kLibrary1Chars =
- "#library('library1_name');\n"
+ "library library1_name;\n"
"class OldClass {\n"
" foo() => 'foo';\n"
"}\n";
@@ -5688,7 +5688,7 @@
TEST_CASE(LoadPatch) {
const char* kLibrary1Chars =
- "#library('library1_name');";
+ "library library1_name;";
const char* kSourceChars =
"external int foo();";
const char* kPatchChars =
@@ -5737,7 +5737,7 @@
TEST_CASE(ParsePatchLibrary) {
const char* kLibraryChars =
- "#library('patched_library');\n"
+ "library patched_library;\n"
"class A {\n"
" final fvalue;\n"
" var _f;\n"
@@ -5779,7 +5779,7 @@
"patch(x) => x*3;\n";
const char* kScriptChars =
- "#import('theLibrary');\n"
+ "import 'theLibrary';\n"
"e1() => unpatched();\n"
"m1() => topLevel(2);\n"
"m2() {\n"
@@ -5982,16 +5982,16 @@
// in the importing library.
TEST_CASE(ImportLibrary2) {
const char* kScriptChars =
- "#import('library1.dart');\n"
+ "import 'library1_dart';\n"
"var foo;\n"
"main() { foo = 0; }\n";
const char* kLibrary1Chars =
- "#library('library1.dart');\n"
- "#import('library2.dart');\n"
+ "library library1_dart;\n"
+ "import 'library2_dart';\n"
"var foo;\n";
const char* kLibrary2Chars =
- "#library('library2.dart');\n"
- "#import('library1.dart');\n"
+ "library library2_dart;\n"
+ "import 'library1_dart';\n"
"var foo;\n";
Dart_Handle result;
// Create a test library and Load up a test script in it.
@@ -6001,11 +6001,11 @@
EXPECT_VALID(result);
result = Dart_LoadScript(url, source);
- url = NewString("library1.dart");
+ url = NewString("library1_dart");
source = NewString(kLibrary1Chars);
Dart_LoadLibrary(url, source);
- url = NewString("library2.dart");
+ url = NewString("library2_dart");
source = NewString(kLibrary2Chars);
Dart_LoadLibrary(url, source);
@@ -6018,15 +6018,15 @@
// an error if that name is referenced.
TEST_CASE(ImportLibrary3) {
const char* kScriptChars =
- "#import('library2.dart');\n"
- "#import('library1.dart');\n"
+ "import 'library2_dart';\n"
+ "import 'library1_dart';\n"
"var foo_top = 10; // foo has dup def. So should be an error.\n"
"main() { foo = 0; }\n";
const char* kLibrary1Chars =
- "#library('library1.dart');\n"
+ "library library1_dart;\n"
"var foo;";
const char* kLibrary2Chars =
- "#library('library2.dart');\n"
+ "library library2_dart;\n"
"var foo;";
Dart_Handle result;
@@ -6038,11 +6038,11 @@
result = Dart_LoadScript(url, source);
EXPECT_VALID(result);
- url = NewString("library2.dart");
+ url = NewString("library2_dart");
source = NewString(kLibrary2Chars);
Dart_LoadLibrary(url, source);
- url = NewString("library1.dart");
+ url = NewString("library1_dart");
source = NewString(kLibrary1Chars);
Dart_LoadLibrary(url, source);
@@ -6056,14 +6056,14 @@
// not an error if that name is not used.
TEST_CASE(ImportLibrary4) {
const char* kScriptChars =
- "#import('library2.dart');\n"
- "#import('library1.dart');\n"
+ "import 'library2_dart';\n"
+ "import 'library1_dart';\n"
"main() { }\n";
const char* kLibrary1Chars =
- "#library('library1.dart');\n"
+ "library library1_dart;\n"
"var foo;";
const char* kLibrary2Chars =
- "#library('library2.dart');\n"
+ "library library2_dart;\n"
"var foo;";
Dart_Handle result;
@@ -6075,11 +6075,11 @@
result = Dart_LoadScript(url, source);
EXPECT_VALID(result);
- url = NewString("library2.dart");
+ url = NewString("library2_dart");
source = NewString(kLibrary2Chars);
Dart_LoadLibrary(url, source);
- url = NewString("library1.dart");
+ url = NewString("library1_dart");
source = NewString(kLibrary1Chars);
Dart_LoadLibrary(url, source);
@@ -6090,13 +6090,13 @@
TEST_CASE(ImportLibrary5) {
const char* kScriptChars =
- "#import('lib.dart');\n"
+ "import 'lib.dart';\n"
"interface Y {\n"
" void set handler(void callback(List<int> x));\n"
"}\n"
"void main() {}\n";
const char* kLibraryChars =
- "#library('lib.dart');\n"
+ "library lib.dart;\n"
"interface X {\n"
" void set handler(void callback(List<int> x));\n"
"}\n";
@@ -6161,7 +6161,7 @@
TestIsolateScope __test_isolate__;
const char* kScriptChars =
- "#import('dart:isolate');\n"
+ "import 'dart:isolate';\n"
"void callPort(SendPort port) {\n"
" port.call(null).then((message) {\n"
" throw new Exception(message);\n"
@@ -6212,8 +6212,8 @@
void* data,
char** error) {
const char* kScriptChars =
- "#import('builtin');\n"
- "#import('dart:isolate');\n"
+ "import 'builtin';\n"
+ "import 'dart:isolate';\n"
"void entry() {\n"
" port.receive((message, replyTo) {\n"
" if (message) {\n"
@@ -6770,7 +6770,7 @@
TEST_CASE(RangeLimits) {
uint8_t chars8[1] = {'a'};
uint16_t chars16[1] = {'a'};
- uint32_t chars32[1] = {'a'};
+ int32_t chars32[1] = {'a'};
EXPECT_ERROR(Dart_NewList(-1),
"expects argument 'length' to be in the range");
diff --git a/runtime/vm/dart_api_message.cc b/runtime/vm/dart_api_message.cc
index 64eea31..4cee392 100644
--- a/runtime/vm/dart_api_message.cc
+++ b/runtime/vm/dart_api_message.cc
@@ -17,7 +17,8 @@
ReAlloc alloc)
: BaseReader(buffer, length),
alloc_(alloc),
- backward_references_(kNumInitialReferences) {
+ backward_references_(kNumInitialReferences),
+ vm_symbol_references_(NULL) {
Init();
}
@@ -215,13 +216,29 @@
Dart_CObject* ApiMessageReader::ReadVMSymbol(intptr_t object_id) {
if (Symbols::IsVMSymbolId(object_id)) {
+ intptr_t symbol_id = object_id - kMaxPredefinedObjectIds;
+ Dart_CObject* object;
+ if (vm_symbol_references_ != NULL &&
+ (object = vm_symbol_references_[symbol_id]) != NULL) {
+ return object;
+ }
+
+ if (vm_symbol_references_ == NULL) {
+ intptr_t size = sizeof(*vm_symbol_references_) * Symbols::kMaxId;
+ vm_symbol_references_ =
+ reinterpret_cast<Dart_CObject**>(alloc_(NULL, 0, size));
+ memset(vm_symbol_references_, 0, size);
+ }
+
RawOneByteString* str =
reinterpret_cast<RawOneByteString*>(Symbols::GetVMSymbol(object_id));
intptr_t len = Smi::Value(str->ptr()->length_);
- Dart_CObject* object = AllocateDartCObjectString(len);
+ object = AllocateDartCObjectString(len);
char* p = object->value.as_string;
memmove(p, str->ptr()->data_, len);
p[len] = '\0';
+ ASSERT(vm_symbol_references_[symbol_id] == NULL);
+ vm_symbol_references_[symbol_id] = object;
return object;
}
// No other VM isolate objects are supported.
diff --git a/runtime/vm/dart_api_message.h b/runtime/vm/dart_api_message.h
index c37d8fb..dbd7278 100644
--- a/runtime/vm/dart_api_message.h
+++ b/runtime/vm/dart_api_message.h
@@ -109,6 +109,7 @@
// function.
ReAlloc alloc_;
ApiGrowableArray<BackRefNode*> backward_references_;
+ Dart_CObject** vm_symbol_references_;
Dart_CObject type_arguments_marker;
Dart_CObject dynamic_type_marker;
diff --git a/runtime/vm/debugger.cc b/runtime/vm/debugger.cc
index 96019a9..5d5cf71 100644
--- a/runtime/vm/debugger.cc
+++ b/runtime/vm/debugger.cc
@@ -575,8 +575,7 @@
break;
}
case PcDescriptors::kFuncCall: {
- Function& func = Function::Handle();
- CodePatcher::GetStaticCallAt(pc_, &func, &saved_bytes_.target_address_);
+ saved_bytes_.target_address_ = CodePatcher::GetStaticCallTargetAt(pc_);
CodePatcher::PatchStaticCallAt(pc_,
StubCode::BreakpointStaticEntryPoint());
break;
@@ -1403,9 +1402,10 @@
}
} else if (bpt->breakpoint_kind_ == PcDescriptors::kFuncCall) {
func_to_instrument = bpt->function();
- Function& callee = Function::Handle();
- uword target;
- CodePatcher::GetStaticCallAt(bpt->pc_, &callee, &target);
+ const Code& code = Code::Handle(func_to_instrument.CurrentCode());
+ const Function& callee =
+ Function::Handle(code.GetStaticCallTargetFunctionAt(bpt->pc_));
+ ASSERT(!callee.IsNull());
if (IsDebuggable(callee)) {
func_to_instrument = callee.raw();
}
diff --git a/runtime/vm/exceptions.cc b/runtime/vm/exceptions.cc
index fc2e2c9..479ad64 100644
--- a/runtime/vm/exceptions.cc
+++ b/runtime/vm/exceptions.cc
@@ -144,7 +144,7 @@
Instance& exception = Instance::Handle(incoming_exception.raw());
if (exception.IsNull()) {
GrowableArray<const Object*> arguments;
- exception ^= Exceptions::Create(Exceptions::kNullPointer, arguments);
+ exception ^= Exceptions::Create(Exceptions::kNullThrown, arguments);
}
uword handler_pc = 0;
uword handler_sp = 0;
@@ -427,18 +427,14 @@
library = Library::CoreLibrary();
class_name = Symbols::New("InternalError");
break;
- case kNullPointer:
+ case kNullThrown:
library = Library::CoreLibrary();
- class_name = Symbols::New("NullPointerException");
+ class_name = Symbols::New("NullThrownError");
break;
case kIllegalJSRegExp:
library = Library::CoreLibrary();
class_name = Symbols::New("IllegalJSRegExpException");
break;
- case kArgumentError:
- library = Library::CoreLibrary();
- class_name = Symbols::New("ArgumentError");
- break;
case kIsolateSpawn:
library = Library::IsolateLibrary();
class_name = Symbols::New("IsolateSpawnException");
diff --git a/runtime/vm/exceptions.h b/runtime/vm/exceptions.h
index 1fe2665..0cc048f 100644
--- a/runtime/vm/exceptions.h
+++ b/runtime/vm/exceptions.h
@@ -56,9 +56,8 @@
kStackOverflow,
kOutOfMemory,
kInternalError,
- kNullPointer,
+ kNullThrown,
kIllegalJSRegExp,
- kArgumentError,
kIsolateSpawn
};
diff --git a/runtime/vm/flow_graph_allocator.cc b/runtime/vm/flow_graph_allocator.cc
index 609d1d6..939f393 100644
--- a/runtime/vm/flow_graph_allocator.cc
+++ b/runtime/vm/flow_graph_allocator.cc
@@ -62,6 +62,7 @@
FlowGraphAllocator::FlowGraphAllocator(const FlowGraph& flow_graph)
: flow_graph_(flow_graph),
+ reaching_defs_(flow_graph),
mint_values_(NULL),
block_order_(flow_graph.reverse_postorder()),
postorder_(flow_graph.postorder()),
@@ -146,9 +147,15 @@
}
// Handle uses.
+ LocationSummary* locs = current->locs();
+ ASSERT(locs->input_count() == current->InputCount());
for (intptr_t j = 0; j < current->InputCount(); j++) {
Value* input = current->InputAt(j);
const intptr_t use = input->definition()->ssa_temp_index();
+
+ ASSERT(!locs->in(j).IsConstant() || input->BindsToConstant());
+ if (locs->in(j).IsConstant()) continue;
+
live_in->Add(use);
}
@@ -182,6 +189,8 @@
// live-in for a predecessor.
for (intptr_t k = 0; k < phi->InputCount(); k++) {
Value* val = phi->InputAt(k);
+ if (val->BindsToConstant()) continue;
+
BlockEntryInstr* pred = block->PredecessorAt(k);
const intptr_t use = val->definition()->ssa_temp_index();
if (!kill_[pred->postorder_number()]->Contains(use)) {
@@ -517,9 +526,12 @@
void FlowGraphAllocator::BuildLiveRanges() {
const intptr_t block_count = postorder_.length();
ASSERT(postorder_.Last()->IsGraphEntry());
+ BitVector* current_interference_set = NULL;
for (intptr_t i = 0; i < (block_count - 1); i++) {
BlockEntryInstr* block = postorder_[i];
+ BlockInfo* block_info = BlockInfoAt(block->start_pos());
+
// For every SSA value that is live out of this block, create an interval
// that covers the whole block. It will be shortened if we encounter a
// definition of this value in this block.
@@ -528,23 +540,33 @@
range->AddUseInterval(block->start_pos(), block->end_pos());
}
+ BlockInfo* loop_header = block_info->loop_header();
+ if ((loop_header != NULL) && (loop_header->last_block() == block)) {
+ current_interference_set =
+ new BitVector(flow_graph_.max_virtual_register_number());
+ ASSERT(loop_header->backedge_interference() == NULL);
+ loop_header->set_backedge_interference(
+ current_interference_set);
+ }
+
// Connect outgoing phi-moves that were created in NumberInstructions
// and find last instruction that contributes to liveness.
- Instruction* current = ConnectOutgoingPhiMoves(block);
+ Instruction* current = ConnectOutgoingPhiMoves(block,
+ current_interference_set);
// Now process all instructions in reverse order.
while (current != block) {
// Skip parallel moves that we insert while processing instructions.
if (!current->IsParallelMove()) {
- ProcessOneInstruction(block, current);
+ ProcessOneInstruction(block, current, current_interference_set);
}
current = current->previous();
}
// Check if any values live into the loop can be spilled for free.
- BlockInfo* block_info = BlockInfoAt(block->start_pos());
if (block_info->is_loop_header()) {
+ current_interference_set = NULL;
for (BitVector::Iterator it(live_in_[i]); !it.Done(); it.Advance()) {
LiveRange* range = GetLiveRange(it.Current());
if (HasOnlyUnconstrainedUsesInLoop(range, block_info)) {
@@ -650,7 +672,7 @@
//
Instruction* FlowGraphAllocator::ConnectOutgoingPhiMoves(
- BlockEntryInstr* block) {
+ BlockEntryInstr* block, BitVector* interfere_at_backedge) {
Instruction* last = block->last_instruction();
GotoInstr* goto_instr = last->AsGoto();
@@ -696,7 +718,9 @@
// value --*
//
- LiveRange* range = GetLiveRange(val->definition()->ssa_temp_index());
+ const intptr_t vreg = val->definition()->ssa_temp_index();
+ LiveRange* range = GetLiveRange(vreg);
+ if (interfere_at_backedge != NULL) interfere_at_backedge->Add(vreg);
range->AddUseInterval(block->start_pos(), pos);
range->AddHintedUse(pos, move->src_slot(), move->dest_slot());
@@ -821,7 +845,8 @@
// Create and update live ranges corresponding to instruction's inputs,
// temporaries and output.
void FlowGraphAllocator::ProcessOneInstruction(BlockEntryInstr* block,
- Instruction* current) {
+ Instruction* current,
+ BitVector* interference_set) {
LocationSummary* locs = current->locs();
Definition* def = current->AsDefinition();
@@ -1065,6 +1090,12 @@
range->AddHintedUse(pos, out, move->src_slot());
range->AddUse(pos, move->dest_slot());
range->AddUse(pos, locs->in_slot(0));
+
+ if ((interference_set != NULL) &&
+ (range->vreg() >= 0) &&
+ interference_set->Contains(range->vreg())) {
+ interference_set->Add(input->ssa_temp_index());
+ }
} else {
// Normal unallocated location that requires a register. Expected shape of
// live range:
@@ -1451,7 +1482,7 @@
LiveRange* FlowGraphAllocator::SplitBetween(LiveRange* range,
intptr_t from,
intptr_t to) {
- TRACE_ALLOC(OS::Print("split %"Pd" [%"Pd", %"Pd") between [%"Pd", %"Pd")\n",
+ TRACE_ALLOC(OS::Print("split v%"Pd" [%"Pd", %"Pd") between [%"Pd", %"Pd")\n",
range->vreg(), range->Start(), range->End(), from, to));
intptr_t split_pos = kIllegalPosition;
@@ -1489,7 +1520,7 @@
intptr_t from,
intptr_t to) {
ASSERT(from < to);
- TRACE_ALLOC(OS::Print("spill %"Pd" [%"Pd", %"Pd") "
+ TRACE_ALLOC(OS::Print("spill v%"Pd" [%"Pd", %"Pd") "
"between [%"Pd", %"Pd")\n",
range->vreg(), range->Start(), range->End(), from, to));
LiveRange* tail = range->SplitAt(from);
@@ -1507,7 +1538,7 @@
void FlowGraphAllocator::SpillAfter(LiveRange* range, intptr_t from) {
- TRACE_ALLOC(OS::Print("spill %"Pd" [%"Pd", %"Pd") after %"Pd"\n",
+ TRACE_ALLOC(OS::Print("spill v%"Pd" [%"Pd", %"Pd") after %"Pd"\n",
range->vreg(), range->Start(), range->End(), from));
// When spilling the value inside the loop check if this spill can
@@ -1614,6 +1645,72 @@
}
+void ReachingDefs::AddPhi(PhiInstr* phi) {
+ if (phi->reaching_defs() == NULL) {
+ phi->set_reaching_defs(
+ new BitVector(flow_graph_.max_virtual_register_number()));
+
+ // Compute initial set reaching defs set.
+ bool depends_on_phi = false;
+ for (intptr_t i = 0; i < phi->InputCount(); i++) {
+ Definition* input = phi->InputAt(i)->definition();
+ if (input->IsPhi()) {
+ depends_on_phi = true;
+ }
+ phi->reaching_defs()->Add(input->ssa_temp_index());
+ }
+
+ // If this phi depends on another phi then we need fix point iteration.
+ if (depends_on_phi) phis_.Add(phi);
+ }
+}
+
+
+void ReachingDefs::Compute() {
+ // Transitively collect all phis that are used by the given phi.
+ for (intptr_t i = 0; i < phis_.length(); i++) {
+ PhiInstr* phi = phis_[i];
+
+ // Add all phis that affect this phi to the list.
+ for (intptr_t i = 0; i < phi->InputCount(); i++) {
+ PhiInstr* input_phi = phi->InputAt(i)->definition()->AsPhi();
+ if (input_phi != NULL) {
+ AddPhi(input_phi);
+ }
+ }
+ }
+
+ // Propagate values until fix point is reached.
+ bool changed;
+ do {
+ changed = false;
+ for (intptr_t i = 0; i < phis_.length(); i++) {
+ PhiInstr* phi = phis_[i];
+ for (intptr_t i = 0; i < phi->InputCount(); i++) {
+ PhiInstr* input_phi = phi->InputAt(i)->definition()->AsPhi();
+ if (input_phi != NULL) {
+ if (phi->reaching_defs()->AddAll(input_phi->reaching_defs())) {
+ changed = true;
+ }
+ }
+ }
+ }
+ } while (changed);
+
+ phis_.Clear();
+}
+
+
+BitVector* ReachingDefs::Get(PhiInstr* phi) {
+ if (phi->reaching_defs() == NULL) {
+ ASSERT(phis_.is_empty());
+ AddPhi(phi);
+ Compute();
+ }
+ return phi->reaching_defs();
+}
+
+
bool FlowGraphAllocator::AllocateFreeRegister(LiveRange* unallocated) {
intptr_t candidate = kNoRegister;
intptr_t free_until = 0;
@@ -1628,10 +1725,10 @@
candidate = hint.register_code();
}
- TRACE_ALLOC(OS::Print("found hint "));
- TRACE_ALLOC(hint.Print());
- TRACE_ALLOC(OS::Print(" for %"Pd": free until %"Pd"\n",
- unallocated->vreg(), free_until));
+ TRACE_ALLOC(OS::Print("found hint %s for v%"Pd": free until %"Pd"\n",
+ hint.Name(),
+ unallocated->vreg(),
+ free_until));
} else if (free_until != kMaxPosition) {
for (intptr_t reg = 0; reg < NumberOfRegisters(); ++reg) {
if (!blocked_registers_[reg] && (registers_[reg].length() == 0)) {
@@ -1642,6 +1739,66 @@
}
}
+ // We have a very good candidate (either hinted to us or completely free).
+ // If we are in a loop try to reduce number of moves on the back edge by
+ // searching for a candidate that does not interfere with phis on the back
+ // edge.
+ BlockInfo* loop_header = BlockInfoAt(unallocated->Start())->loop_header();
+ if ((unallocated->vreg() >= 0) &&
+ (loop_header != NULL) &&
+ (free_until >= loop_header->last_block()->end_pos()) &&
+ loop_header->backedge_interference()->Contains(unallocated->vreg())) {
+ ASSERT(static_cast<intptr_t>(kNumberOfXmmRegisters) <=
+ kNumberOfCpuRegisters);
+ bool used_on_backedge[kNumberOfCpuRegisters] = { false };
+
+ for (PhiIterator it(loop_header->entry()->AsJoinEntry());
+ !it.Done();
+ it.Advance()) {
+ PhiInstr* phi = it.Current();
+ if (phi->is_alive()) {
+ const intptr_t phi_vreg = phi->ssa_temp_index();
+ LiveRange* range = GetLiveRange(phi_vreg);
+ if (range->assigned_location().kind() == register_kind_) {
+ const intptr_t reg = range->assigned_location().register_code();
+
+ if (!reaching_defs_.Get(phi)->Contains(unallocated->vreg())) {
+ used_on_backedge[reg] = true;
+ }
+ }
+ }
+ }
+
+ if (used_on_backedge[candidate]) {
+ TRACE_ALLOC(OS::Print(
+ "considering %s for v%"Pd": has interference on the back edge"
+ " {loop [%"Pd", %"Pd")}\n",
+ MakeRegisterLocation(candidate, Location::kDouble).Name(),
+ unallocated->vreg(),
+ loop_header->entry()->start_pos(),
+ loop_header->last_block()->end_pos()));
+ for (intptr_t reg = 0; reg < NumberOfRegisters(); ++reg) {
+ if (blocked_registers_[reg] ||
+ (reg == candidate) ||
+ used_on_backedge[reg]) {
+ continue;
+ }
+
+ const intptr_t intersection =
+ FirstIntersectionWithAllocated(reg, unallocated);
+ if (intersection >= free_until) {
+ candidate = reg;
+ free_until = intersection;
+ TRACE_ALLOC(OS::Print(
+ "found %s for v%"Pd" with no interference on the back edge\n",
+ MakeRegisterLocation(candidate, Location::kDouble).Name(),
+ candidate));
+ break;
+ }
+ }
+ }
+ }
+
ASSERT(0 <= kMaxPosition);
if (free_until != kMaxPosition) {
for (intptr_t reg = 0; reg < NumberOfRegisters(); ++reg) {
@@ -1661,7 +1818,7 @@
TRACE_ALLOC(OS::Print("assigning free register "));
TRACE_ALLOC(MakeRegisterLocation(candidate, Location::kDouble).Print());
- TRACE_ALLOC(OS::Print(" to %"Pd"\n", unallocated->vreg()));
+ TRACE_ALLOC(OS::Print(" to v%"Pd"\n", unallocated->vreg()));
if (free_until != kMaxPosition) {
// There was an intersection. Split unallocated.
@@ -1764,7 +1921,7 @@
TRACE_ALLOC(OS::Print("assigning blocked register "));
TRACE_ALLOC(MakeRegisterLocation(candidate, Location::kDouble).Print());
- TRACE_ALLOC(OS::Print(" to live range %"Pd" until %"Pd"\n",
+ TRACE_ALLOC(OS::Print(" to live range v%"Pd" until %"Pd"\n",
unallocated->vreg(), blocked_at));
if (blocked_at < unallocated->End()) {
@@ -2070,6 +2227,7 @@
const GrowableArray<LiveRange*>& unallocated,
LiveRange** blocking_ranges,
bool* blocked_registers) {
+ ASSERT(number_of_registers <= kNumberOfCpuRegisters);
register_kind_ = register_kind;
number_of_registers_ = number_of_registers;
@@ -2097,7 +2255,7 @@
while (!unallocated_.is_empty()) {
LiveRange* range = unallocated_.RemoveLast();
const intptr_t start = range->Start();
- TRACE_ALLOC(OS::Print("Processing live range for vreg %"Pd" "
+ TRACE_ALLOC(OS::Print("Processing live range for v%"Pd" "
"starting at %"Pd"\n",
range->vreg(),
start));
@@ -2134,12 +2292,13 @@
void FlowGraphAllocator::ConnectSplitSiblings(LiveRange* parent,
BlockEntryInstr* source_block,
BlockEntryInstr* target_block) {
- TRACE_ALLOC(OS::Print("Connect source_block=%"Pd", target_block=%"Pd"\n",
+ TRACE_ALLOC(OS::Print("Connect v%"Pd" on the edge B%"Pd" -> B%"Pd"\n",
+ parent->vreg(),
source_block->block_id(),
target_block->block_id()));
if (parent->next_sibling() == NULL) {
// Nothing to connect. The whole range was allocated to the same location.
- TRACE_ALLOC(OS::Print("range %"Pd" has no siblings\n", parent->vreg()));
+ TRACE_ALLOC(OS::Print("range v%"Pd" has no siblings\n", parent->vreg()));
return;
}
@@ -2176,13 +2335,15 @@
range = range->next_sibling();
}
- TRACE_ALLOC(OS::Print("connecting [%"Pd", %"Pd") [",
- source_cover->Start(), source_cover->End()));
- TRACE_ALLOC(source.Print());
- TRACE_ALLOC(OS::Print("] to [%"Pd", %"Pd") [",
- target_cover->Start(), target_cover->End()));
- TRACE_ALLOC(target.Print());
- TRACE_ALLOC(OS::Print("]\n"));
+ TRACE_ALLOC(OS::Print("connecting v%"Pd" between [%"Pd", %"Pd") {%s} "
+ "to [%"Pd", %"Pd") {%s}\n",
+ parent->vreg(),
+ source_cover->Start(),
+ source_cover->End(),
+ source.Name(),
+ target_cover->Start(),
+ target_cover->End(),
+ target.Name()));
// Siblings were allocated to the same register.
if (source.Equals(target)) return;
diff --git a/runtime/vm/flow_graph_allocator.h b/runtime/vm/flow_graph_allocator.h
index b98fbb3..d88e6e1 100644
--- a/runtime/vm/flow_graph_allocator.h
+++ b/runtime/vm/flow_graph_allocator.h
@@ -17,6 +17,24 @@
class UseInterval;
class UsePosition;
+
+class ReachingDefs : public ValueObject {
+ public:
+ explicit ReachingDefs(const FlowGraph& flow_graph)
+ : flow_graph_(flow_graph),
+ phis_(10) { }
+
+ BitVector* Get(PhiInstr* phi);
+
+ private:
+ void AddPhi(PhiInstr* phi);
+ void Compute();
+
+ const FlowGraph& flow_graph_;
+ GrowableArray<PhiInstr*> phis_;
+};
+
+
class FlowGraphAllocator : public ValueObject {
public:
// Number of stack slots needed for a double spill slot.
@@ -94,9 +112,12 @@
// Visit instructions in the postorder and build live ranges for
// all SSA values.
void BuildLiveRanges();
- Instruction* ConnectOutgoingPhiMoves(BlockEntryInstr* block);
+ Instruction* ConnectOutgoingPhiMoves(BlockEntryInstr* block,
+ BitVector* interference_set);
void ProcessEnvironmentUses(BlockEntryInstr* block, Instruction* current);
- void ProcessOneInstruction(BlockEntryInstr* block, Instruction* instr);
+ void ProcessOneInstruction(BlockEntryInstr* block,
+ Instruction* instr,
+ BitVector* interference_set);
void ConnectIncomingPhiMoves(BlockEntryInstr* block);
void BlockLocation(Location loc, intptr_t from, intptr_t to);
void BlockRegisterLocation(Location loc,
@@ -214,6 +235,8 @@
const FlowGraph& flow_graph_;
+ ReachingDefs reaching_defs_;
+
// Set of SSA values that have unboxed mint representation. Indexed
// by SSA temp index.
BitVector* mint_values_;
@@ -299,7 +322,10 @@
class BlockInfo : public ZoneAllocated {
public:
explicit BlockInfo(BlockEntryInstr* entry)
- : entry_(entry), loop_(NULL), is_loop_header_(false) {
+ : entry_(entry),
+ loop_(NULL),
+ is_loop_header_(false),
+ backedge_interference_(NULL) {
}
BlockEntryInstr* entry() const { return entry_; }
@@ -307,6 +333,17 @@
// Returns true is this node is a header of a structural loop.
bool is_loop_header() const { return is_loop_header_; }
+ // Returns header of the innermost loop containing this block.
+ BlockInfo* loop_header() {
+ if (is_loop_header()) {
+ return this;
+ } else if (loop() != NULL) {
+ return loop();
+ } else {
+ return NULL;
+ }
+ }
+
// Innermost reducible loop containing this node. Loop headers point to
// outer loop not to themselves.
BlockInfo* loop() const { return loop_; }
@@ -326,6 +363,14 @@
intptr_t loop_id() const { return loop_id_; }
void set_loop_id(intptr_t loop_id) { loop_id_ = loop_id; }
+ BitVector* backedge_interference() const {
+ return backedge_interference_;
+ }
+
+ void set_backedge_interference(BitVector* backedge_interference) {
+ backedge_interference_ = backedge_interference;
+ }
+
private:
BlockEntryInstr* entry_;
BlockInfo* loop_;
@@ -334,6 +379,8 @@
BlockEntryInstr* last_block_;
intptr_t loop_id_;
+ BitVector* backedge_interference_;
+
DISALLOW_COPY_AND_ASSIGN(BlockInfo);
};
diff --git a/runtime/vm/flow_graph_builder.cc b/runtime/vm/flow_graph_builder.cc
index 96d4cb8..c9d67eb 100644
--- a/runtime/vm/flow_graph_builder.cc
+++ b/runtime/vm/flow_graph_builder.cc
@@ -1763,7 +1763,7 @@
}
if (node->constructor().IsFactory()) {
- if ((function_class.Name() == Symbols::ListImplementation()) &&
+ if ((function_class.Name() == Symbols::List()) &&
(function.name() == Symbols::ListFactory())) {
// If there are no arguments then the result is guaranteed to be a
// GrowableObjectArray. However if there is an argument the result
diff --git a/runtime/vm/flow_graph_compiler.cc b/runtime/vm/flow_graph_compiler.cc
index 879799f..02d94fc 100644
--- a/runtime/vm/flow_graph_compiler.cc
+++ b/runtime/vm/flow_graph_compiler.cc
@@ -144,6 +144,8 @@
is_optimizing ? new StackmapTableBuilder() : NULL),
block_info_(block_order_.length()),
deopt_infos_(),
+ static_calls_target_table_(GrowableObjectArray::ZoneHandle(
+ GrowableObjectArray::New())),
is_optimizing_(is_optimizing),
may_reoptimize_(false),
bool_true_(Bool::ZoneHandle(Bool::True())),
@@ -282,6 +284,18 @@
}
+void FlowGraphCompiler::AddStaticCallTarget(const Function& func) {
+ ASSERT(Code::kSCallTableEntryLength == 3);
+ ASSERT(Code::kSCallTableOffsetEntry == 0);
+ static_calls_target_table_.Add(
+ Smi::Handle(Smi::New(assembler()->CodeSize())));
+ ASSERT(Code::kSCallTableFunctionEntry == 1);
+ static_calls_target_table_.Add(func);
+ ASSERT(Code::kSCallTableCodeEntry == 2);
+ static_calls_target_table_.Add(Code::Handle());
+}
+
+
void FlowGraphCompiler::AddDeoptIndexAtCall(intptr_t deopt_id,
intptr_t token_pos) {
ASSERT(is_optimizing());
@@ -396,6 +410,7 @@
code.set_deopt_info_array(array);
const Array& object_array =
Array::Handle(Array::MakeArray(builder.object_table()));
+ ASSERT(code.object_table() == Array::null());
code.set_object_table(object_array);
}
@@ -426,6 +441,13 @@
}
+void FlowGraphCompiler::FinalizeStaticCallTargetsTable(const Code& code) {
+ ASSERT(code.static_calls_target_table() == Array::null());
+ code.set_static_calls_target_table(
+ Array::Handle(Array::MakeArray(static_calls_target_table_)));
+}
+
+
// Returns 'true' if code generation for this function is complete, i.e.,
// no fall-through to regular code is needed.
bool FlowGraphCompiler::TryIntrinsify() {
diff --git a/runtime/vm/flow_graph_compiler_ia32.cc b/runtime/vm/flow_graph_compiler_ia32.cc
index 3a78f8c..f0236df 100644
--- a/runtime/vm/flow_graph_compiler_ia32.cc
+++ b/runtime/vm/flow_graph_compiler_ia32.cc
@@ -158,7 +158,7 @@
__ cmpl(kClassIdReg, Immediate(type_class.id()));
__ j(EQUAL, is_instance_lbl);
}
- if (type_class.raw() == Isolate::Current()->object_store()->list_class()) {
+ if (type_class.IsListClass()) {
GenerateListTypeCheck(kClassIdReg, is_instance_lbl);
}
return GenerateSubtype1TestCacheLookup(
@@ -1092,7 +1092,6 @@
intptr_t deopt_id,
intptr_t token_pos,
LocationSummary* locs) {
- __ LoadObject(ECX, function);
__ LoadObject(EDX, arguments_descriptor);
// Do not use the code from the function, but let the code be patched so that
// we can record the outgoing edges to other code.
@@ -1101,6 +1100,7 @@
&StubCode::CallStaticFunctionLabel(),
PcDescriptors::kFuncCall,
locs);
+ AddStaticCallTarget(function);
__ Drop(argument_count);
}
diff --git a/runtime/vm/flow_graph_compiler_ia32.h b/runtime/vm/flow_graph_compiler_ia32.h
index f949317..201b964 100644
--- a/runtime/vm/flow_graph_compiler_ia32.h
+++ b/runtime/vm/flow_graph_compiler_ia32.h
@@ -192,6 +192,7 @@
void FinalizeStackmaps(const Code& code);
void FinalizeVarDescriptors(const Code& code);
void FinalizeComments(const Code& code);
+ void FinalizeStaticCallTargetsTable(const Code& code);
const Bool& bool_true() const { return bool_true_; }
const Bool& bool_false() const { return bool_false_; }
@@ -227,6 +228,8 @@
Register index);
private:
+ void AddStaticCallTarget(const Function& function);
+
void GenerateDeferredCode();
void EmitInstructionPrologue(Instruction* instr);
@@ -320,6 +323,8 @@
GrowableArray<BlockInfo*> block_info_;
GrowableArray<CompilerDeoptInfo*> deopt_infos_;
GrowableArray<SlowPathCode*> slow_path_code_;
+ // Stores: [code offset, function, null(code)].
+ const GrowableObjectArray& static_calls_target_table_;
const bool is_optimizing_;
// Set to true if optimized code has IC calls.
bool may_reoptimize_;
diff --git a/runtime/vm/flow_graph_compiler_x64.cc b/runtime/vm/flow_graph_compiler_x64.cc
index eee2c68..a407051 100644
--- a/runtime/vm/flow_graph_compiler_x64.cc
+++ b/runtime/vm/flow_graph_compiler_x64.cc
@@ -158,7 +158,7 @@
__ cmpl(kClassIdReg, Immediate(type_class.id()));
__ j(EQUAL, is_instance_lbl);
}
- if (type_class.raw() == Isolate::Current()->object_store()->list_class()) {
+ if (type_class.IsListClass()) {
GenerateListTypeCheck(kClassIdReg, is_instance_lbl);
}
return GenerateSubtype1TestCacheLookup(
@@ -1096,7 +1096,6 @@
intptr_t deopt_id,
intptr_t token_pos,
LocationSummary* locs) {
- __ LoadObject(RBX, function);
__ LoadObject(R10, arguments_descriptor);
// Do not use the code from the function, but let the code be patched so that
// we can record the outgoing edges to other code.
@@ -1105,6 +1104,7 @@
&StubCode::CallStaticFunctionLabel(),
PcDescriptors::kFuncCall,
locs);
+ AddStaticCallTarget(function);
__ Drop(argument_count);
}
diff --git a/runtime/vm/flow_graph_compiler_x64.h b/runtime/vm/flow_graph_compiler_x64.h
index 146d9eb..3f74bc8 100644
--- a/runtime/vm/flow_graph_compiler_x64.h
+++ b/runtime/vm/flow_graph_compiler_x64.h
@@ -192,6 +192,7 @@
void FinalizeStackmaps(const Code& code);
void FinalizeVarDescriptors(const Code& code);
void FinalizeComments(const Code& code);
+ void FinalizeStaticCallTargetsTable(const Code& code);
const Bool& bool_true() const { return bool_true_; }
const Bool& bool_false() const { return bool_false_; }
@@ -227,6 +228,8 @@
Register index);
private:
+ void AddStaticCallTarget(const Function& function);
+
void GenerateDeferredCode();
void EmitInstructionPrologue(Instruction* instr);
@@ -320,6 +323,8 @@
GrowableArray<BlockInfo*> block_info_;
GrowableArray<CompilerDeoptInfo*> deopt_infos_;
GrowableArray<SlowPathCode*> slow_path_code_;
+ // Stores: [code offset, function, null(code)].
+ const GrowableObjectArray& static_calls_target_table_;
const bool is_optimizing_;
// Set to true if optimized code has IC calls.
bool may_reoptimize_;
diff --git a/runtime/vm/flow_graph_optimizer.cc b/runtime/vm/flow_graph_optimizer.cc
index 6172ca5..2321f54 100644
--- a/runtime/vm/flow_graph_optimizer.cc
+++ b/runtime/vm/flow_graph_optimizer.cc
@@ -1107,6 +1107,43 @@
}
+StringCharCodeAtInstr* FlowGraphOptimizer::BuildStringCharCodeAt(
+ InstanceCallInstr* call,
+ intptr_t cid) {
+ Value* str = call->ArgumentAt(0)->value();
+ Value* index = call->ArgumentAt(1)->value();
+ AddCheckClass(call, str->Copy());
+ InsertBefore(call,
+ new CheckSmiInstr(index->Copy(), call->deopt_id()),
+ call->env(),
+ Definition::kEffect);
+ // If both index and string are constants, then do a compile-time check.
+ // TODO(srdjan): Remove once constant propagation handles bounds checks.
+ bool skip_check = false;
+ if (str->BindsToConstant() && index->BindsToConstant()) {
+ ConstantInstr* string_def = str->definition()->AsConstant();
+ const String& constant_string =
+ String::Cast(string_def->value());
+ ConstantInstr* index_def = index->definition()->AsConstant();
+ if (index_def->value().IsSmi()) {
+ intptr_t constant_index = Smi::Cast(index_def->value()).Value();
+ skip_check = (constant_index < constant_string.Length());
+ }
+ }
+ if (!skip_check) {
+ // Insert bounds check.
+ InsertBefore(call,
+ new CheckArrayBoundInstr(str->Copy(),
+ index->Copy(),
+ cid,
+ call),
+ call->env(),
+ Definition::kEffect);
+ }
+ return new StringCharCodeAtInstr(str, index, cid);
+}
+
+
// Inline only simple, frequently called core library methods.
bool FlowGraphOptimizer::TryInlineInstanceMethod(InstanceCallInstr* call) {
ASSERT(call->HasICData());
@@ -1124,42 +1161,24 @@
(ic_data.NumberOfChecks() == 1) &&
((class_ids[0] == kOneByteStringCid) ||
(class_ids[0] == kTwoByteStringCid))) {
- Value* str= call->ArgumentAt(0)->value();
- Value* index = call->ArgumentAt(1)->value();
- AddCheckClass(call, str->Copy());
- InsertBefore(call,
- new CheckSmiInstr(index->Copy(), call->deopt_id()),
- call->env(),
- Definition::kEffect);
- // If both index and string are constants, then do a compile-time check.
- // TODO(srdjan): Remove once constant propagation handles bounds checks.
- bool skip_check = false;
- if (str->BindsToConstant() && index->BindsToConstant()) {
- ConstantInstr* string_def = str->definition()->AsConstant();
- const String& constant_string =
- String::Cast(string_def->value());
- ConstantInstr* index_def = index->definition()->AsConstant();
- if (index_def->value().IsSmi()) {
- intptr_t constant_index = Smi::Cast(index_def->value()).Value();
- skip_check = (constant_index < constant_string.Length());
- }
- }
- if (!skip_check) {
- // Insert bounds check.
- InsertBefore(call,
- new CheckArrayBoundInstr(str->Copy(),
- index->Copy(),
- class_ids[0],
- call),
- call->env(),
- Definition::kEffect);
- }
- StringCharCodeAtInstr* instr =
- new StringCharCodeAtInstr(str, index, class_ids[0]);
+ StringCharCodeAtInstr* instr = BuildStringCharCodeAt(call, class_ids[0]);
call->ReplaceWith(instr, current_iterator());
RemovePushArguments(call);
return true;
}
+ if ((recognized_kind == MethodRecognizer::kStringBaseCharAt) &&
+ (ic_data.NumberOfChecks() == 1) &&
+ (class_ids[0] == kOneByteStringCid)) {
+ // TODO(fschneider): Handle TwoByteString.
+ StringCharCodeAtInstr* load_char_code =
+ BuildStringCharCodeAt(call, class_ids[0]);
+ InsertBefore(call, load_char_code, NULL, Definition::kValue);
+ StringFromCharCodeInstr* char_at =
+ new StringFromCharCodeInstr(new Value(load_char_code));
+ call->ReplaceWith(char_at, current_iterator());
+ RemovePushArguments(call);
+ return true;
+ }
if ((recognized_kind == MethodRecognizer::kIntegerToDouble) &&
(class_ids[0] == kSmiCid)) {
@@ -3302,6 +3321,12 @@
}
+void ConstantPropagator::VisitStringFromCharCode(
+ StringFromCharCodeInstr* instr) {
+ SetValue(instr, non_constant_);
+}
+
+
void ConstantPropagator::VisitLoadIndexed(LoadIndexedInstr* instr) {
SetValue(instr, non_constant_);
}
diff --git a/runtime/vm/flow_graph_optimizer.h b/runtime/vm/flow_graph_optimizer.h
index 047dd0c..3c81b4a 100644
--- a/runtime/vm/flow_graph_optimizer.h
+++ b/runtime/vm/flow_graph_optimizer.h
@@ -68,6 +68,9 @@
bool TryInlineInstanceMethod(InstanceCallInstr* call);
+ StringCharCodeAtInstr* BuildStringCharCodeAt(InstanceCallInstr* call,
+ intptr_t cid);
+
void AddCheckClass(InstanceCallInstr* call, Value* value);
void InsertAfter(Instruction* prev,
diff --git a/runtime/vm/intermediate_language.cc b/runtime/vm/intermediate_language.cc
index 21d220d..70a1ee8 100644
--- a/runtime/vm/intermediate_language.cc
+++ b/runtime/vm/intermediate_language.cc
@@ -241,9 +241,10 @@
const String& function_name = String::Handle(function.name());
const String& class_name = String::Handle(function_class.Name());
-#define RECOGNIZE_FUNCTION(test_class_name, test_function_name, enum_name) \
+#define RECOGNIZE_FUNCTION(test_class_name, test_function_name, enum_name, fp) \
if (CompareNames(lib, #test_function_name, function_name) && \
CompareNames(lib, #test_class_name, class_name)) { \
+ ASSERT(function.CheckSourceFingerprint(fp)); \
return k##enum_name; \
}
RECOGNIZED_LIST(RECOGNIZE_FUNCTION)
@@ -253,7 +254,7 @@
const char* MethodRecognizer::KindToCString(Kind kind) {
-#define KIND_TO_STRING(class_name, function_name, enum_name) \
+#define KIND_TO_STRING(class_name, function_name, enum_name, fp) \
if (kind == k##enum_name) return #enum_name;
RECOGNIZED_LIST(KIND_TO_STRING)
#undef KIND_TO_STRING
@@ -1128,6 +1129,16 @@
}
+RawAbstractType* StringFromCharCodeInstr::CompileType() const {
+ return Type::StringType();
+}
+
+
+intptr_t StringFromCharCodeInstr::ResultCid() const {
+ return kDynamicCid;
+}
+
+
RawAbstractType* LoadIndexedInstr::CompileType() const {
switch (class_id_) {
case kArrayCid:
@@ -2657,6 +2668,7 @@
}
}
+
#undef __
} // namespace dart
diff --git a/runtime/vm/intermediate_language.h b/runtime/vm/intermediate_language.h
index 23af66f..59ba34e 100644
--- a/runtime/vm/intermediate_language.h
+++ b/runtime/vm/intermediate_language.h
@@ -29,18 +29,21 @@
// TODO(srdjan): Add _ByteArrayBase, get:length.
-
+// TODO(srdjan): Unify with INTRINSIC_LIST.
+// (class-name, function-name, recognized enum, fingerprint).
+// See intrinsifier for fingerprint computation.
#define RECOGNIZED_LIST(V) \
- V(_ObjectArray, get:length, ObjectArrayLength) \
- V(_ImmutableArray, get:length, ImmutableArrayLength) \
- V(_GrowableObjectArray, get:length, GrowableArrayLength) \
- V(_GrowableObjectArray, get:capacity, GrowableArrayCapacity) \
- V(_StringBase, get:length, StringBaseLength) \
- V(_StringBase, get:isEmpty, StringBaseIsEmpty) \
- V(_StringBase, charCodeAt, StringBaseCharCodeAt) \
- V(_IntegerImplementation, toDouble, IntegerToDouble) \
- V(_Double, toInt, DoubleToInteger) \
- V(::, sqrt, MathSqrt) \
+ V(_ObjectArray, get:length, ObjectArrayLength, 405297088) \
+ V(_ImmutableArray, get:length, ImmutableArrayLength, 433698233) \
+ V(_GrowableObjectArray, get:length, GrowableArrayLength, 725548050) \
+ V(_GrowableObjectArray, get:capacity, GrowableArrayCapacity, 725548050) \
+ V(_StringBase, get:length, StringBaseLength, 320803993) \
+ V(_StringBase, get:isEmpty, StringBaseIsEmpty, 1065961093) \
+ V(_StringBase, charCodeAt, StringBaseCharCodeAt, 984449525) \
+ V(_StringBase, [], StringBaseCharAt, 1062366987) \
+ V(_IntegerImplementation, toDouble, IntegerToDouble, 1396338041) \
+ V(_Double, toInt, DoubleToInteger, 362666636) \
+ V(::, sqrt, MathSqrt, 2232519) \
// Class that recognizes the name and owner of a function and returns the
// corresponding enum. See RECOGNIZED_LIST above for list of recognizable
@@ -49,7 +52,7 @@
public:
enum Kind {
kUnknown,
-#define DEFINE_ENUM_LIST(class_name, function_name, enum_name) k##enum_name,
+#define DEFINE_ENUM_LIST(class_name, function_name, enum_name, fp) k##enum_name,
RECOGNIZED_LIST(DEFINE_ENUM_LIST)
#undef DEFINE_ENUM_LIST
};
@@ -264,7 +267,8 @@
M(UnaryMintOp) \
M(CheckArrayBound) \
M(Constraint) \
- M(StringCharCodeAt)
+ M(StringCharCodeAt) \
+ M(StringFromCharCode)
#define FORWARD_DECLARATION(type) class type##Instr;
@@ -1162,7 +1166,8 @@
: block_(block),
inputs_(num_inputs),
is_alive_(false),
- representation_(kTagged) {
+ representation_(kTagged),
+ reaching_defs_(NULL) {
for (intptr_t i = 0; i < num_inputs; ++i) {
inputs_.Add(NULL);
}
@@ -1223,6 +1228,14 @@
virtual void InferRange();
+ BitVector* reaching_defs() const {
+ return reaching_defs_;
+ }
+
+ void set_reaching_defs(BitVector* reaching_defs) {
+ reaching_defs_ = reaching_defs;
+ }
+
private:
friend class ConstantPropagator; // Direct access to inputs_.
@@ -1231,6 +1244,8 @@
bool is_alive_;
Representation representation_;
+ BitVector* reaching_defs_;
+
DISALLOW_COPY_AND_ASSIGN(PhiInstr);
};
@@ -2682,6 +2697,36 @@
};
+class StringFromCharCodeInstr : public TemplateDefinition<1> {
+ public:
+ explicit StringFromCharCodeInstr(Value* char_code) {
+ ASSERT(char_code != NULL);
+ ASSERT(char_code->definition()->IsStringCharCodeAt() &&
+ (char_code->definition()->AsStringCharCodeAt()->class_id() ==
+ kOneByteStringCid));
+ inputs_[0] = char_code;
+ }
+
+ DECLARE_INSTRUCTION(StringFromCharCode)
+ virtual RawAbstractType* CompileType() const;
+
+ Value* char_code() const { return inputs_[0]; }
+
+ virtual bool CanDeoptimize() const { return false; }
+
+ virtual bool HasSideEffect() const { return false; }
+
+ virtual intptr_t ResultCid() const;
+
+ virtual bool AttributesEqual(Instruction* other) const { return true; }
+
+ virtual bool AffectedBySideEffect() const { return false; }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(StringFromCharCodeInstr);
+};
+
+
class LoadIndexedInstr : public TemplateDefinition<2> {
public:
LoadIndexedInstr(Value* array, Value* index, intptr_t class_id)
diff --git a/runtime/vm/intermediate_language_ia32.cc b/runtime/vm/intermediate_language_ia32.cc
index 74b2a17..fd2c971 100644
--- a/runtime/vm/intermediate_language_ia32.cc
+++ b/runtime/vm/intermediate_language_ia32.cc
@@ -1124,6 +1124,30 @@
}
+LocationSummary* StringFromCharCodeInstr::MakeLocationSummary() const {
+ const intptr_t kNumInputs = 1;
+ const intptr_t kNumTemps = 0;
+ LocationSummary* locs =
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ // TODO(fschneider): Allow immediate operands for the char code.
+ locs->set_in(0, Location::RequiresRegister());
+ locs->set_out(Location::RequiresRegister());
+ return locs;
+}
+
+
+void StringFromCharCodeInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
+ Register char_code = locs()->in(0).reg();
+ Register result = locs()->out().reg();
+ __ movl(result,
+ Immediate(reinterpret_cast<uword>(Symbols::PredefinedAddress())));
+ __ movl(result, Address(result,
+ char_code,
+ TIMES_HALF_WORD_SIZE, // Char code is a smi.
+ Symbols::kNullCharId * kWordSize));
+}
+
+
LocationSummary* LoadIndexedInstr::MakeLocationSummary() const {
const intptr_t kNumInputs = 2;
const intptr_t kNumTemps = 0;
diff --git a/runtime/vm/intermediate_language_x64.cc b/runtime/vm/intermediate_language_x64.cc
index 32766ac1..6933867 100644
--- a/runtime/vm/intermediate_language_x64.cc
+++ b/runtime/vm/intermediate_language_x64.cc
@@ -992,6 +992,30 @@
}
+LocationSummary* StringFromCharCodeInstr::MakeLocationSummary() const {
+ const intptr_t kNumInputs = 1;
+ const intptr_t kNumTemps = 0;
+ LocationSummary* locs =
+ new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall);
+ // TODO(fschneider): Allow immediate operands for the char code.
+ locs->set_in(0, Location::RequiresRegister());
+ locs->set_out(Location::RequiresRegister());
+ return locs;
+}
+
+
+void StringFromCharCodeInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
+ Register char_code = locs()->in(0).reg();
+ Register result = locs()->out().reg();
+ __ movq(result,
+ Immediate(reinterpret_cast<uword>(Symbols::PredefinedAddress())));
+ __ movq(result, Address(result,
+ char_code,
+ TIMES_HALF_WORD_SIZE, // Char code is a smi.
+ Symbols::kNullCharId * kWordSize));
+}
+
+
LocationSummary* LoadIndexedInstr::MakeLocationSummary() const {
const intptr_t kNumInputs = 2;
const intptr_t kNumTemps = 0;
diff --git a/runtime/vm/intrinsifier.cc b/runtime/vm/intrinsifier.cc
index 59adb5c..9e4188b 100644
--- a/runtime/vm/intrinsifier.cc
+++ b/runtime/vm/intrinsifier.cc
@@ -64,6 +64,8 @@
bool Intrinsifier::CanIntrinsify(const Function& function) {
if (!FLAG_intrinsify) return false;
if (function.IsClosureFunction()) return false;
+ // Can occur because of compile-all flag.
+ if (function.is_external()) return false;
// Intrinsic kind is set lazily below.
if (function.intrinsic_kind() == Function::kIsIntrinsic) return true;
if (function.intrinsic_kind() == Function::kIsNotIntrinsic) return false;
@@ -77,7 +79,7 @@
return false;
}
const char* class_name = String::Handle(function_class.Name()).ToCString();
-#define FIND_INTRINSICS(test_class_name, test_function_name, destination) \
+#define FIND_INTRINSICS(test_class_name, test_function_name, destination, fp) \
if (TestFunction(function, \
class_name, function_name, \
#test_class_name, #test_function_name)) { \
@@ -91,15 +93,17 @@
return false;
}
+
bool Intrinsifier::Intrinsify(const Function& function, Assembler* assembler) {
if (!CanIntrinsify(function)) return false;
const char* function_name = String::Handle(function.name()).ToCString();
const Class& function_class = Class::Handle(function.Owner());
const char* class_name = String::Handle(function_class.Name()).ToCString();
-#define FIND_INTRINSICS(test_class_name, test_function_name, destination) \
+#define FIND_INTRINSICS(test_class_name, test_function_name, destination, fp) \
if (TestFunction(function, \
class_name, function_name, \
#test_class_name, #test_function_name)) { \
+ ASSERT(function.CheckSourceFingerprint(fp)); \
return destination(assembler); \
} \
diff --git a/runtime/vm/intrinsifier.h b/runtime/vm/intrinsifier.h
index d127750..af4f8d4 100644
--- a/runtime/vm/intrinsifier.h
+++ b/runtime/vm/intrinsifier.h
@@ -10,88 +10,97 @@
namespace dart {
-// List of intrinsics: (class-name, function-name, intrinsification method).
+// List of intrinsics:
+// (class-name, function-name, intrinsification method, fingerprint).
+//
+// When adding a new function for intrinsification add a 0 as fingerprint,
+// build and run to get the correct fingerprint from the mismatch error.
#define INTRINSIC_LIST(V) \
- V(_IntegerImplementation, _addFromInteger, Integer_addFromInteger) \
- V(_IntegerImplementation, +, Integer_add) \
- V(_IntegerImplementation, _subFromInteger, Integer_subFromInteger) \
- V(_IntegerImplementation, -, Integer_sub) \
- V(_IntegerImplementation, _mulFromInteger, Integer_mulFromInteger) \
- V(_IntegerImplementation, *, Integer_mul) \
- V(_IntegerImplementation, %, Integer_modulo) \
- V(_IntegerImplementation, ~/, Integer_truncDivide) \
- V(_IntegerImplementation, unary-, Integer_negate) \
- V(_IntegerImplementation, _bitAndFromInteger, Integer_bitAndFromInteger) \
- V(_IntegerImplementation, &, Integer_bitAnd) \
- V(_IntegerImplementation, _bitOrFromInteger, Integer_bitOrFromInteger) \
- V(_IntegerImplementation, |, Integer_bitOr) \
- V(_IntegerImplementation, _bitXorFromInteger, Integer_bitXorFromInteger) \
- V(_IntegerImplementation, ^, Integer_bitXor) \
+ V(_IntegerImplementation, _addFromInteger, Integer_addFromInteger, 726019207)\
+ V(_IntegerImplementation, +, Integer_add, 13708438) \
+ V(_IntegerImplementation, _subFromInteger, Integer_subFromInteger, 726019207)\
+ V(_IntegerImplementation, -, Integer_sub, 284482664) \
+ V(_IntegerImplementation, _mulFromInteger, Integer_mulFromInteger, 726019207)\
+ V(_IntegerImplementation, *, Integer_mul, 486761895) \
+ V(_IntegerImplementation, %, Integer_modulo, 1370017357) \
+ V(_IntegerImplementation, ~/, Integer_truncDivide, 450435650) \
+ V(_IntegerImplementation, unary-, Integer_negate, 1734168384) \
+ V(_IntegerImplementation, _bitAndFromInteger, \
+ Integer_bitAndFromInteger, 726019207) \
+ V(_IntegerImplementation, &, Integer_bitAnd, 1267520437) \
+ V(_IntegerImplementation, _bitOrFromInteger, \
+ Integer_bitOrFromInteger, 726019207) \
+ V(_IntegerImplementation, |, Integer_bitOr, 249432836) \
+ V(_IntegerImplementation, _bitXorFromInteger, \
+ Integer_bitXorFromInteger, 726019207) \
+ V(_IntegerImplementation, ^, Integer_bitXor, 1177061571) \
V(_IntegerImplementation, \
_greaterThanFromInteger, \
- Integer_greaterThanFromInt) \
- V(_IntegerImplementation, >, Integer_greaterThan) \
- V(_IntegerImplementation, ==, Integer_equal) \
- V(_IntegerImplementation, _equalToInteger, Integer_equalToInteger) \
- V(_IntegerImplementation, <, Integer_lessThan) \
- V(_IntegerImplementation, <=, Integer_lessEqualThan) \
- V(_IntegerImplementation, >=, Integer_greaterEqualThan) \
- V(_IntegerImplementation, <<, Integer_shl) \
- V(_IntegerImplementation, >>, Integer_sar) \
- V(_Smi, ~, Smi_bitNegate) \
- V(_Double, >, Double_greaterThan) \
- V(_Double, >=, Double_greaterEqualThan) \
- V(_Double, <, Double_lessThan) \
- V(_Double, <=, Double_lessEqualThan) \
- V(_Double, ==, Double_equal) \
- V(_Double, +, Double_add) \
- V(_Double, -, Double_sub) \
- V(_Double, *, Double_mul) \
- V(_Double, /, Double_div) \
- V(_Double, get:isNaN, Double_getIsNaN) \
- V(_Double, get:isNegative, Double_getIsNegative) \
- V(_Double, _mulFromInteger, Double_mulFromInteger) \
- V(_Double, .fromInteger, Double_fromInteger) \
- V(_Double, toInt, Double_toInt) \
- V(_ObjectArray, ., ObjectArray_Allocate) \
- V(_ObjectArray, get:length, Array_getLength) \
- V(_ObjectArray, [], Array_getIndexed) \
- V(_ObjectArray, []=, Array_setIndexed) \
- V(_GrowableObjectArray, .fromObjectArray, GArray_Allocate) \
- V(_GrowableObjectArray, get:length, GrowableArray_getLength) \
- V(_GrowableObjectArray, get:capacity, GrowableArray_getCapacity) \
- V(_GrowableObjectArray, [], GrowableArray_getIndexed) \
- V(_GrowableObjectArray, []=, GrowableArray_setIndexed) \
- V(_GrowableObjectArray, _setLength, GrowableArray_setLength) \
- V(_GrowableObjectArray, _setData, GrowableArray_setData) \
- V(_GrowableObjectArray, add, GrowableArray_add) \
- V(_ImmutableArray, [], ImmutableArray_getIndexed) \
- V(_ImmutableArray, get:length, ImmutableArray_getLength) \
- V(::, sqrt, Math_sqrt) \
- V(::, sin, Math_sin) \
- V(::, cos, Math_cos) \
- V(Object, ==, Object_equal) \
- V(_FixedSizeArrayIterator, get:hasNext, FixedSizeArrayIterator_getHasNext) \
- V(_FixedSizeArrayIterator, next, FixedSizeArrayIterator_next) \
- V(_StringBase, get:hashCode, String_getHashCode) \
- V(_StringBase, get:isEmpty, String_getIsEmpty) \
- V(_StringBase, get:length, String_getLength) \
- V(_StringBase, charCodeAt, String_charCodeAt) \
- V(_ByteArrayBase, get:length, ByteArrayBase_getLength) \
- V(_Int8Array, [], Int8Array_getIndexed) \
- V(_Int8Array, []=, Int8Array_setIndexed) \
- V(_Uint8Array, [], Uint8Array_getIndexed) \
- V(_Uint8Array, []=, Uint8Array_setIndexed) \
- V(_Int16Array, [], Int16Array_getIndexed) \
- V(_Uint16Array, [], Uint16Array_getIndexed) \
- V(_Int32Array, [], Int32Array_getIndexed) \
- V(_Uint32Array, [], Uint32Array_getIndexed) \
- V(_Int64Array, [], Int64Array_getIndexed) \
- V(_Uint64Array, [], Uint64Array_getIndexed) \
- V(_Float32Array, [], Float32Array_getIndexed) \
- V(_Float32Array, []=, Float32Array_setIndexed) \
- V(_Float64Array, [], Float64Array_getIndexed) \
- V(_Float64Array, []=, Float64Array_setIndexed) \
+ Integer_greaterThanFromInt, 79222670) \
+ V(_IntegerImplementation, >, Integer_greaterThan, 319553701) \
+ V(_IntegerImplementation, ==, Integer_equal, 1163202222) \
+ V(_IntegerImplementation, _equalToInteger, Integer_equalToInteger, 79222670) \
+ V(_IntegerImplementation, <, Integer_lessThan, 1306209983) \
+ V(_IntegerImplementation, <=, Integer_lessEqualThan, 458673122) \
+ V(_IntegerImplementation, >=, Integer_greaterEqualThan, 459596643) \
+ V(_IntegerImplementation, <<, Integer_shl, 1586407617) \
+ V(_IntegerImplementation, >>, Integer_sar, 130211175) \
+ V(_Smi, ~, Smi_bitNegate, 882629793) \
+ V(_Double, >, Double_greaterThan, 1821658410) \
+ V(_Double, >=, Double_greaterEqualThan, 1317118885) \
+ V(_Double, <, Double_lessThan, 177557761) \
+ V(_Double, <=, Double_lessEqualThan, 1316195364) \
+ V(_Double, ==, Double_equal, 1896071176) \
+ V(_Double, +, Double_add, 1137022234) \
+ V(_Double, -, Double_sub, 1425469940) \
+ V(_Double, *, Double_mul, 1865672692) \
+ V(_Double, /, Double_div, 1832148629) \
+ V(_Double, get:isNaN, Double_getIsNaN, 54462366) \
+ V(_Double, get:isNegative, Double_getIsNegative, 54462366) \
+ V(_Double, _mulFromInteger, Double_mulFromInteger, 795128) \
+ V(_Double, .fromInteger, Double_fromInteger, 842078193) \
+ V(_Double, toInt, Double_toInt, 362666636) \
+ V(_ObjectArray, ., ObjectArray_Allocate, 577949617) \
+ V(_ObjectArray, get:length, Array_getLength, 405297088) \
+ V(_ObjectArray, [], Array_getIndexed, 71937385) \
+ V(_ObjectArray, []=, Array_setIndexed, 255863719) \
+ V(_GrowableObjectArray, .fromObjectArray, GArray_Allocate, 989879928) \
+ V(_GrowableObjectArray, get:length, GrowableArray_getLength, 725548050) \
+ V(_GrowableObjectArray, get:capacity, GrowableArray_getCapacity, 725548050) \
+ V(_GrowableObjectArray, [], GrowableArray_getIndexed, 581838973) \
+ V(_GrowableObjectArray, []=, GrowableArray_setIndexed, 1048007636) \
+ V(_GrowableObjectArray, _setLength, GrowableArray_setLength, 796709584) \
+ V(_GrowableObjectArray, _setData, GrowableArray_setData, 477312179) \
+ V(_GrowableObjectArray, add, GrowableArray_add, 1776744235) \
+ V(_ImmutableArray, [], ImmutableArray_getIndexed, 486821199) \
+ V(_ImmutableArray, get:length, ImmutableArray_getLength, 433698233) \
+ V(::, sqrt, Math_sqrt, 2232519) \
+ V(::, sin, Math_sin, 837187616) \
+ V(::, cos, Math_cos, 548880317) \
+ V(Object, ==, Object_equal, 1512068535) \
+ V(_FixedSizeArrayIterator, get:hasNext, \
+ FixedSizeArrayIterator_getHasNext, 1847855366) \
+ V(_FixedSizeArrayIterator, next, FixedSizeArrayIterator_next, 1739352783) \
+ V(_StringBase, get:hashCode, String_getHashCode, 320803993) \
+ V(_StringBase, get:isEmpty, String_getIsEmpty, 1065961093) \
+ V(_StringBase, get:length, String_getLength, 320803993) \
+ V(_StringBase, charCodeAt, String_charCodeAt, 984449525) \
+ V(_ByteArrayBase, get:length, ByteArrayBase_getLength, 1856909152) \
+ V(_Int8Array, [], Int8Array_getIndexed, 239810357) \
+ V(_Int8Array, []=, Int8Array_setIndexed, 1469038436) \
+ V(_Uint8Array, [], Uint8Array_getIndexed, 1635923899) \
+ V(_Uint8Array, []=, Uint8Array_setIndexed, 1619321522) \
+ V(_Int16Array, [], Int16Array_getIndexed, 2090761657) \
+ V(_Uint16Array, [], Uint16Array_getIndexed, 289929708) \
+ V(_Int32Array, [], Int32Array_getIndexed, 589442411) \
+ V(_Uint32Array, [], Uint32Array_getIndexed, 1474116947) \
+ V(_Int64Array, [], Int64Array_getIndexed, 1506836119) \
+ V(_Uint64Array, [], Uint64Array_getIndexed, 1856952148) \
+ V(_Float32Array, [], Float32Array_getIndexed, 1167607283) \
+ V(_Float32Array, []=, Float32Array_setIndexed, 1270729544) \
+ V(_Float64Array, [], Float64Array_getIndexed, 1363897161) \
+ V(_Float64Array, []=, Float64Array_setIndexed, 283625119) \
+ V(_ExternalUint8Array, [], ExternalUint8Array_getIndexed, 632699940) \
// Forward declarations.
class Assembler;
@@ -106,7 +115,7 @@
static bool CanIntrinsify(const Function& function);
private:
-#define DECLARE_FUNCTION(test_class_name, test_function_name, destination) \
+#define DECLARE_FUNCTION(test_class_name, test_function_name, destination, fp) \
static bool destination(Assembler* assembler);
INTRINSIC_LIST(DECLARE_FUNCTION)
diff --git a/runtime/vm/intrinsifier_ia32.cc b/runtime/vm/intrinsifier_ia32.cc
index cf47309..5675214 100644
--- a/runtime/vm/intrinsifier_ia32.cc
+++ b/runtime/vm/intrinsifier_ia32.cc
@@ -538,22 +538,19 @@
// * EBX has the index into the array.
// EBX contains the SMI index which is shifted by 1.
__ SmiUntag(EBX);
- // Move EBX into EDI.
+ // Free EBX for the value since we want a byte register.
__ movl(EDI, EBX);
- // Load the value into EBX.
__ movl(EBX, Address(ESP, + 1 * kWordSize)); // Value.
- // If EBX is not an Smi, jump to fall through.
__ testl(EBX, Immediate(kSmiTagMask));
__ j(NOT_ZERO, &fall_through, Assembler::kNearJump);
__ SmiUntag(EBX);
- // Add 128 to EBX to bring it into 0..FF.
+ // Check that the value is a byte. Add 128 to EBX to bring it into
+ // the range 0..FF.
__ addl(EBX, Immediate(128));
__ cmpl(EBX, Immediate(0xFF));
- // If EBX is too large an Int8, jump to fall through.
__ j(ABOVE, &fall_through, Assembler::kNearJump);
- // Remove addition.
+ // Undo addition.
__ subl(EBX, Immediate(128));
- // Store BL into array EAX[EDI] = BL.
__ movb(FieldAddress(EAX, EDI, TIMES_1, Int8Array::data_offset()), BL);
__ ret();
__ Bind(&fall_through);
@@ -585,18 +582,15 @@
// * EBX has the index into the array.
// EBX contains the SMI index which is shifted by 1.
__ SmiUntag(EBX);
- // Move EBX into EDI.
+ // Free EBX for the value since we want a byte register.
__ movl(EDI, EBX);
- // Load the value into EBX.
__ movl(EBX, Address(ESP, + 1 * kWordSize)); // Value.
- // If EBX is not an Smi, jump to fall through.
__ testl(EBX, Immediate(kSmiTagMask));
__ j(NOT_ZERO, &fall_through, Assembler::kNearJump);
__ SmiUntag(EBX);
- // If EBX is too large an Uint8, jump to fall through.
+ // Check that the value is a byte.
__ cmpl(EBX, Immediate(0xFF));
__ j(ABOVE, &fall_through, Assembler::kNearJump);
- // Store BL into array EAX[EDI] = BL.
__ movb(FieldAddress(EAX, EDI, TIMES_1, Uint8Array::data_offset()), BL);
__ ret();
__ Bind(&fall_through);
@@ -792,6 +786,20 @@
}
+bool Intrinsifier::ExternalUint8Array_getIndexed(Assembler* assembler) {
+ Label fall_through;
+ TestByteArrayIndex(assembler, &fall_through);
+ __ SmiUntag(EBX);
+ __ movl(EAX, FieldAddress(EAX, ExternalUint8Array::external_data_offset()));
+ __ movl(EAX, Address(EAX, ExternalByteArrayData<uint8_t>::data_offset()));
+ __ movzxb(EAX, Address(EAX, EBX, TIMES_1, 0));
+ __ SmiTag(EAX);
+ __ ret();
+ __ Bind(&fall_through);
+ return false;
+}
+
+
// Tests if two top most arguments are smis, jumps to label not_smi if not.
// Topmost argument is in EAX.
static void TestBothArgumentsSmis(Assembler* assembler, Label* not_smi) {
diff --git a/runtime/vm/intrinsifier_x64.cc b/runtime/vm/intrinsifier_x64.cc
index 5f3f96d..8d52b6a 100644
--- a/runtime/vm/intrinsifier_x64.cc
+++ b/runtime/vm/intrinsifier_x64.cc
@@ -471,6 +471,26 @@
bool Intrinsifier::Int8Array_setIndexed(Assembler* assembler) {
Label fall_through;
+ // Verify that the array index is valid.
+ TestByteArraySetIndex(assembler, &fall_through);
+ // After TestByteArraySetIndex:
+ // * RAX has the base address of the byte array.
+ // * R12 has the index into the array.
+ // R12 contains the SMI index which is shifted by 1.
+ __ SmiUntag(R12);
+ __ movq(RDI, Address(RSP, + 1 * kWordSize)); // Value.
+ __ testq(RDI, Immediate(kSmiTagMask));
+ __ j(NOT_ZERO, &fall_through, Assembler::kNearJump);
+ __ SmiUntag(RDI);
+ // Check that the value is a byte. Add 128 to the value to bring it into
+ // the range 0..FF.
+ __ addq(RDI, Immediate(128));
+ __ cmpq(RDI, Immediate(0xFF));
+ __ j(ABOVE, &fall_through, Assembler::kNearJump);
+ // Undo addition.
+ __ subq(RDI, Immediate(128));
+ __ movb(FieldAddress(RAX, R12, TIMES_1, Uint8Array::data_offset()), RDI);
+ __ ret();
__ Bind(&fall_through);
return false;
}
@@ -478,6 +498,22 @@
bool Intrinsifier::Uint8Array_setIndexed(Assembler* assembler) {
Label fall_through;
+ // Verify that the array index is valid.
+ TestByteArraySetIndex(assembler, &fall_through);
+ // After TestByteArraySetIndex:
+ // * RAX has the base address of the byte array.
+ // * R12 has the index into the array.
+ // R12 contains the SMI index which is shifted by 1.
+ __ SmiUntag(R12);
+ __ movq(RDI, Address(RSP, + 1 * kWordSize)); // Value.
+ __ testq(RDI, Immediate(kSmiTagMask));
+ __ j(NOT_ZERO, &fall_through, Assembler::kNearJump);
+ __ SmiUntag(RDI);
+ // Check that value is a byte.
+ __ cmpq(RDI, Immediate(0xFF));
+ __ j(ABOVE, &fall_through, Assembler::kNearJump);
+ __ movb(FieldAddress(RAX, R12, TIMES_1, Uint8Array::data_offset()), RDI);
+ __ ret();
__ Bind(&fall_through);
return false;
}
@@ -700,6 +736,20 @@
}
+bool Intrinsifier::ExternalUint8Array_getIndexed(Assembler* assembler) {
+ Label fall_through;
+ TestByteArrayIndex(assembler, &fall_through);
+ __ SmiUntag(R12);
+ __ movq(RAX, FieldAddress(RAX, ExternalUint8Array::external_data_offset()));
+ __ movq(RAX, Address(RAX, ExternalByteArrayData<uint8_t>::data_offset()));
+ __ movzxb(RAX, Address(RAX, R12, TIMES_1, 0));
+ __ SmiTag(RAX);
+ __ ret();
+ __ Bind(&fall_through);
+ return false;
+}
+
+
// Tests if two top most arguments are smis, jumps to label not_smi if not.
// Topmost argument is in RAX.
static void TestBothArgumentsSmis(Assembler* assembler, Label* not_smi) {
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index af8f5e3..6b9178d 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -17,7 +17,6 @@
#include "vm/object_store.h"
#include "vm/parser.h"
#include "vm/port.h"
-#include "vm/random.h"
#include "vm/stack_frame.h"
#include "vm/stub_code.h"
#include "vm/symbols.h"
@@ -150,7 +149,6 @@
heap_(NULL),
object_store_(NULL),
top_context_(Context::null()),
- random_seed_(Random::kDefaultRandomSeed),
top_exit_frame_info_(0),
init_callback_data_(NULL),
library_tag_handler_(NULL),
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h
index 76afa3e..5849640 100644
--- a/runtime/vm/isolate.h
+++ b/runtime/vm/isolate.h
@@ -145,9 +145,6 @@
return OFFSET_OF(Isolate, top_context_);
}
- int32_t random_seed() const { return random_seed_; }
- void set_random_seed(int32_t value) { random_seed_ = value; }
-
uword top_exit_frame_info() const { return top_exit_frame_info_; }
void set_top_exit_frame_info(uword value) { top_exit_frame_info_ = value; }
static intptr_t top_exit_frame_info_offset() {
@@ -326,7 +323,6 @@
Heap* heap_;
ObjectStore* object_store_;
RawContext* top_context_;
- int32_t random_seed_;
uword top_exit_frame_info_;
void* init_callback_data_;
Dart_LibraryTagHandler library_tag_handler_;
diff --git a/runtime/vm/isolate_test.cc b/runtime/vm/isolate_test.cc
index 2aadf6d..9812840 100644
--- a/runtime/vm/isolate_test.cc
+++ b/runtime/vm/isolate_test.cc
@@ -23,7 +23,7 @@
// callback has been set by the embedder when an isolate is spawned.
TEST_CASE(IsolateSpawn) {
const char* kScriptChars =
- "#import('dart:isolate');\n"
+ "import 'dart:isolate';\n"
"void entry() {}\n"
"int testMain() {\n"
" try {\n"
diff --git a/runtime/vm/locations.h b/runtime/vm/locations.h
index 4522b1a..0c2bc09 100644
--- a/runtime/vm/locations.h
+++ b/runtime/vm/locations.h
@@ -277,6 +277,12 @@
return value_ == other.value_;
}
+ // If current location is constant might return something that
+ // is not equal to any Kind.
+ Kind kind() const {
+ return KindField::decode(value_);
+ }
+
private:
explicit Location(uword value) : value_(value) { }
@@ -287,12 +293,6 @@
return PayloadField::decode(value_);
}
- // If current location is constant might return something that
- // is not equal to any Kind.
- Kind kind() const {
- return KindField::decode(value_);
- }
-
typedef BitField<Kind, 0, kBitsForKind> KindField;
typedef BitField<uword, kBitsForKind, kBitsForPayload> PayloadField;
diff --git a/runtime/vm/native_entry_test.cc b/runtime/vm/native_entry_test.cc
index 6f945b4..8c58b66 100644
--- a/runtime/vm/native_entry_test.cc
+++ b/runtime/vm/native_entry_test.cc
@@ -58,14 +58,15 @@
// Test code patching.
void TestStaticCallPatching(Dart_NativeArguments args) {
Dart_EnterScope();
- uword target_address = 0;
- Function& target_function = Function::Handle();
DartFrameIterator iterator;
iterator.NextFrame(); // Skip native call.
StackFrame* static_caller_frame = iterator.NextFrame();
- CodePatcher::GetStaticCallAt(static_caller_frame->pc(),
- &target_function,
- &target_address);
+ uword target_address =
+ CodePatcher::GetStaticCallTargetAt(static_caller_frame->pc());
+ const Code& code = Code::Handle(static_caller_frame->LookupDartCode());
+ const Function& target_function =
+ Function::Handle(code.GetStaticCallTargetFunctionAt(
+ static_caller_frame->pc()));
EXPECT(String::Handle(target_function.name()).
Equals(String::Handle(String::New("NativePatchStaticCall"))));
const uword function_entry_address =
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 5dc09dd..6867359 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -408,6 +408,8 @@
isolate->object_store()->set_array_class(cls);
cls = Class::NewStringClass(kOneByteStringCid);
isolate->object_store()->set_one_byte_string_class(cls);
+ cls = Class::NewStringClass(kTwoByteStringCid);
+ isolate->object_store()->set_two_byte_string_class(cls);
// Allocate and initialize the empty_array instance.
{
@@ -516,17 +518,6 @@
}
-RawClass* Object::CreateAndRegisterInterface(const char* cname,
- const Script& script,
- const Library& lib) {
- const String& name = String::Handle(Symbols::New(cname));
- const Class& cls = Class::Handle(
- Class::NewInterface(name, script, Scanner::kDummyTokenIndex));
- lib.AddClass(cls);
- return cls.raw();
-}
-
-
void Object::RegisterClass(const Class& cls,
const String& name,
const Library& lib) {
@@ -590,6 +581,10 @@
cls = Class::NewStringClass(kOneByteStringCid);
object_store->set_one_byte_string_class(cls);
+ // Pre-allocate the TwoByteString class needed by the symbol table.
+ cls = Class::NewStringClass(kTwoByteStringCid);
+ object_store->set_two_byte_string_class(cls);
+
// Setup the symbol table for the symbols created in the isolate.
Symbols::SetupSymbolTable(isolate);
@@ -650,8 +645,7 @@
RegisterPrivateClass(cls, name, core_lib);
pending_classes.Add(cls, Heap::kOld);
- cls = Class::NewStringClass(kTwoByteStringCid);
- object_store->set_two_byte_string_class(cls);
+ cls = object_store->two_byte_string_class(); // Was allocated above.
name = Symbols::TwoByteString();
RegisterPrivateClass(cls, name, core_lib);
pending_classes.Add(cls, Heap::kOld);
@@ -886,7 +880,9 @@
type = Type::NewNonParameterizedType(cls);
object_store->set_string_type(type);
- cls = CreateAndRegisterInterface("List", script, core_lib);
+ name = Symbols::New("List");
+ cls = Class::New<Instance>(name, script, Scanner::kDummyTokenIndex);
+ RegisterClass(cls, name, core_lib);
pending_classes.Add(cls, Heap::kOld);
object_store->set_list_class(cls);
@@ -2038,6 +2034,11 @@
}
+bool Class::IsListClass() const {
+ return raw() == Isolate::Current()->object_store()->list_class();
+}
+
+
bool Class::IsCanonicalSignatureClass() const {
const Function& function = Function::Handle(signature_function());
return (!function.IsNull() && (function.signature_class() == raw()));
@@ -2476,7 +2477,12 @@
const char* UnresolvedClass::ToCString() const {
- return "UnresolvedClass";
+ const char* format = "unresolved class '%s'";
+ const char* cname = String::Handle(Name()).ToCString();
+ intptr_t len = OS::SNPrint(NULL, 0, format, cname) + 1;
+ char* chars = Isolate::Current()->current_zone()->Alloc<char>(len);
+ OS::SNPrint(chars, len, format, cname);
+ return chars;
}
@@ -4180,6 +4186,45 @@
}
+// Construct fingerprint from token stream. The token stream contains also
+// arguments.
+int32_t Function::SourceFingerprint() const {
+ uint32_t result = String::Handle(Signature()).Hash();
+ TokenStream::Iterator tokens_iterator(TokenStream::Handle(
+ Script::Handle(script()).tokens()), token_pos());
+ Object& obj = Object::Handle();
+ String& literal = String::Handle();
+ while (tokens_iterator.CurrentPosition() < end_token_pos()) {
+ uint32_t val = 0;
+ obj = tokens_iterator.CurrentToken();
+ if (obj.IsSmi()) {
+ val = Smi::Cast(obj).Value();
+ } else {
+ literal = tokens_iterator.MakeLiteralToken(obj);
+ val = literal.Hash();
+ }
+ result = 31 * result + val;
+ tokens_iterator.Advance();
+ }
+ result = result & ((static_cast<uint32_t>(1) << 31) - 1);
+ ASSERT(result <= static_cast<uint32_t>(kMaxInt32));
+ return result;
+}
+
+
+bool Function::CheckSourceFingerprint(intptr_t fp) const {
+ if (SourceFingerprint() != fp) {
+ OS::Print("FP mismatch while recogbnizing method %s:"
+ " expecting %"Pd" found %d\n",
+ ToFullyQualifiedCString(),
+ fp,
+ SourceFingerprint());
+ return false;
+ }
+ return true;
+}
+
+
const char* Function::ToCString() const {
const char* static_str = is_static() ? " static" : "";
const char* abstract_str = is_abstract() ? " abstract" : "";
@@ -7002,8 +7047,41 @@
}
-void Code::set_resolved_static_calls(const GrowableObjectArray& val) const {
- StorePointer(&raw_ptr()->resolved_static_calls_, val.raw());
+void Code::set_static_calls_target_table(const Array& value) const {
+ StorePointer(&raw_ptr()->static_calls_target_table_, value.raw());
+}
+
+
+RawFunction* Code::GetStaticCallTargetFunctionAt(uword pc) const {
+ RawObject* raw_code_offset =
+ reinterpret_cast<RawObject*>(Smi::New(pc - EntryPoint()));
+ const Array& array =
+ Array::Handle(raw_ptr()->static_calls_target_table_);
+ for (intptr_t i = 0; i < array.Length(); i += kSCallTableEntryLength) {
+ if (array.At(i) == raw_code_offset) {
+ Function& function = Function::Handle();
+ function ^= array.At(i + kSCallTableFunctionEntry);
+ return function.raw();
+ }
+ }
+ return Function::null();
+}
+
+
+void Code::SetStaticCallTargetCodeAt(uword pc, const Code& code) const {
+ RawObject* raw_code_offset =
+ reinterpret_cast<RawObject*>(Smi::New(pc - EntryPoint()));
+ const Array& array =
+ Array::Handle(raw_ptr()->static_calls_target_table_);
+ for (intptr_t i = 0; i < array.Length(); i += kSCallTableEntryLength) {
+ if (array.At(i) == raw_code_offset) {
+ ASSERT(code.IsNull() ||
+ (code.function() == array.At(i + kSCallTableFunctionEntry)));
+ array.SetAt(i + kSCallTableCodeEntry, code);
+ return;
+ }
+ }
+ UNREACHABLE();
}
@@ -7276,12 +7354,11 @@
deopt_ids->Clear();
const PcDescriptors& descriptors =
PcDescriptors::Handle(this->pc_descriptors());
- Function& function = Function::Handle();
for (intptr_t i = 0; i < descriptors.Length(); i++) {
if (descriptors.DescriptorKind(i) == PcDescriptors::kFuncCall) {
// Static call.
- uword target_addr;
- CodePatcher::GetStaticCallAt(descriptors.PC(i), &function, &target_addr);
+ const uword target_addr =
+ CodePatcher::GetStaticCallTargetAt(descriptors.PC(i));
if (target_addr == StubCode::CallStaticFunctionEntryPoint()) {
deopt_ids->Add(descriptors.DeoptId(i));
}
@@ -8977,18 +9054,21 @@
if (IsResolved()) {
const AbstractTypeArguments& type_arguments =
AbstractTypeArguments::Handle(arguments());
+ const char* class_name;
+ if (HasResolvedTypeClass()) {
+ class_name = String::Handle(
+ Class::Handle(type_class()).Name()).ToCString();
+ } else {
+ class_name = UnresolvedClass::Handle(unresolved_class()).ToCString();
+ }
if (type_arguments.IsNull()) {
const char* format = "Type: class '%s'";
- const char* class_name =
- String::Handle(Class::Handle(type_class()).Name()).ToCString();
intptr_t len = OS::SNPrint(NULL, 0, format, class_name) + 1;
char* chars = Isolate::Current()->current_zone()->Alloc<char>(len);
OS::SNPrint(chars, len, format, class_name);
return chars;
} else {
const char* format = "Type: class '%s', args:[%s]";
- const char* class_name =
- String::Handle(Class::Handle(type_class()).Name()).ToCString();
const char* args_cstr =
AbstractTypeArguments::Handle(arguments()).ToCString();
intptr_t len = OS::SNPrint(NULL, 0, format, class_name, args_cstr) + 1;
@@ -9875,11 +9955,11 @@
hash_ ^= hash_ >> 11;
hash_ += hash_ << 15;
hash_ = hash_ & ((static_cast<intptr_t>(1) << bits) - 1);
- ASSERT(hash_ >= 0);
+ ASSERT(hash_ <= static_cast<uint32_t>(kMaxInt32));
return hash_ == 0 ? 1 : hash_;
}
private:
- intptr_t hash_;
+ uint32_t hash_;
};
@@ -9927,7 +10007,7 @@
}
-intptr_t String::Hash(const uint32_t* characters, intptr_t len) {
+intptr_t String::Hash(const int32_t* characters, intptr_t len) {
return HashImpl(characters, len);
}
@@ -9990,36 +10070,37 @@
}
-bool String::Equals(const char* str) const {
- ASSERT(str != NULL);
- intptr_t len = strlen(str);
- for (intptr_t i = 0; i < this->Length(); ++i) {
- if (*str == '\0') {
+bool String::Equals(const char* cstr) const {
+ ASSERT(cstr != NULL);
+ CodePointIterator it(*this);
+ intptr_t len = strlen(cstr);
+ while (it.Next()) {
+ if (*cstr == '\0') {
// Lengths don't match.
return false;
}
int32_t ch;
- intptr_t consumed = Utf8::Decode(reinterpret_cast<const uint8_t*>(str),
+ intptr_t consumed = Utf8::Decode(reinterpret_cast<const uint8_t*>(cstr),
len,
&ch);
- if (consumed == 0 || this->CharAt(i) != ch) {
+ if (consumed == 0 || it.Current() != ch) {
return false;
}
- str += consumed;
+ cstr += consumed;
len -= consumed;
}
- return *str == '\0';
+ return *cstr == '\0';
}
-bool String::Equals(const uint8_t* characters, intptr_t len) const {
+bool String::Equals(const uint8_t* latin1_array, intptr_t len) const {
if (len != this->Length()) {
// Lengths don't match.
return false;
}
for (intptr_t i = 0; i < len; i++) {
- if (this->CharAt(i) != characters[i]) {
+ if (this->CharAt(i) != latin1_array[i]) {
return false;
}
}
@@ -10027,14 +10108,14 @@
}
-bool String::Equals(const uint16_t* characters, intptr_t len) const {
+bool String::Equals(const uint16_t* utf16_array, intptr_t len) const {
if (len != this->Length()) {
// Lengths don't match.
return false;
}
for (intptr_t i = 0; i < len; i++) {
- if (this->CharAt(i) != characters[i]) {
+ if (this->CharAt(i) != utf16_array[i]) {
return false;
}
}
@@ -10042,16 +10123,17 @@
}
-bool String::Equals(const uint32_t* characters, intptr_t len) const {
- if (len != this->Length()) {
- // Lengths don't match.
- return false;
- }
-
- for (intptr_t i = 0; i < len; i++) {
- if (this->CharAt(i) != static_cast<int32_t>(characters[i])) {
+bool String::Equals(const int32_t* utf32_array, intptr_t len) const {
+ CodePointIterator it(*this);
+ intptr_t i = 0;
+ while (it.Next()) {
+ if (it.Current() != static_cast<int32_t>(utf32_array[i])) {
return false;
}
+ ++i;
+ }
+ if (i != len) {
+ return false;
}
return true;
}
@@ -10121,7 +10203,7 @@
}
return strobj.raw();
}
- ASSERT((type == Utf8::kBMP) || (type == Utf8::kSMP));
+ ASSERT((type == Utf8::kBMP) || (type == Utf8::kSupplementary));
const String& strobj = String::Handle(TwoByteString::New(len, space));
NoGCScope no_gc;
Utf8::DecodeToUTF16(utf8_array, array_len,
@@ -10147,7 +10229,7 @@
}
-RawString* String::New(const uint32_t* utf32_array,
+RawString* String::New(const int32_t* utf32_array,
intptr_t array_len,
Heap::Space space) {
bool is_one_byte_string = true;
@@ -10512,10 +10594,9 @@
ASSERT(!str.IsNull());
bool has_mapping = false;
int32_t dst_max = 0;
- intptr_t len = str.Length();
- // TODO(cshapiro): assume a transform is required, rollback if not.
- for (intptr_t i = 0; i < len; ++i) {
- int32_t src = str.CharAt(i);
+ CodePointIterator it(str);
+ while (it.Next()) {
+ int32_t src = it.Current();
int32_t dst = mapping(src);
if (src != dst) {
has_mapping = true;
@@ -10545,6 +10626,25 @@
}
+bool String::CodePointIterator::Next() {
+ ASSERT(index_ >= -1);
+ ASSERT(index_ < str_.Length());
+ int d = Utf16::Length(ch_);
+ if (index_ == (str_.Length() - d)) {
+ return false;
+ }
+ index_ += d;
+ ch_ = str_.CharAt(index_);
+ if (Utf16::IsLeadSurrogate(ch_) && (index_ != (str_.Length() - 1))) {
+ int32_t ch2 = str_.CharAt(index_ + 1);
+ if (Utf16::IsTrailSurrogate(ch2)) {
+ ch_ = Utf16::Decode(ch_, ch2);
+ }
+ }
+ return true;
+}
+
+
RawOneByteString* OneByteString::EscapeSpecialCharacters(const String& str,
bool raw_str) {
intptr_t len = str.Length();
@@ -10683,7 +10783,7 @@
}
-RawOneByteString* OneByteString::New(const uint32_t* characters,
+RawOneByteString* OneByteString::New(const int32_t* characters,
intptr_t len,
Heap::Space space) {
const String& result = String::Handle(OneByteString::New(len, space));
@@ -10818,7 +10918,7 @@
RawTwoByteString* TwoByteString::New(intptr_t utf16_len,
- const uint32_t* utf32_array,
+ const int32_t* utf32_array,
intptr_t array_len,
Heap::Space space) {
ASSERT((array_len > 0) && (utf16_len >= array_len));
@@ -10829,7 +10929,7 @@
for (intptr_t i = 0; i < array_len; ++i) {
if (utf32_array[i] > 0xffff) {
ASSERT(j < (utf16_len - 1));
- Utf8::ConvertUTF32ToUTF16(utf32_array[i], CharAddr(result, j));
+ Utf16::Encode(utf32_array[i], CharAddr(result, j));
j += 2;
} else {
ASSERT(j < utf16_len);
@@ -10887,10 +10987,20 @@
ASSERT(!str.IsNull());
intptr_t len = str.Length();
const String& result = String::Handle(TwoByteString::New(len, space));
- for (intptr_t i = 0; i < len; ++i) {
- int32_t ch = mapping(str.CharAt(i));
- ASSERT(ch >= 0 && ch <= 0xFFFF);
- *CharAddr(result, i) = ch;
+ String::CodePointIterator it(str);
+ intptr_t i = 0;
+ while (it.Next()) {
+ int32_t src = it.Current();
+ int32_t dst = mapping(src);
+ ASSERT(dst >= 0 && dst <= 0x10FFFF);
+ intptr_t len = Utf16::Length(dst);
+ if (len == 1) {
+ *CharAddr(result, i) = dst;
+ } else {
+ ASSERT(len == 2);
+ Utf16::Encode(dst, CharAddr(result, i));
+ }
+ i += len;
}
return TwoByteString::raw(result);
}
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 07cb5bf..e40d545 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -366,9 +366,6 @@
private:
static void InitializeObject(uword address, intptr_t id, intptr_t size);
- static RawClass* CreateAndRegisterInterface(const char* cname,
- const Script& script,
- const Library& lib);
static void RegisterClass(const Class& cls,
const String& name,
const Library& lib);
@@ -605,6 +602,9 @@
// Check if this class represents the 'Object' class.
bool IsObjectClass() const { return id() == kInstanceCid; }
+ // Check if this class represents the 'List' class.
+ bool IsListClass() const;
+
// Check if this class represents a signature class.
bool IsSignatureClass() const {
return signature_function() != Object::null();
@@ -1433,6 +1433,13 @@
const Function& parent,
intptr_t token_pos);
+ // Slow function, use in asserts to track changes in important library
+ // functions.
+ int32_t SourceFingerprint() const;
+
+ // Return false and report an error if the fingerprint does not match.
+ bool CheckSourceFingerprint(intptr_t fp) const;
+
static const int kCtorPhaseInit = 1 << 0;
static const int kCtorPhaseBody = 1 << 1;
static const int kCtorPhaseAll = (kCtorPhaseInit | kCtorPhaseBody);
@@ -2486,10 +2493,22 @@
void set_stackmaps(const Array& maps) const;
RawStackmap* GetStackmap(uword pc, Array* stackmaps, Stackmap* map) const;
- RawGrowableObjectArray* resolved_static_calls() const {
- return raw_ptr()->resolved_static_calls_;
+ enum {
+ kSCallTableOffsetEntry = 0,
+ kSCallTableFunctionEntry = 1,
+ kSCallTableCodeEntry = 2,
+ kSCallTableEntryLength = 3,
+ };
+
+ void set_static_calls_target_table(const Array& value) const;
+ RawArray* static_calls_target_table() const {
+ return raw_ptr()->static_calls_target_table_;
}
- void set_resolved_static_calls(const GrowableObjectArray& val) const;
+
+ // Returns null if there is no static call at 'pc'.
+ RawFunction* GetStaticCallTargetFunctionAt(uword pc) const;
+ // Aborts if there is no static call at 'pc'.
+ void SetStaticCallTargetCodeAt(uword pc, const Code& code) const;
class Comments : public ZoneAllocated {
public:
@@ -3708,6 +3727,29 @@
static const intptr_t kSizeofRawString = sizeof(RawObject) + (2 * kWordSize);
static const intptr_t kMaxElements = kSmiMax / kTwoByteChar;
+ class CodePointIterator : public ValueObject {
+ public:
+ explicit CodePointIterator(const String& str)
+ : str_(str),
+ index_(-1),
+ ch_(-1) {
+ }
+
+ int32_t Current() {
+ ASSERT(index_ >= 0);
+ ASSERT(index_ < str_.Length());
+ return ch_;
+ }
+
+ bool Next();
+
+ private:
+ const String& str_;
+ intptr_t index_;
+ int32_t ch_;
+ DISALLOW_IMPLICIT_CONSTRUCTORS(CodePointIterator);
+ };
+
intptr_t Length() const { return Smi::Value(raw_ptr()->length_); }
static intptr_t length_offset() { return OFFSET_OF(RawString, length_); }
@@ -3716,7 +3758,7 @@
static intptr_t Hash(const String& str, intptr_t begin_index, intptr_t len);
static intptr_t Hash(const uint8_t* characters, intptr_t len);
static intptr_t Hash(const uint16_t* characters, intptr_t len);
- static intptr_t Hash(const uint32_t* characters, intptr_t len);
+ static intptr_t Hash(const int32_t* characters, intptr_t len);
int32_t CharAt(intptr_t index) const;
@@ -3726,10 +3768,18 @@
inline bool Equals(const String& str,
intptr_t begin_index, // begin index on 'str'.
intptr_t len) const; // len on 'str'.
- bool Equals(const char* str) const;
+
+ // Compares to a '\0' terminated array of UTF-8 encoded characters.
+ bool Equals(const char* cstr) const;
+
+ // Compares to an array of UTF-8 encoded characters.
bool Equals(const uint8_t* characters, intptr_t len) const;
+
+ // Compares to an array of UTF-16 encoded characters.
bool Equals(const uint16_t* characters, intptr_t len) const;
- bool Equals(const uint32_t* characters, intptr_t len) const;
+
+ // Compares to an array of UTF-32 encoded characters.
+ bool Equals(const int32_t* characters, intptr_t len) const;
virtual bool Equals(const Instance& other) const;
@@ -3791,7 +3841,7 @@
Heap::Space space = Heap::kNew);
// Creates a new String object from an array of UTF-32 encoded characters.
- static RawString* New(const uint32_t* utf32_array,
+ static RawString* New(const int32_t* utf32_array,
intptr_t array_len,
Heap::Space space = Heap::kNew);
@@ -3937,7 +3987,7 @@
static RawOneByteString* New(const uint16_t* characters,
intptr_t len,
Heap::Space space);
- static RawOneByteString* New(const uint32_t* characters,
+ static RawOneByteString* New(const int32_t* characters,
intptr_t len,
Heap::Space space);
static RawOneByteString* New(const String& str,
@@ -4020,7 +4070,7 @@
intptr_t len,
Heap::Space space);
static RawTwoByteString* New(intptr_t utf16_len,
- const uint32_t* characters,
+ const int32_t* characters,
intptr_t len,
Heap::Space space);
static RawTwoByteString* New(const String& str,
@@ -4515,7 +4565,7 @@
static const intptr_t kMaxElements = kSmiMax / kBytesPerElement;
static intptr_t data_offset() {
- return length_offset() + kWordSize;
+ return OFFSET_OF(RawInt8Array, data_);
}
static intptr_t InstanceSize() {
@@ -4567,7 +4617,7 @@
static const intptr_t kMaxElements = kSmiMax / kBytesPerElement;
static intptr_t data_offset() {
- return length_offset() + kWordSize;
+ return OFFSET_OF(RawUint8Array, data_);
}
static intptr_t InstanceSize() {
@@ -4619,7 +4669,7 @@
static const intptr_t kMaxElements = kSmiMax / kBytesPerElement;
static intptr_t data_offset() {
- return length_offset() + kWordSize;
+ return OFFSET_OF(RawInt16Array, data_);
}
static intptr_t InstanceSize() {
@@ -4671,7 +4721,7 @@
static const intptr_t kMaxElements = kSmiMax / kBytesPerElement;
static intptr_t data_offset() {
- return length_offset() + kWordSize;
+ return OFFSET_OF(RawUint16Array, data_);
}
static intptr_t InstanceSize() {
@@ -4723,7 +4773,7 @@
static const intptr_t kMaxElements = kSmiMax / kBytesPerElement;
static intptr_t data_offset() {
- return length_offset() + kWordSize;
+ return OFFSET_OF(RawInt32Array, data_);
}
static intptr_t InstanceSize() {
@@ -4775,7 +4825,7 @@
static const intptr_t kMaxElements = kSmiMax / kBytesPerElement;
static intptr_t data_offset() {
- return length_offset() + kWordSize;
+ return OFFSET_OF(RawUint32Array, data_);
}
static intptr_t InstanceSize() {
@@ -4827,7 +4877,7 @@
static const intptr_t kMaxElements = kSmiMax / kBytesPerElement;
static intptr_t data_offset() {
- return length_offset() + kWordSize;
+ return OFFSET_OF(RawInt64Array, data_);
}
static intptr_t InstanceSize() {
@@ -4879,7 +4929,7 @@
static const intptr_t kMaxElements = kSmiMax / kBytesPerElement;
static intptr_t data_offset() {
- return length_offset() + kWordSize;
+ return OFFSET_OF(RawUint64Array, data_);
}
static intptr_t InstanceSize() {
@@ -4931,7 +4981,7 @@
static const intptr_t kMaxElements = kSmiMax / kBytesPerElement;
static intptr_t data_offset() {
- return length_offset() + kWordSize;
+ return OFFSET_OF(RawFloat32Array, data_);
}
static intptr_t InstanceSize() {
@@ -4988,7 +5038,7 @@
}
static intptr_t data_offset() {
- return length_offset() + kWordSize;
+ return OFFSET_OF(RawFloat64Array, data_);
}
static intptr_t InstanceSize(intptr_t len) {
@@ -5107,6 +5157,10 @@
return RoundedAllocationSize(sizeof(RawExternalUint8Array));
}
+ static intptr_t external_data_offset() {
+ return OFFSET_OF(RawExternalUint8Array, external_data_);
+ }
+
static RawExternalUint8Array* New(uint8_t* data,
intptr_t len,
void* peer,
diff --git a/runtime/vm/object_test.cc b/runtime/vm/object_test.cc
index 354c11c..f91f5d6 100644
--- a/runtime/vm/object_test.cc
+++ b/runtime/vm/object_test.cc
@@ -5,6 +5,7 @@
#include "platform/assert.h"
#include "vm/assembler.h"
#include "vm/bigint_operations.h"
+#include "vm/class_finalizer.h"
#include "vm/isolate.h"
#include "vm/object.h"
#include "vm/object_store.h"
@@ -273,6 +274,48 @@
}
+TEST_CASE(StringCompareTo) {
+ const String& abcd = String::Handle(String::New("abcd"));
+ const String& abce = String::Handle(String::New("abce"));
+ EXPECT_EQ(0, abcd.CompareTo(abcd));
+ EXPECT_EQ(0, abce.CompareTo(abce));
+ EXPECT(abcd.CompareTo(abce) < 0);
+ EXPECT(abce.CompareTo(abcd) > 0);
+
+ const int kMonkeyLen = 4;
+ const uint8_t monkey_utf8[kMonkeyLen] = { 0xf0, 0x9f, 0x90, 0xb5 };
+ const String& monkey_face =
+ String::Handle(String::New(monkey_utf8, kMonkeyLen));
+ const int kDogLen = 4;
+ // 0x1f436 DOG FACE.
+ const uint8_t dog_utf8[kDogLen] = { 0xf0, 0x9f, 0x90, 0xb6 };
+ const String& dog_face = String::Handle(String::New(dog_utf8, kDogLen));
+ EXPECT_EQ(0, monkey_face.CompareTo(monkey_face));
+ EXPECT_EQ(0, dog_face.CompareTo(dog_face));
+ EXPECT(monkey_face.CompareTo(dog_face) < 0);
+ EXPECT(dog_face.CompareTo(monkey_face) > 0);
+
+ const int kDominoLen = 4;
+ // 0x1f036 DOMINO TILE HORIZONTAL-00-05.
+ const uint8_t domino_utf8[kDominoLen] = { 0xf0, 0x9f, 0x80, 0xb6 };
+ const String& domino = String::Handle(String::New(domino_utf8, kDominoLen));
+ EXPECT_EQ(0, domino.CompareTo(domino));
+ EXPECT(domino.CompareTo(dog_face) < 0);
+ EXPECT(domino.CompareTo(monkey_face) < 0);
+ EXPECT(dog_face.CompareTo(domino) > 0);
+ EXPECT(monkey_face.CompareTo(domino) > 0);
+
+ EXPECT(abcd.CompareTo(monkey_face) < 0);
+ EXPECT(abce.CompareTo(monkey_face) < 0);
+ EXPECT(abcd.CompareTo(domino) < 0);
+ EXPECT(abce.CompareTo(domino) < 0);
+ EXPECT(domino.CompareTo(abcd) > 0);
+ EXPECT(domino.CompareTo(abcd) > 0);
+ EXPECT(monkey_face.CompareTo(abce) > 0);
+ EXPECT(monkey_face.CompareTo(abce) > 0);
+}
+
+
TEST_CASE(Mint) {
// On 64-bit architectures a Smi is stored in a 64 bit word. A Midint cannot
// be allocated if it does fit into a Smi.
@@ -559,7 +602,7 @@
EXPECT_EQ(false, str1.StartsWith(str3));
}
- const uint32_t four_chars[] = { 'C', 0xFF, 'h', 0xFFFF, 'a', 0x10FFFF, 'r' };
+ const int32_t four_chars[] = { 'C', 0xFF, 'h', 0xFFFF, 'a', 0x10FFFF, 'r' };
const String& four_str = String::Handle(String::New(four_chars, 7));
EXPECT_EQ(four_str.Hash(), four_str.Hash());
EXPECT(four_str.IsTwoByteString());
@@ -587,7 +630,7 @@
// Create a 1-byte string from an array of 4-byte elements.
{
- const uint32_t char32[] = { 0x00, 0x1F, 0x7F };
+ const int32_t char32[] = { 0x00, 0x1F, 0x7F };
const String& str8 = String::Handle(String::New(char32, 3));
EXPECT(str8.IsOneByteString());
EXPECT(!str8.IsTwoByteString());
@@ -598,7 +641,7 @@
// Create a 2-byte string from an array of 4-byte elements.
{
- const uint32_t char32[] = { 0, 0x7FFF, 0xFFFF };
+ const int32_t char32[] = { 0, 0x7FFF, 0xFFFF };
const String& str16 = String::Handle(String::New(char32, 3));
EXPECT(!str16.IsOneByteString());
EXPECT(str16.IsTwoByteString());
@@ -943,7 +986,7 @@
EXPECT(str1.IsOneByteString());
EXPECT_EQ(0, str1.Length());
- uint32_t four[] = { 0x1D4D5, 0x1D4DE, 0x1D4E4, 0x1D4E1 };
+ int32_t four[] = { 0x1D4D5, 0x1D4DE, 0x1D4E4, 0x1D4E1 };
intptr_t four_len = sizeof(four) / sizeof(four[0]);
intptr_t expected_len = (four_len * 2);
const String& str2 = String::Handle(String::New(four, four_len));
@@ -988,8 +1031,8 @@
array3.SetAt(2, str2);
const String& str7 = String::Handle(String::ConcatAll(array3));
EXPECT(str7.IsTwoByteString());
- uint32_t fourfour[] = { 0x1D4D5, 0x1D4DE, 0x1D4E4, 0x1D4E1,
- 0x1D4D5, 0x1D4DE, 0x1D4E4, 0x1D4E1 };
+ int32_t fourfour[] = { 0x1D4D5, 0x1D4DE, 0x1D4E4, 0x1D4E1,
+ 0x1D4D5, 0x1D4DE, 0x1D4E4, 0x1D4E1 };
intptr_t fourfour_len = sizeof(fourfour) / sizeof(fourfour[0]);
EXPECT_EQ((fourfour_len * 2), str7.Length());
const String& fourfour_str =
@@ -999,13 +1042,13 @@
// Concatenate non-empty strings built from 4-byte elements.
{
- const uint32_t one[] = { 0x105D0, 0x105D9, 0x105D9, 0x105DF };
+ const int32_t one[] = { 0x105D0, 0x105D9, 0x105D9, 0x105DF };
intptr_t one_len = sizeof(one) / sizeof(one[0]);
const String& onestr = String::Handle(String::New(one, one_len));
EXPECT(onestr.IsTwoByteString());
EXPECT_EQ((one_len *2), onestr.Length());
- const uint32_t two[] = { 0x105E6, 0x105D5, 0x105D5, 0x105D9, 0x105D9 };
+ const int32_t two[] = { 0x105E6, 0x105D5, 0x105D5, 0x105D9, 0x105D9 };
intptr_t two_len = sizeof(two) / sizeof(two[0]);
const String& twostr = String::Handle(String::New(two, two_len));
EXPECT(twostr.IsTwoByteString());
@@ -1015,8 +1058,8 @@
const String& str1 = String::Handle(String::Concat(onestr, twostr));
EXPECT(str1.IsTwoByteString());
- const uint32_t one_two[] = { 0x105D0, 0x105D9, 0x105D9, 0x105DF,
- 0x105E6, 0x105D5, 0x105D5, 0x105D9, 0x105D9 };
+ const int32_t one_two[] = { 0x105D0, 0x105D9, 0x105D9, 0x105DF,
+ 0x105E6, 0x105D5, 0x105D5, 0x105D9, 0x105D9 };
intptr_t one_two_len = sizeof(one_two) / sizeof(one_two[0]);
EXPECT_EQ((one_two_len * 2), str1.Length());
const String& one_two_str =
@@ -1025,8 +1068,8 @@
const String& str2 = String::Handle(String::Concat(twostr, onestr));
EXPECT(str2.IsTwoByteString());
- const uint32_t two_one[] = { 0x105E6, 0x105D5, 0x105D5, 0x105D9, 0x105D9,
- 0x105D0, 0x105D9, 0x105D9, 0x105DF };
+ const int32_t two_one[] = { 0x105E6, 0x105D5, 0x105D5, 0x105D9, 0x105D9,
+ 0x105D0, 0x105D9, 0x105D9, 0x105DF };
intptr_t two_one_len = sizeof(two_one) / sizeof(two_one[0]);
EXPECT_EQ((two_one_len * 2), str2.Length());
const String& two_one_str =
@@ -1060,10 +1103,10 @@
array3.SetAt(2, onestr);
const String& str5 = String::Handle(String::ConcatAll(array3));
EXPECT(str5.IsTwoByteString());
- const uint32_t one_two_one[] = { 0x105D0, 0x105D9, 0x105D9, 0x105DF,
- 0x105E6, 0x105D5, 0x105D5, 0x105D9,
- 0x105D9,
- 0x105D0, 0x105D9, 0x105D9, 0x105DF };
+ const int32_t one_two_one[] = { 0x105D0, 0x105D9, 0x105D9, 0x105DF,
+ 0x105E6, 0x105D5, 0x105D5, 0x105D9,
+ 0x105D9,
+ 0x105D0, 0x105D9, 0x105D9, 0x105DF };
intptr_t one_two_one_len = sizeof(one_two_one) / sizeof(one_two_one[0]);
EXPECT_EQ((one_two_one_len * 2), str5.Length());
const String& one_two_one_str =
@@ -1077,11 +1120,11 @@
array4.SetAt(2, twostr);
const String& str6 = String::Handle(String::ConcatAll(array4));
EXPECT(str6.IsTwoByteString());
- const uint32_t two_one_two[] = { 0x105E6, 0x105D5, 0x105D5, 0x105D9,
- 0x105D9,
- 0x105D0, 0x105D9, 0x105D9, 0x105DF,
- 0x105E6, 0x105D5, 0x105D5, 0x105D9,
- 0x105D9 };
+ const int32_t two_one_two[] = { 0x105E6, 0x105D5, 0x105D5, 0x105D9,
+ 0x105D9,
+ 0x105D0, 0x105D9, 0x105D9, 0x105DF,
+ 0x105E6, 0x105D5, 0x105D5, 0x105D9,
+ 0x105D9 };
intptr_t two_one_two_len = sizeof(two_one_two) / sizeof(two_one_two[0]);
EXPECT_EQ((two_one_two_len * 2), str6.Length());
const String& two_one_two_str =
@@ -1312,7 +1355,8 @@
}
}
- // Create a SMP 2-byte string from a UTF-8 string literal.
+ // Create a 2-byte string with supplementary characters from a UTF-8
+ // string literal.
{
const char* src =
"\xF0\x9D\x91\xA0\xF0\x9D\x91\xA1"
@@ -1385,6 +1429,37 @@
}
+TEST_CASE(StringEqualsUtf8) {
+ const char* onesrc = "abc";
+ const String& onestr = String::Handle(String::New(onesrc));
+ EXPECT(onestr.IsOneByteString());
+ EXPECT(!onestr.Equals(""));
+ EXPECT(!onestr.Equals("a"));
+ EXPECT(!onestr.Equals("ab"));
+ EXPECT(onestr.Equals("abc"));
+ EXPECT(!onestr.Equals("abcd"));
+
+ const char* twosrc = "\xD7\x90\xD7\x91\xD7\x92";
+ const String& twostr = String::Handle(String::New(twosrc));
+ EXPECT(twostr.IsTwoByteString());
+ EXPECT(!twostr.Equals(""));
+ EXPECT(!twostr.Equals("\xD7\x90"));
+ EXPECT(!twostr.Equals("\xD7\x90\xD7\x91"));
+ EXPECT(twostr.Equals("\xD7\x90\xD7\x91\xD7\x92"));
+ EXPECT(!twostr.Equals("\xD7\x90\xD7\x91\xD7\x92\xD7\x93"));
+
+ const char* foursrc = "\xF0\x90\x8E\xA0\xF0\x90\x8E\xA1\xF0\x90\x8E\xA2";
+ const String& fourstr = String::Handle(String::New(foursrc));
+ EXPECT(fourstr.IsTwoByteString());
+ EXPECT(!fourstr.Equals(""));
+ EXPECT(!fourstr.Equals("\xF0\x90\x8E\xA0"));
+ EXPECT(!fourstr.Equals("\xF0\x90\x8E\xA0\xF0\x90\x8E\xA1"));
+ EXPECT(fourstr.Equals("\xF0\x90\x8E\xA0\xF0\x90\x8E\xA1\xF0\x90\x8E\xA2"));
+ EXPECT(!fourstr.Equals("\xF0\x90\x8E\xA0\xF0\x90\x8E\xA1"
+ "\xF0\x90\x8E\xA2\xF0\x90\x8E\xA3"));
+}
+
+
TEST_CASE(ExternalOneByteString) {
uint8_t characters[] = { 0xF6, 0xF1, 0xE9 };
intptr_t len = ARRAY_SIZE(characters);
@@ -1501,10 +1576,36 @@
EXPECT_EQ(one.raw(), ein_symbol.raw());
EXPECT(one.raw() != eins.raw());
- uint32_t char32[] = { 'E', 'l', 'f' };
- String& elf = String::Handle(Symbols::New(char32, 3));
- EXPECT(elf.IsSymbol());
- EXPECT_EQ(elf.raw(), Symbols::New("Elf"));
+ uint16_t char16[] = { 'E', 'l', 'f' };
+ String& elf1 = String::Handle(Symbols::New(char16, 3));
+ int32_t char32[] = { 'E', 'l', 'f' };
+ String& elf2 = String::Handle(Symbols::New(char32, 3));
+ EXPECT(elf1.IsSymbol());
+ EXPECT(elf2.IsSymbol());
+ EXPECT_EQ(elf1.raw(), Symbols::New("Elf"));
+ EXPECT_EQ(elf2.raw(), Symbols::New("Elf"));
+}
+
+
+TEST_CASE(SymbolUnicode) {
+ uint16_t monkey_utf16[] = { 0xd83d, 0xdc35 }; // Unicode Monkey Face.
+ String& monkey = String::Handle(Symbols::New(monkey_utf16, 2));
+ EXPECT(monkey.IsSymbol());
+ const char monkey_utf8[] = {0xf0, 0x9f, 0x90, 0xb5, 0};
+ EXPECT_EQ(monkey.raw(), Symbols::New(monkey_utf8));
+
+ int32_t kMonkeyFace = 0x1f435;
+ String& monkey2 = String::Handle(Symbols::FromCharCode(kMonkeyFace));
+ EXPECT_EQ(monkey.raw(), monkey2.raw());
+
+ // Unicode cat face with tears of joy.
+ int32_t kCatFaceWithTearsOfJoy = 0x1f639;
+ String& cat = String::Handle(Symbols::FromCharCode(kCatFaceWithTearsOfJoy));
+
+ uint16_t cat_utf16[] = { 0xd83d, 0xde39 };
+ String& cat2 = String::Handle(Symbols::New(cat_utf16, 2));
+ EXPECT(cat2.IsSymbol());
+ EXPECT_EQ(cat2.raw(), cat.raw());
}
@@ -1552,6 +1653,61 @@
}
+TEST_CASE(StringCodePointIterator) {
+ const String& str0 = String::Handle(String::New(""));
+ String::CodePointIterator it0(str0);
+ EXPECT(!it0.Next());
+
+ const String& str1 = String::Handle(String::New(" \xc3\xa7 "));
+ String::CodePointIterator it1(str1);
+ EXPECT(it1.Next());
+ EXPECT_EQ(' ', it1.Current());
+ EXPECT(it1.Next());
+ EXPECT_EQ(0xE7, it1.Current());
+ EXPECT(it1.Next());
+ EXPECT_EQ(' ', it1.Current());
+ EXPECT(!it1.Next());
+
+ const String& str2 = String::Handle(String::New("\xD7\x92\xD7\x9C"
+ "\xD7\xA2\xD7\x93"
+ "\xD7\x91\xD7\xA8"
+ "\xD7\x9B\xD7\x94"));
+ String::CodePointIterator it2(str2);
+ EXPECT(it2.Next());
+ EXPECT_EQ(0x5D2, it2.Current());
+ EXPECT(it2.Next());
+ EXPECT_EQ(0x5DC, it2.Current());
+ EXPECT(it2.Next());
+ EXPECT_EQ(0x5E2, it2.Current());
+ EXPECT(it2.Next());
+ EXPECT_EQ(0x5D3, it2.Current());
+ EXPECT(it2.Next());
+ EXPECT_EQ(0x5D1, it2.Current());
+ EXPECT(it2.Next());
+ EXPECT_EQ(0x5E8, it2.Current());
+ EXPECT(it2.Next());
+ EXPECT_EQ(0x5DB, it2.Current());
+ EXPECT(it2.Next());
+ EXPECT_EQ(0x5D4, it2.Current());
+ EXPECT(!it2.Next());
+
+ const String& str3 = String::Handle(String::New("\xF0\x9D\x91\xA0"
+ "\xF0\x9D\x91\xA1"
+ "\xF0\x9D\x91\xA2"
+ "\xF0\x9D\x91\xA3"));
+ String::CodePointIterator it3(str3);
+ EXPECT(it3.Next());
+ EXPECT_EQ(0x1D460, it3.Current());
+ EXPECT(it3.Next());
+ EXPECT_EQ(0x1D461, it3.Current());
+ EXPECT(it3.Next());
+ EXPECT_EQ(0x1D462, it3.Current());
+ EXPECT(it3.Next());
+ EXPECT_EQ(0x1D463, it3.Current());
+ EXPECT(!it3.Next());
+}
+
+
TEST_CASE(GrowableObjectArray) {
const int kArrayLen = 5;
Smi& value = Smi::Handle();
@@ -3035,6 +3191,64 @@
EXPECT(weak2.value() == Object::null());
}
+
+static RawFunction* GetFunction(const Class& cls, const char* name) {
+ const Function& result = Function::Handle(cls.LookupDynamicFunction(
+ String::Handle(String::New(name))));
+ ASSERT(!result.IsNull());
+ return result.raw();
+}
+
+
+TEST_CASE(FunctionSourceFingerprint) {
+ const char* kScriptChars =
+ "class A {\n"
+ " void test1(int a) {\n"
+ " return a > 1 ? a + 1 : a;\n"
+ " }\n"
+ " void test2(int a) {\n"
+ " return a > 1 ? a + 1 : a;\n"
+ " }\n"
+ " void test3(a) {\n"
+ " return a > 1 ? a + 1 : a;\n"
+ " }\n"
+ " void test4(b) {\n"
+ " return b > 1 ? b + 1 : b;\n"
+ " }\n"
+ " void test5(b) {\n"
+ " return b > 1 ? b - 1 : b;\n"
+ " }\n"
+ " void test6(b) {\n"
+ " return b > 1 ? b - 2 : b;\n"
+ " }\n"
+ " void test7(b) {\n"
+ " return b > 1 ?\n"
+ " b - 2 : b;\n"
+ " }\n"
+ "}";
+ TestCase::LoadTestScript(kScriptChars, NULL);
+ EXPECT(ClassFinalizer::FinalizePendingClasses());
+ const String& name = String::Handle(String::New(TestCase::url()));
+ const Library& lib = Library::Handle(Library::LookupLibrary(name));
+ EXPECT(!lib.IsNull());
+
+ const Class& class_a = Class::Handle(
+ lib.LookupClass(String::Handle(Symbols::New("A"))));
+ const Function& test1 = Function::Handle(GetFunction(class_a, "test1"));
+ const Function& test2 = Function::Handle(GetFunction(class_a, "test2"));
+ const Function& test3 = Function::Handle(GetFunction(class_a, "test3"));
+ const Function& test4 = Function::Handle(GetFunction(class_a, "test4"));
+ const Function& test5 = Function::Handle(GetFunction(class_a, "test5"));
+ const Function& test6 = Function::Handle(GetFunction(class_a, "test6"));
+ const Function& test7 = Function::Handle(GetFunction(class_a, "test7"));
+ EXPECT_EQ(test1.SourceFingerprint(), test2.SourceFingerprint());
+ EXPECT_NE(test1.SourceFingerprint(), test3.SourceFingerprint());
+ EXPECT_NE(test3.SourceFingerprint(), test4.SourceFingerprint());
+ EXPECT_NE(test4.SourceFingerprint(), test5.SourceFingerprint());
+ EXPECT_NE(test5.SourceFingerprint(), test6.SourceFingerprint());
+ EXPECT_EQ(test6.SourceFingerprint(), test7.SourceFingerprint());
+}
+
#endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64).
} // namespace dart
diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc
index 4c9027b..3273891 100644
--- a/runtime/vm/parser.cc
+++ b/runtime/vm/parser.cc
@@ -35,6 +35,8 @@
"Warning on legacy getter syntax");
DEFINE_FLAG(bool, strict_function_literals, false,
"enforce new function literal rules");
+DEFINE_FLAG(bool, fail_legacy_abstract, false,
+ "error on explicit use of abstract on class members");
static void CheckedModeHandler(bool value) {
FLAG_enable_asserts = value;
@@ -2543,7 +2545,8 @@
const intptr_t type_pos = TokenPos();
const AbstractType& type = AbstractType::Handle(
ParseType(ClassFinalizer::kTryResolve));
- if (type.IsTypeParameter() || type.IsDynamicType()) {
+ if (!type.IsMalformed() &&
+ (type.IsTypeParameter() || type.IsDynamicType())) {
// Replace the type with a malformed type and compile a throw when called.
redirection_type = ClassFinalizer::NewFinalizedMalformedType(
Error::Handle(), // No previous error.
@@ -2895,6 +2898,9 @@
current_member_ = &member;
if ((CurrentToken() == Token::kABSTRACT) &&
(LookaheadToken(1) != Token::kLPAREN)) {
+ if (FLAG_fail_legacy_abstract) {
+ ErrorMsg("illegal use of abstract");
+ }
ConsumeToken();
member.has_abstract = true;
}
@@ -3736,10 +3742,7 @@
// Map a malformed type argument to dynamic, so that malformed types with
// a resolved type class are handled properly in production mode.
if (type.IsMalformed()) {
- ASSERT(finalization != ClassFinalizer::kCanonicalizeWellFormed);
- if (finalization == ClassFinalizer::kCanonicalizeForCreation) {
- ErrorMsg(*malformed_error);
- }
+ ASSERT(finalization < ClassFinalizer::kCanonicalizeWellFormed);
type = Type::DynamicType();
}
types.Add(type);
@@ -5035,9 +5038,13 @@
// class in the current library (but not in its imports) and only create a new
// canonical signature class if it does not exist yet.
const String& signature = String::Handle(function.Signature());
- Class& signature_class = Class::ZoneHandle(
- library_.LookupLocalClass(signature));
-
+ Class& signature_class = Class::ZoneHandle();
+ if (!is_new_closure) {
+ signature_class = function.signature_class();
+ }
+ if (signature_class.IsNull()) {
+ signature_class = library_.LookupLocalClass(signature);
+ }
if (signature_class.IsNull()) {
// If we don't have a signature class yet, this must be a closure we
// have not parsed before.
@@ -6179,6 +6186,8 @@
catch_seen = true;
if (IsLiteral("on")) {
ConsumeToken();
+ // TODO(regis): The spec may change in the way a malformed 'on' type is
+ // treated. For now, we require the type to be wellformed.
exception_param.type = &AbstractType::ZoneHandle(
ParseType(ClassFinalizer::kCanonicalizeWellFormed));
} else {
@@ -6736,9 +6745,7 @@
bool Parser::IsLiteral(const char* literal) {
- const uint8_t* characters = reinterpret_cast<const uint8_t*>(literal);
- intptr_t len = strlen(literal);
- return IsIdentifier() && CurrentLiteral()->Equals(characters, len);
+ return IsIdentifier() && CurrentLiteral()->Equals(literal);
}
@@ -6837,8 +6844,8 @@
op_kind = Token::kISNOT;
}
const intptr_t type_pos = TokenPos();
- const AbstractType& type =
- AbstractType::ZoneHandle(ParseType(ClassFinalizer::kCanonicalize));
+ const AbstractType& type = AbstractType::ZoneHandle(
+ ParseType(ClassFinalizer::kCanonicalizeExpression));
if (!type.IsInstantiated() &&
(current_block_->scope->function_level() > 0)) {
// Make sure that the instantiator is captured.
@@ -7804,10 +7811,14 @@
}
// Resolve classname in the scope of the current library.
Error& error = Error::Handle();
- resolved_type_class =
- ResolveClassInCurrentLibraryScope(unresolved_class.token_pos(),
- unresolved_class_name,
- &error);
+ // If we finalize a type expression, as opposed to a type annotation, we
+ // tell the resolver (by passing NULL) to immediately report an ambiguous
+ // type as a compile time error.
+ resolved_type_class = ResolveClassInCurrentLibraryScope(
+ unresolved_class.token_pos(),
+ unresolved_class_name,
+ finalization >= ClassFinalizer::kCanonicalizeExpression ?
+ NULL : &error);
if (!error.IsNull()) {
*type = ClassFinalizer::NewFinalizedMalformedType(
error,
@@ -7823,11 +7834,15 @@
LibraryPrefix::Handle(unresolved_class.library_prefix());
// Resolve class name in the scope of the library prefix.
Error& error = Error::Handle();
- resolved_type_class =
- ResolveClassInPrefixScope(unresolved_class.token_pos(),
- lib_prefix,
- unresolved_class_name,
- &error);
+ // If we finalize a type expression, as opposed to a type annotation, we
+ // tell the resolver (by passing NULL) to immediately report an ambiguous
+ // type as a compile time error.
+ resolved_type_class = ResolveClassInPrefixScope(
+ unresolved_class.token_pos(),
+ lib_prefix,
+ unresolved_class_name,
+ finalization >= ClassFinalizer::kCanonicalizeExpression ?
+ NULL : &error);
if (!error.IsNull()) {
*type = ClassFinalizer::NewFinalizedMalformedType(
error,
@@ -8695,7 +8710,7 @@
}
ASSERT(type_arguments.IsNull() || (type_arguments.Length() == 1));
const Class& array_class = Class::Handle(
- Type::Handle(Type::ArrayType()).type_class());
+ Isolate::Current()->object_store()->array_class());
Type& type = Type::ZoneHandle(
Type::New(array_class, type_arguments, type_pos));
type ^= ClassFinalizer::FinalizeType(
@@ -8763,9 +8778,7 @@
return new LiteralNode(literal_pos, const_list);
} else {
// Factory call at runtime.
- // TODO(regis): Once _ListImpl is removed, use Symbols::List() instead of
- // Symbols::ListImplementation() on the following line.
- String& factory_class_name = String::Handle(Symbols::ListImplementation());
+ String& factory_class_name = String::Handle(Symbols::List());
const Class& factory_class =
Class::Handle(LookupCoreClass(factory_class_name));
ASSERT(!factory_class.IsNull());
@@ -9100,11 +9113,10 @@
}
intptr_t type_pos = TokenPos();
AbstractType& type = AbstractType::Handle(
- ParseType(ClassFinalizer::kCanonicalizeForCreation));
+ ParseType(ClassFinalizer::kCanonicalizeExpression));
// In case the type is malformed, throw a dynamic type error after finishing
// parsing the instance creation expression.
- if (type.IsTypeParameter() || type.IsDynamicType()) {
- ASSERT(!type.IsMalformed());
+ if (!type.IsMalformed() && (type.IsTypeParameter() || type.IsDynamicType())) {
// Replace the type with a malformed type.
type = ClassFinalizer::NewFinalizedMalformedType(
Error::Handle(), // No previous error.
diff --git a/runtime/vm/random.cc b/runtime/vm/random.cc
deleted file mode 100644
index ef2455c..0000000
--- a/runtime/vm/random.cc
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2012, 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.
-
-#include "vm/random.h"
-
-#include "platform/assert.h"
-#include "vm/isolate.h"
-
-namespace dart {
-
-// LSFR step with a period of 31-bits.
-// Based on http://en.wikipedia.org/wiki/Linear_feedback_shift_register
-static int32_t LinearFeedbackShiftRegisterStep(int32_t seed) {
- return (seed >> 1) ^ ((-(seed & 1)) & (1 << 30 | 1 << 27));
-}
-
-
-int32_t Random::RandomInt32() {
- Isolate* isolate = Isolate::Current();
- ASSERT(isolate != NULL);
- int32_t result = isolate->random_seed();
- int32_t new_random_seed = LinearFeedbackShiftRegisterStep(result);
- isolate->set_random_seed(new_random_seed);
- return result;
-}
-
-} // namespace dart
diff --git a/runtime/vm/random.h b/runtime/vm/random.h
deleted file mode 100644
index ca1d039..0000000
--- a/runtime/vm/random.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2011, 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.
-
-#ifndef VM_RANDOM_H_
-#define VM_RANDOM_H_
-
-#include "vm/allocation.h"
-
-namespace dart {
-
-class Random : public AllStatic {
- public:
- static const int32_t kDefaultRandomSeed = 294967;
-
- // Generate a random number in the range [1, 2^31[ (will never return 0 or a
- // negative number). Not cryptographically safe.
- static int32_t RandomInt32();
-};
-
-} // namespace dart
-
-#endif // VM_RANDOM_H_
diff --git a/runtime/vm/random_test.cc b/runtime/vm/random_test.cc
deleted file mode 100644
index 2b7f726..0000000
--- a/runtime/vm/random_test.cc
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2012, 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.
-
-#include "platform/assert.h"
-#include "vm/globals.h"
-#include "vm/random.h"
-#include "vm/unit_test.h"
-
-namespace dart {
-
-TEST_CASE(Random) {
- EXPECT(Random::RandomInt32() != 0);
-}
-
-} // namespace dart
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index a29c3ae..a99dde7 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -350,10 +350,9 @@
static bool IsByteArrayClassId(intptr_t index);
static bool IsExternalByteArrayClassId(intptr_t index);
- protected:
+ private:
uword tags_; // Various object tags (bits).
- private:
class FreeBit : public BitField<bool, kFreeBit, 1> {};
class MarkBit : public BitField<bool, kMarkBit, 1> {};
@@ -745,9 +744,9 @@
RawPcDescriptors* pc_descriptors_;
RawArray* deopt_info_array_;
RawArray* object_table_;
+ RawArray* static_calls_target_table_; // (code-offset, function, code).
RawArray* stackmaps_;
RawLocalVarDescriptors* var_descriptors_;
- RawGrowableObjectArray* resolved_static_calls_;
RawArray* comments_;
RawObject** to() {
return reinterpret_cast<RawObject**>(&ptr()->comments_);
@@ -1364,6 +1363,10 @@
return peer_;
}
+ static intptr_t data_offset() {
+ return OFFSET_OF(ExternalByteArrayData<T>, data_);
+ }
+
private:
T* data_;
void* peer_;
diff --git a/runtime/vm/scanner.cc b/runtime/vm/scanner.cc
index 229dfdf..26920c6 100644
--- a/runtime/vm/scanner.cc
+++ b/runtime/vm/scanner.cc
@@ -11,6 +11,7 @@
#include "vm/symbols.h"
#include "vm/thread.h"
#include "vm/token.h"
+#include "vm/unicode.h"
namespace dart {
@@ -174,6 +175,36 @@
}
+// This method is used when parsing integers and doubles in Dart code. We
+// are reusing the Scanner's handling of number literals in that situation.
+bool Scanner::IsValidLiteral(const Scanner::GrowableTokenStream& tokens,
+ Token::Kind literal_kind,
+ bool* is_positive,
+ String** value) {
+ if ((tokens.length() == 2) &&
+ (tokens[0].kind == literal_kind) &&
+ (tokens[1].kind == Token::kEOS)) {
+ *is_positive = true;
+ *value = tokens[0].literal;
+ return true;
+ }
+ if ((tokens.length() == 3) &&
+ ((tokens[0].kind == Token::kTIGHTADD) ||
+ (tokens[0].kind == Token::kSUB)) &&
+ (tokens[1].kind == literal_kind) &&
+ (tokens[2].kind == Token::kEOS)) {
+ // Check there is no space between "+/-" and number.
+ if ((tokens[0].offset + 1) != tokens[1].offset) {
+ return false;
+ }
+ *is_positive = tokens[0].kind == Token::kTIGHTADD;
+ *value = tokens[1].literal;
+ return true;
+ }
+ return false;
+}
+
+
void Scanner::ReadChar() {
if (lookahead_pos_ < source_length_) {
if (c0_ == '\n') {
@@ -438,7 +469,7 @@
}
-bool Scanner::ScanHexDigits(int digits, uint32_t* value) {
+bool Scanner::ScanHexDigits(int digits, int32_t* value) {
*value = 0;
for (int i = 0; i < digits; ++i) {
ReadChar();
@@ -453,7 +484,7 @@
}
-bool Scanner::ScanHexDigits(int min_digits, int max_digits, uint32_t* value) {
+bool Scanner::ScanHexDigits(int min_digits, int max_digits, int32_t* value) {
*value = 0;
ReadChar();
for (int i = 0; i < max_digits; ++i) {
@@ -472,7 +503,7 @@
}
-void Scanner::ScanEscapedCodePoint(uint32_t* code_point) {
+void Scanner::ScanEscapedCodePoint(int32_t* code_point) {
ASSERT(c0_ == 'u' || c0_ == 'x');
bool is_valid;
if (c0_ == 'x') {
@@ -498,7 +529,7 @@
void Scanner::ScanLiteralStringChars(bool is_raw) {
- GrowableArray<uint32_t> string_chars(64);
+ GrowableArray<int32_t> string_chars(64);
ASSERT(IsScanningString());
// We are at the first character of a string literal piece. A string literal
@@ -511,7 +542,7 @@
}
if (c0_ == '\\' && !is_raw) {
// Parse escape sequence.
- uint32_t escape_char = '\0';
+ int32_t escape_char = '\0';
ReadChar();
switch (c0_) {
case 'n':
@@ -852,8 +883,11 @@
ScanNumber(false);
} else {
char msg[128];
+ char utf8_char[5];
+ int len = Utf8::Encode(c0_, utf8_char);
+ utf8_char[len] = '\0';
OS::SNPrint(msg, sizeof(msg),
- "unexpected character: %c (%02x)\n", c0_, c0_);
+ "unexpected character: '%s' (U+%04X)\n", utf8_char, c0_);
ErrorMsg(msg);
ReadChar();
}
diff --git a/runtime/vm/scanner.h b/runtime/vm/scanner.h
index 5700475..5f1f75e 100644
--- a/runtime/vm/scanner.h
+++ b/runtime/vm/scanner.h
@@ -96,6 +96,13 @@
// Return true if str is an identifier.
static bool IsIdent(const String& str);
+ // Does the token stream contain a valid literal. This is used to implement
+ // the Dart methods int.parse and double.parse.
+ static bool IsValidLiteral(const Scanner::GrowableTokenStream& tokens,
+ Token::Kind literal_kind,
+ bool* is_positive,
+ String** value);
+
private:
struct ScanContext {
ScanContext* next;
@@ -171,13 +178,13 @@
void ScanLiteralStringChars(bool is_raw);
// Reads a fixed number of hexadecimal digits.
- bool ScanHexDigits(int digits, uint32_t* value);
+ bool ScanHexDigits(int digits, int32_t* value);
// Reads a variable number of hexadecimal digits.
- bool ScanHexDigits(int min_digits, int max_digits, uint32_t* value);
+ bool ScanHexDigits(int min_digits, int max_digits, int32_t* value);
// Reads an escaped code point from within a string literal.
- void ScanEscapedCodePoint(uint32_t* escaped_char);
+ void ScanEscapedCodePoint(int32_t* escaped_char);
// Reads identifier.
RawString* ConsumeIdentChars(bool allow_dollar);
diff --git a/runtime/vm/snapshot.cc b/runtime/vm/snapshot.cc
index c11e321..044d34b 100644
--- a/runtime/vm/snapshot.cc
+++ b/runtime/vm/snapshot.cc
@@ -818,7 +818,7 @@
if (class_id >= kNumPredefinedCids) {
if (Class::IsSignatureClass(cls)) {
// We do not allow closure objects in an isolate message.
- set_exception_type(Exceptions::kArgumentError);
+ set_exception_type(Exceptions::kArgument);
// TODO(6726): Allocate these constant strings once in the VM isolate.
set_exception_msg("Illegal argument in isolate message"
" : (object is a closure)");
@@ -1073,7 +1073,7 @@
if (class_id >= kNumPredefinedCids) {
if (Class::IsSignatureClass(cls)) {
// We do not allow closure objects in an isolate message.
- set_exception_type(Exceptions::kArgumentError);
+ set_exception_type(Exceptions::kArgument);
// TODO(6726): Allocate these constant strings once in the VM isolate.
set_exception_msg("Illegal argument in isolate message"
" : (object is a closure)");
@@ -1081,7 +1081,7 @@
}
if (cls->ptr()->num_native_fields_ != 0) {
// We do not allow objects with native fields in an isolate message.
- set_exception_type(Exceptions::kArgumentError);
+ set_exception_type(Exceptions::kArgument);
// TODO(6726): Allocate these constant strings once in the VM isolate.
set_exception_msg("Illegal argument in isolate message"
" : (object extends NativeWrapper)");
diff --git a/runtime/vm/snapshot_test.cc b/runtime/vm/snapshot_test.cc
index 083b28f..07326ae 100644
--- a/runtime/vm/snapshot_test.cc
+++ b/runtime/vm/snapshot_test.cc
@@ -528,13 +528,13 @@
TEST_CASE(SerializeString) {
TestString("This string shall be serialized");
TestString("æøå"); // This file is UTF-8 encoded.
- char data[] = {0x01,
- 0x7f,
- 0xc2, 0x80, // 0x80
- 0xdf, 0xbf, // 0x7ff
- 0xe0, 0xa0, 0x80, // 0x800
- 0xef, 0xbf, 0xbf, // 0xffff
- 0x00}; // String termination.
+ const char* data = "\x01"
+ "\x7F"
+ "\xC2\x80" // U+0080
+ "\xDF\xBF" // U+07FF
+ "\xE0\xA0\x80" // U+0800
+ "\xEF\xBF\xBF"; // U+FFFF
+
TestString(data);
// TODO(sgjesse): Add tests with non-BMP characters.
}
@@ -1030,7 +1030,7 @@
UNIT_TEST_CASE(ScriptSnapshot) {
const char* kLibScriptChars =
- "#library('dart:import-lib');"
+ "library dart_import_lib;"
"class LibFields {"
" LibFields(int i, int j) : fld1 = i, fld2 = j {}"
" int fld1;"
@@ -1095,7 +1095,7 @@
Dart_EnterScope(); // Start a Dart API scope for invoking API functions.
// Load the library.
- Dart_Handle import_lib = Dart_LoadLibrary(NewString("dart:import-lib"),
+ Dart_Handle import_lib = Dart_LoadLibrary(NewString("dart_import_lib"),
NewString(kLibScriptChars));
EXPECT_VALID(import_lib);
@@ -1701,7 +1701,7 @@
UNIT_TEST_CASE(DartGeneratedListMessagesWithBackref) {
const int kArrayLength = 10;
static const char* kScriptChars =
- "#import('dart:scalarlist');\n"
+ "import 'dart:scalarlist';\n"
"final int kArrayLength = 10;\n"
"getStringList() {\n"
" var s = 'Hello, world!';\n"
@@ -1872,7 +1872,7 @@
UNIT_TEST_CASE(DartGeneratedArrayLiteralMessagesWithBackref) {
const int kArrayLength = 10;
static const char* kScriptChars =
- "#import('dart:scalarlist');\n"
+ "import 'dart:scalarlist';\n"
"final int kArrayLength = 10;\n"
"getStringList() {\n"
" var s = 'Hello, world!';\n"
@@ -1911,7 +1911,7 @@
"getMixedList() {\n"
" var list = [];\n"
" for (var i = 0; i < kArrayLength; i++) {\n"
- " list.add(((i % 2) == 0) ? 'A' : 2.72);\n"
+ " list.add(((i % 2) == 0) ? '.' : 2.72);\n"
" }\n"
" return list;\n"
"}\n"
@@ -2017,7 +2017,7 @@
if ((i % 2) == 0) {
EXPECT_EQ(root->value.as_array.values[0], element);
EXPECT_EQ(Dart_CObject::kString, element->type);
- EXPECT_STREQ("A", element->value.as_string);
+ EXPECT_STREQ(".", element->value.as_string);
} else {
EXPECT_EQ(root->value.as_array.values[1], element);
EXPECT_EQ(Dart_CObject::kDouble, element->type);
@@ -2048,7 +2048,7 @@
// Create a native port for posting from C to Dart
TestIsolateScope __test_isolate__;
const char* kScriptChars =
- "#import('dart:isolate');\n"
+ "import 'dart:isolate';\n"
"main() {\n"
" var messageCount = 0;\n"
" var exception = '';\n"
@@ -2107,7 +2107,7 @@
EXPECT(Dart_PostCObject(send_port_id, &object));
// Try to post an invalid UTF-8 sequence (lead surrogate).
- char data[] = {0xed, 0xa0, 0x80, 0}; // 0xd800
+ const char* data = "\xED\xA0\x80"; // U+D800
object.type = Dart_CObject::kString;
object.value.as_string = const_cast<char*>(data);
EXPECT(!Dart_PostCObject(send_port_id, &object));
diff --git a/runtime/vm/stub_code_ia32.cc b/runtime/vm/stub_code_ia32.cc
index 79badc1..f354cab 100644
--- a/runtime/vm/stub_code_ia32.cc
+++ b/runtime/vm/stub_code_ia32.cc
@@ -183,48 +183,19 @@
// Input parameters:
-// ECX: function object.
// EDX: arguments descriptor array (num_args is first Smi element).
void StubCode::GenerateCallStaticFunctionStub(Assembler* assembler) {
const Immediate raw_null =
Immediate(reinterpret_cast<intptr_t>(Object::null()));
-
- __ movl(EAX, FieldAddress(ECX, Function::code_offset()));
- __ cmpl(EAX, raw_null);
- Label function_compiled;
- __ j(NOT_EQUAL, &function_compiled, Assembler::kNearJump);
-
- // Create a stub frame as we are pushing some objects on the stack before
- // calling into the runtime.
AssemblerMacros::EnterStubFrame(assembler);
-
__ pushl(EDX); // Preserve arguments descriptor array.
- __ pushl(ECX);
- __ CallRuntime(kCompileFunctionRuntimeEntry);
- __ popl(ECX); // Restore read-only function object argument in ECX.
- __ popl(EDX); // Restore arguments descriptor array.
- // Restore EAX.
- __ movl(EAX, FieldAddress(ECX, Function::code_offset()));
-
- // Remove the stub frame as we are about to jump to the dart function.
- __ LeaveFrame();
-
- __ Bind(&function_compiled);
- // Patch caller.
-
- // Create a stub frame as we are pushing some objects on the stack before
- // calling into the runtime.
- AssemblerMacros::EnterStubFrame(assembler);
-
- __ pushl(EDX); // Preserve arguments descriptor array.
- __ pushl(ECX); // Preserve function object.
+ __ pushl(raw_null); // Setup space on stack for return value.
__ CallRuntime(kPatchStaticCallRuntimeEntry);
- __ popl(ECX); // Restore function object argument in ECX.
+ __ popl(EAX); // Get Code object result.
__ popl(EDX); // Restore arguments descriptor array.
// Remove the stub frame as we are about to jump to the dart function.
__ LeaveFrame();
- __ movl(EAX, FieldAddress(ECX, Function::code_offset()));
__ movl(ECX, FieldAddress(EAX, Code::instructions_offset()));
__ addl(ECX, Immediate(Instructions::HeaderSize() - kHeapObjectTag));
__ jmp(ECX);
@@ -233,20 +204,18 @@
// Called from a static call only when an invalid code has been entered
// (invalid because its function was optimized or deoptimized).
-// ECX: function object.
// EDX: arguments descriptor array (num_args is first Smi element).
void StubCode::GenerateFixCallersTargetStub(Assembler* assembler) {
+ const Immediate raw_null =
+ Immediate(reinterpret_cast<intptr_t>(Object::null()));
// Create a stub frame as we are pushing some objects on the stack before
// calling into the runtime.
AssemblerMacros::EnterStubFrame(assembler);
__ pushl(EDX); // Preserve arguments descriptor array.
- __ pushl(ECX); // Preserve target function.
- __ pushl(ECX); // Target function.
+ __ pushl(raw_null); // Setup space on stack for return value.
__ CallRuntime(kFixCallersTargetRuntimeEntry);
- __ popl(EAX); // discard argument.
- __ popl(EAX); // Restore function.
+ __ popl(EAX); // Get Code object.
__ popl(EDX); // Restore arguments descriptor array.
- __ movl(EAX, FieldAddress(EAX, Function::code_offset()));
__ movl(EAX, FieldAddress(EAX, Code::instructions_offset()));
__ addl(EAX, Immediate(Instructions::HeaderSize() - kHeapObjectTag));
__ LeaveFrame();
@@ -1816,23 +1785,23 @@
}
-// ECX: Function object.
// EDX: Arguments array.
// TOS(0): return address (Dart code).
void StubCode::GenerateBreakpointStaticStub(Assembler* assembler) {
// Create a stub frame as we are pushing some objects on the stack before
// calling into the runtime.
AssemblerMacros::EnterStubFrame(assembler);
- __ pushl(EDX);
- __ pushl(ECX);
+ __ pushl(EDX); // Preserve arguments descriptor.
+ const Immediate raw_null =
+ Immediate(reinterpret_cast<intptr_t>(Object::null()));
+ __ pushl(raw_null); // Room for result.
__ CallRuntime(kBreakpointStaticHandlerRuntimeEntry);
- __ popl(ECX);
- __ popl(EDX);
+ __ popl(EAX); // Code object.
+ __ popl(EDX); // Restore arguments descriptor.
__ LeaveFrame();
// Now call the static function. The breakpoint handler function
// ensures that the call target is compiled.
- __ movl(EAX, FieldAddress(ECX, Function::code_offset()));
__ movl(ECX, FieldAddress(EAX, Code::instructions_offset()));
__ addl(ECX, Immediate(Instructions::HeaderSize() - kHeapObjectTag));
__ jmp(ECX);
diff --git a/runtime/vm/stub_code_x64.cc b/runtime/vm/stub_code_x64.cc
index 5048aa5..65ea307 100644
--- a/runtime/vm/stub_code_x64.cc
+++ b/runtime/vm/stub_code_x64.cc
@@ -182,44 +182,18 @@
// Input parameters:
-// RBX: function object.
// R10: arguments descriptor array (num_args is first Smi element).
void StubCode::GenerateCallStaticFunctionStub(Assembler* assembler) {
const Immediate raw_null =
Immediate(reinterpret_cast<intptr_t>(Object::null()));
-
- __ movq(RAX, FieldAddress(RBX, Function::code_offset()));
- __ cmpq(RAX, raw_null);
- Label function_compiled;
- __ j(NOT_EQUAL, &function_compiled, Assembler::kNearJump);
-
- // Create a stub frame as we are pushing some objects on the stack before
- // calling into the runtime.
AssemblerMacros::EnterStubFrame(assembler);
-
__ pushq(R10); // Preserve arguments descriptor array.
- __ pushq(RBX);
- __ CallRuntime(kCompileFunctionRuntimeEntry);
- __ popq(RBX); // Restore read-only function object argument in RBX.
- __ popq(R10); // Restore arguments descriptor array.
- // Restore RAX.
- __ movq(RAX, FieldAddress(RBX, Function::code_offset()));
-
- // Remove the stub frame as we are about to jump to the dart function.
- __ LeaveFrame();
-
- __ Bind(&function_compiled);
- // Patch caller.
- AssemblerMacros::EnterStubFrame(assembler);
-
- __ pushq(R10); // Preserve arguments descriptor array.
- __ pushq(RBX); // Preserve function object.
+ __ pushq(raw_null); // Setup space on stack for return value.
__ CallRuntime(kPatchStaticCallRuntimeEntry);
- __ popq(RBX); // Restore function object argument in RBX.
+ __ popq(RAX); // Get Code object result.
__ popq(R10); // Restore arguments descriptor array.
// Remove the stub frame as we are about to jump to the dart function.
__ LeaveFrame();
- __ movq(RAX, FieldAddress(RBX, Function::code_offset()));
__ movq(RBX, FieldAddress(RAX, Code::instructions_offset()));
__ addq(RBX, Immediate(Instructions::HeaderSize() - kHeapObjectTag));
@@ -229,18 +203,16 @@
// Called from a static call only when an invalid code has been entered
// (invalid because its function was optimized or deoptimized).
-// RBX: function object.
// R10: arguments descriptor array (num_args is first Smi element).
void StubCode::GenerateFixCallersTargetStub(Assembler* assembler) {
+ const Immediate raw_null =
+ Immediate(reinterpret_cast<intptr_t>(Object::null()));
AssemblerMacros::EnterStubFrame(assembler);
__ pushq(R10); // Preserve arguments descriptor array.
- __ pushq(RBX); // Preserve target function.
- __ pushq(RBX); // Target function.
+ __ pushq(raw_null); // Setup space on stack for return value.
__ CallRuntime(kFixCallersTargetRuntimeEntry);
- __ popq(RAX); // discard argument.
- __ popq(RAX); // Restore function.
+ __ popq(RAX); // Get Code object.
__ popq(R10); // Restore arguments descriptor array.
- __ movq(RAX, FieldAddress(RAX, Function::code_offset()));
__ movq(RAX, FieldAddress(RAX, Code::instructions_offset()));
__ addq(RAX, Immediate(Instructions::HeaderSize() - kHeapObjectTag));
__ LeaveFrame();
@@ -1787,21 +1759,21 @@
GenerateNArgsCheckInlineCacheStub(assembler, 1);
}
-// RBX: Function object.
// R10: Arguments array.
// TOS(0): return address (Dart code).
void StubCode::GenerateBreakpointStaticStub(Assembler* assembler) {
+ const Immediate raw_null =
+ Immediate(reinterpret_cast<intptr_t>(Object::null()));
AssemblerMacros::EnterStubFrame(assembler);
- __ pushq(R10);
- __ pushq(RBX);
+ __ pushq(R10); // Preserve arguments descriptor.
+ __ pushq(raw_null); // Room for result.
__ CallRuntime(kBreakpointStaticHandlerRuntimeEntry);
- __ popq(RBX);
- __ popq(R10);
+ __ popq(RAX); // Code object.
+ __ popq(R10); // Restore arguments descriptor.
__ LeaveFrame();
// Now call the static function. The breakpoint handler function
// ensures that the call target is compiled.
- __ movq(RAX, FieldAddress(RBX, Function::code_offset()));
__ movq(RBX, FieldAddress(RAX, Code::instructions_offset()));
__ addq(RBX, Immediate(Instructions::HeaderSize() - kHeapObjectTag));
__ jmp(RBX);
diff --git a/runtime/vm/symbols.cc b/runtime/vm/symbols.cc
index 33c0ac6..c7da37c 100644
--- a/runtime/vm/symbols.cc
+++ b/runtime/vm/symbols.cc
@@ -26,8 +26,8 @@
};
-const char* Symbols::Name(intptr_t symbol) {
- ASSERT((symbol > kIllegal) && (symbol < kMaxId));
+const char* Symbols::Name(SymbolId symbol) {
+ ASSERT((symbol > kIllegal) && (symbol < kMaxPredefinedId));
return names[symbol];
}
@@ -40,12 +40,12 @@
SetupSymbolTable(isolate);
// Create all predefined symbols.
- ASSERT((sizeof(names) / sizeof(const char*)) == Symbols::kMaxId);
+ ASSERT((sizeof(names) / sizeof(const char*)) == Symbols::kMaxPredefinedId);
ObjectStore* object_store = isolate->object_store();
Array& symbol_table = Array::Handle();
dart::String& str = String::Handle();
- for (intptr_t i = 1; i < Symbols::kMaxId; i++) {
+ for (intptr_t i = 1; i < Symbols::kMaxPredefinedId; i++) {
// The symbol_table needs to be reloaded as it might have grown in the
// previous iteration.
symbol_table = object_store->symbol_table();
@@ -54,6 +54,11 @@
predefined_[i] = str.raw();
}
Object::RegisterSingletonClassNames();
+
+ for (int32_t c = 0; c <= kMaxOneCharCodeSymbol; c++) {
+ ASSERT(kMaxPredefinedId + c < kMaxId);
+ predefined_[kMaxPredefinedId + c] = New(&c, 1);
+ }
}
@@ -107,7 +112,7 @@
Utf8::DecodeToLatin1(utf8_array, str_len, characters, len);
return New(characters, len);
}
- ASSERT((type == Utf8::kBMP) || (type == Utf8::kSMP));
+ ASSERT((type == Utf8::kBMP) || (type == Utf8::kSupplementary));
uint16_t* characters = zone->Alloc<uint16_t>(len);
Utf8::DecodeToUTF16(utf8_array, str_len, characters, len);
return New(characters, len);
@@ -117,7 +122,6 @@
template<typename T>
RawString* Symbols::New(const T* characters, intptr_t len) {
Isolate* isolate = Isolate::Current();
- ASSERT(isolate != Dart::vm_isolate());
String& symbol = String::Handle(isolate, String::null());
Array& symbol_table = Array::Handle(isolate, Array::null());
@@ -148,7 +152,7 @@
template RawString* Symbols::New(const uint8_t* characters, intptr_t len);
template RawString* Symbols::New(const uint16_t* characters, intptr_t len);
-template RawString* Symbols::New(const uint32_t* characters, intptr_t len);
+template RawString* Symbols::New(const int32_t* characters, intptr_t len);
RawString* Symbols::New(const String& str) {
@@ -200,6 +204,14 @@
}
+RawString* Symbols::FromCharCode(int32_t char_code) {
+ if (char_code > kMaxOneCharCodeSymbol) {
+ return New(&char_code, 1);
+ }
+ return predefined_[kNullCharId + char_code];
+}
+
+
void Symbols::GrowSymbolTable(const Array& symbol_table) {
// TODO(iposva): Avoid exponential growth.
intptr_t table_size = symbol_table.Length() - 1;
@@ -277,7 +289,7 @@
intptr_t len,
intptr_t hash);
template intptr_t Symbols::FindIndex(const Array& symbol_table,
- const uint32_t* characters,
+ const int32_t* characters,
intptr_t len,
intptr_t hash);
diff --git a/runtime/vm/symbols.h b/runtime/vm/symbols.h
index 16c1fd4..0e6cc21 100644
--- a/runtime/vm/symbols.h
+++ b/runtime/vm/symbols.h
@@ -42,8 +42,8 @@
"AbstractClassInstantiationErrorImplementation") \
V(NoSuchMethodError, "NoSuchMethodErrorImplementation") \
V(ThrowNew, "_throwNew") \
+ V(List, "List") \
V(ListLiteralFactory, "List._fromLiteral") \
- V(ListImplementation, "_ListImpl") \
V(ListFactory, "List.") \
V(MapImplementation, "_HashMapImpl") \
V(MapLiteralFactory, "Map._fromLiteral") \
@@ -146,16 +146,19 @@
// without having to maintain copies in each isolate.
class Symbols : public AllStatic {
public:
+ enum { kMaxOneCharCodeSymbol = 0xFF };
+
// List of strings that are pre created in the vm isolate.
- enum {
+ enum SymbolId {
kIllegal = 0,
#define DEFINE_SYMBOL_INDEX(symbol, literal) \
k##symbol,
PREDEFINED_SYMBOLS_LIST(DEFINE_SYMBOL_INDEX)
#undef DEFINE_SYMBOL_INDEX
-
- kMaxId,
+ kMaxPredefinedId,
+ kNullCharId = kMaxPredefinedId,
+ kMaxId = kNullCharId + kMaxOneCharCodeSymbol + 1,
};
// Access methods for symbols stored in the vm isolate.
@@ -183,11 +186,17 @@
intptr_t length);
// Returns char* of predefined symbol.
- static const char* Name(intptr_t symbol);
+ static const char* Name(SymbolId symbol);
+
+ static RawString* FromCharCode(int32_t char_code);
+
+ static RawString** PredefinedAddress() {
+ return reinterpret_cast<RawString**>(&predefined_);
+ }
private:
enum {
- kInitialVMIsolateSymtabSize = ((Symbols::kMaxId + 15) & -16),
+ kInitialVMIsolateSymtabSize = ((kMaxId + 15) & -16),
kInitialSymtabSize = 256
};
@@ -218,11 +227,11 @@
static RawObject* GetVMSymbol(intptr_t object_id);
static bool IsVMSymbolId(intptr_t object_id) {
return (object_id >= kMaxPredefinedObjectIds &&
- object_id < (kMaxPredefinedObjectIds + Symbols::kMaxId));
+ object_id < (kMaxPredefinedObjectIds + kMaxId));
}
// List of symbols that are stored in the vm isolate for easy access.
- static RawString* predefined_[Symbols::kMaxId];
+ static RawString* predefined_[kMaxId];
friend class SnapshotReader;
friend class SnapshotWriter;
diff --git a/runtime/vm/unicode.cc b/runtime/vm/unicode.cc
index e2e741d8..3129a06 100644
--- a/runtime/vm/unicode.cc
+++ b/runtime/vm/unicode.cc
@@ -64,18 +64,12 @@
}
-static bool IsSmpSequenceStart(uint8_t code_unit) {
+static bool IsSupplementarySequenceStart(uint8_t code_unit) {
// Check is codepoint is >= U+10000.
return (code_unit >= 0xF0);
}
-// Returns true if the code point is a high- or low-surrogate.
-static bool IsSurrogate(uint32_t code_point) {
- return (code_point & 0xfffff800) == 0xd800;
-}
-
-
// Returns true if the code point value is above Plane 17.
static bool IsOutOfRange(uint32_t code_point) {
return (code_point > 0x10FFFF);
@@ -88,14 +82,6 @@
}
-void Utf8::ConvertUTF32ToUTF16(int32_t codepoint, uint16_t* dst) {
- ASSERT(codepoint > kMaxBmpCodepoint);
- ASSERT(dst != NULL);
- dst[0] = (Utf8::kLeadOffset + (codepoint >> 10));
- dst[1] = (0xDC00 + (codepoint & 0x3FF));
-}
-
-
// Returns a count of the number of UTF-8 trail bytes.
intptr_t Utf8::CodePointCount(const uint8_t* utf8_array,
intptr_t array_len,
@@ -108,8 +94,8 @@
++len;
}
if (!IsLatin1SequenceStart(code_unit)) { // > U+00FF
- if (IsSmpSequenceStart(code_unit)) { // >= U+10000
- char_type = kSMP;
+ if (IsSupplementarySequenceStart(code_unit)) { // >= U+10000
+ char_type = kSupplementary;
++len;
} else if (char_type == kLatin1) {
char_type = kBMP;
@@ -144,7 +130,7 @@
(j == num_trail_bytes) &&
!IsOutOfRange(ch) &&
!IsNonShortestForm(ch, j) &&
- !IsSurrogate(ch))) {
+ !Utf16::IsSurrogate(ch))) {
return false;
}
}
@@ -169,8 +155,9 @@
intptr_t Utf8::Length(const String& str) {
intptr_t length = 0;
- for (intptr_t i = 0; i < str.Length(); ++i) {
- int32_t ch = str.CharAt(i);
+ String::CodePointIterator it(str);
+ while (it.Next()) {
+ int32_t ch = it.Current();
length += Utf8::Length(ch);
}
return length;
@@ -205,8 +192,9 @@
intptr_t Utf8::Encode(const String& src, char* dst, intptr_t len) {
intptr_t pos = 0;
- for (intptr_t i = 0; i < src.Length(); ++i) {
- intptr_t ch = src.CharAt(i);
+ String::CodePointIterator it(src);
+ while (it.Next()) {
+ int32_t ch = it.Current();
intptr_t num_bytes = Utf8::Length(ch);
if (pos + num_bytes > len) {
break;
@@ -224,7 +212,7 @@
uint32_t ch = utf8_array[0] & 0xFF;
intptr_t i = 1;
if (ch >= 0x80) {
- int32_t num_trail_bytes = kTrailBytes[ch];
+ intptr_t num_trail_bytes = kTrailBytes[ch];
bool is_malformed = false;
for (; i < num_trail_bytes; ++i) {
if (i < array_len) {
@@ -241,7 +229,7 @@
(i == num_trail_bytes) &&
!IsOutOfRange(ch) &&
!IsNonShortestForm(ch, i) &&
- !IsSurrogate(ch))) {
+ !Utf16::IsSurrogate(ch))) {
*dst = -1;
return 0;
}
@@ -284,13 +272,13 @@
intptr_t num_bytes;
for (; (i < array_len) && (j < len); i += num_bytes, ++j) {
int32_t ch;
- bool is_smp = IsSmpSequenceStart(utf8_array[i]);
+ bool is_supplementary = IsSupplementarySequenceStart(utf8_array[i]);
num_bytes = Utf8::Decode(&utf8_array[i], (array_len - i), &ch);
if (ch == -1) {
return false; // invalid input
}
- if (is_smp) {
- ConvertUTF32ToUTF16(ch, &(dst[j]));
+ if (is_supplementary) {
+ Utf16::Encode(ch, &dst[j]);
j = j + 1;
} else {
dst[j] = ch;
@@ -305,7 +293,7 @@
bool Utf8::DecodeToUTF32(const uint8_t* utf8_array,
intptr_t array_len,
- uint32_t* dst,
+ int32_t* dst,
intptr_t len) {
intptr_t i = 0;
intptr_t j = 0;
@@ -324,4 +312,12 @@
return true; // success
}
+
+void Utf16::Encode(int32_t codepoint, uint16_t* dst) {
+ ASSERT(codepoint > kMaxBmpCodepoint);
+ ASSERT(dst != NULL);
+ dst[0] = (Utf16::kLeadSurrogateOffset + (codepoint >> 10));
+ dst[1] = (0xDC00 + (codepoint & 0x3FF));
+}
+
} // namespace dart
diff --git a/runtime/vm/unicode.h b/runtime/vm/unicode.h
index 28beaad..03a4b29 100644
--- a/runtime/vm/unicode.h
+++ b/runtime/vm/unicode.h
@@ -15,20 +15,16 @@
class Utf8 : AllStatic {
public:
enum Type {
- kLatin1 = 0, // Latin-1 character set.
- kBMP, // Basic Multilingual Plane.
- kSMP, // Supplementary Multilingual Plane.
+ kLatin1 = 0, // Latin-1 code point [U+0000, U+00FF].
+ kBMP, // Basic Multilingual Plane code point [U+0000, U+FFFF].
+ kSupplementary, // Supplementary code point [U+010000, U+10FFFF].
};
static const intptr_t kMaxOneByteChar = 0x7F;
static const intptr_t kMaxTwoByteChar = 0x7FF;
static const intptr_t kMaxThreeByteChar = 0xFFFF;
static const intptr_t kMaxFourByteChar = 0x10FFFF;
- static const intptr_t kMaxBmpCodepoint = 0xffff;
- static const int32_t kLeadOffset = (0xD800 - (0x10000 >> 10));
- static const int32_t kSurrogateOffset = (0x10000 - (0xD800 << 10) - 0xDC00);
- static void ConvertUTF32ToUTF16(int32_t codepoint, uint16_t* dst);
static intptr_t CodePointCount(const uint8_t* utf8_array,
intptr_t array_len,
Type* type);
@@ -56,10 +52,10 @@
intptr_t len);
static bool DecodeToUTF32(const uint8_t* utf8_array,
intptr_t array_len,
- uint32_t* dst,
+ int32_t* dst,
intptr_t len);
static bool DecodeCStringToUTF32(const char* str,
- uint32_t* dst,
+ int32_t* dst,
intptr_t len) {
ASSERT(str != NULL);
intptr_t array_len = strlen(str);
@@ -69,6 +65,44 @@
};
+class Utf16 : AllStatic {
+ public:
+ static const int32_t kMaxBmpCodepoint = 0xFFFF;
+
+ static const int32_t kLeadSurrogateOffset = (0xD800 - (0x10000 >> 10));
+
+ static const int32_t kSurrogateOffset = (0x10000 - (0xD800 << 10) - 0xDC00);
+
+ // Returns the length of the code point in UTF-16 code units.
+ static intptr_t Length(int32_t ch) {
+ return (ch <= kMaxBmpCodepoint) ? 1 : 2;
+ }
+
+ // Returns true if ch is a lead or trail surrogate.
+ static bool IsSurrogate(int32_t ch) {
+ return (ch & 0xFFFFF800) == 0xD800;
+ }
+
+ // Returns true if ch is a lead surrogate.
+ static bool IsLeadSurrogate(int32_t ch) {
+ return (ch & 0xFFFFFC00) == 0xD800;
+ }
+
+ // Returns true if ch is a low surrogate.
+ static bool IsTrailSurrogate(int32_t ch) {
+ return (ch & 0xFFFFFC00) == 0xDC00;
+ }
+
+ // Decodes a surrogate pair into a supplementary code point.
+ static int32_t Decode(int32_t lead, int32_t trail) {
+ return 0x10000 + ((lead & 0x3FF) << 10) + (trail & 0x3FF);
+ }
+
+ // Encodes a single code point.
+ static void Encode(int32_t codepoint, uint16_t* dst);
+};
+
+
class CaseMapping : AllStatic {
public:
// Maps a code point to uppercase.
diff --git a/runtime/vm/unicode_test.cc b/runtime/vm/unicode_test.cc
index 967e9ca..582a2a6 100644
--- a/runtime/vm/unicode_test.cc
+++ b/runtime/vm/unicode_test.cc
@@ -12,8 +12,8 @@
// Examples from the Unicode specification, chapter 3
{
const char* src = "\x41\xC3\xB1\x42";
- uint32_t expected[] = { 0x41, 0xF1, 0x42 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x41, 0xF1, 0x42 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(is_valid);
@@ -22,8 +22,8 @@
{
const char* src = "\x4D";
- uint32_t expected[] = { 0x4D };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x4D };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(is_valid);
@@ -32,8 +32,8 @@
{
const char* src = "\xD0\xB0";
- uint32_t expected[] = { 0x430 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x430 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(is_valid);
@@ -42,8 +42,8 @@
{
const char* src = "\xE4\xBA\x8C";
- uint32_t expected[] = { 0x4E8C };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x4E8C };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(is_valid);
@@ -52,8 +52,8 @@
{
const char* src = "\xF0\x90\x8C\x82";
- uint32_t expected[] = { 0x10302 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x10302 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(is_valid);
@@ -62,8 +62,8 @@
{
const char* src = "\x4D\xD0\xB0\xE4\xBA\x8C\xF0\x90\x8C\x82";
- uint32_t expected[] = { 0x4D, 0x430, 0x4E8C, 0x10302 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x4D, 0x430, 0x4E8C, 0x10302 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(is_valid);
@@ -75,10 +75,10 @@
const char* src = "\xD7\x92\xD7\x9C\xD7\xA2\xD7\x93"
"\x20"
"\xD7\x91\xD7\xA8\xD7\x9B\xD7\x94";
- uint32_t expected[] = { 0x5D2, 0x5DC, 0x5E2, 0x5D3,
- 0x20,
- 0x5D1, 0x5E8, 0x5DB, 0x5D4 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x5D2, 0x5DC, 0x5E2, 0x5D3,
+ 0x20,
+ 0x5D1, 0x5E8, 0x5DB, 0x5D4 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(is_valid);
@@ -90,8 +90,8 @@
// 1 - Some correct UTF-8 text
{
const char* src = "\xCE\xBA\xE1\xBD\xB9\xCF\x83\xCE\xBC\xCE\xB5";
- uint32_t expected[] = { 0x3BA, 0x1F79, 0x3C3, 0x3BC, 0x3B5 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x3BA, 0x1F79, 0x3C3, 0x3BC, 0x3B5 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(is_valid);
@@ -105,8 +105,8 @@
// 2.1.1 - 1 byte (U-00000000): "\x00"
{
const char* src = "\x00";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(is_valid);
@@ -116,8 +116,8 @@
// 2.1.2 - 2 bytes (U-00000080): "\xC2\x80"
{
const char* src = "\xC2\x80";
- uint32_t expected[] = { 0x80 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x80 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(is_valid);
@@ -127,8 +127,8 @@
// 2.1.3 - 3 bytes (U-00000800): "\xE0\xA0\x80"
{
const char* src = "\xE0\xA0\x80";
- uint32_t expected[] = { 0x800 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x800 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(is_valid);
@@ -138,8 +138,8 @@
// 2.1.4 - 4 bytes (U-00010000): "\xF0\x90\x80\x80"
{
const char* src = "\xF0\x90\x80\x80";
- uint32_t expected[] = { 0x10000 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x10000 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(is_valid);
@@ -149,8 +149,8 @@
// 2.1.5 - 5 bytes (U-00200000): "\xF8\x88\x80\x80\x80"
{
const char* src = "\xF8\x88\x80\x80\x80";
- uint32_t expected[] = { 0x200000 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x200000 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -160,8 +160,8 @@
// 2.1.6 - 6 bytes (U-04000000): "\xFC\x84\x80\x80\x80\x80"
{
const char* src = "\xFC\x84\x80\x80\x80\x80";
- uint32_t expected[] = { 0x400000 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x400000 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -173,8 +173,8 @@
// 2.2.1 - 1 byte (U-0000007F): "\x7F"
{
const char* src = "\x7F";
- uint32_t expected[] = { 0x7F };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x7F };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(is_valid);
@@ -184,8 +184,8 @@
// 2.2.2 - 2 bytes (U-000007FF): "\xDF\xBF"
{
const char* src = "\xDF\xBF";
- uint32_t expected[] = { 0x7FF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x7FF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(is_valid);
@@ -195,8 +195,8 @@
// 2.2.3 - 3 bytes (U-0000FFFF): "\xEF\xBF\xBF"
{
const char* src = "\xEF\xBF\xBF";
- uint32_t expected[] = { 0xFFFF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xFFFF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(is_valid);
@@ -206,8 +206,8 @@
// 2.2.4 - 4 bytes (U-001FFFFF): "\xF7\xBF\xBF\xBF"
{
const char* src = "\xF7\xBF\xBF\xBF";
- uint32_t expected[] = { 0x1FFFF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x1FFFF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -217,8 +217,8 @@
// 2.2.5 - 5 bytes (U-03FFFFFF): "\xFB\xBF\xBF\xBF\xBF"
{
const char* src = "\xFB\xBF\xBF\xBF\xBF";
- uint32_t expected[] = { 0x3FFFFFF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x3FFFFFF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -228,8 +228,8 @@
// 2.2.6 - 6 bytes (U-7FFFFFFF): "\xFD\xBF\xBF\xBF\xBF\xBF"
{
const char* src = "\xFD\xBF\xBF\xBF\xBF\xBF";
- uint32_t expected[] = { 0x7FFFFFF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x7FFFFFF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -241,8 +241,8 @@
// 2.3.1 - U-0000D7FF = ed 9f bf = "\xED\x9F\xBF"
{
const char* src = "\xED\x9F\xBF";
- uint32_t expected[] = { 0xD7FF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xD7FF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(is_valid);
@@ -252,8 +252,8 @@
// 2.3.2 - U-0000E000 = ee 80 80 = "\xEE\x80\x80"
{
const char* src = "\xEE\x80\x80";
- uint32_t expected[] = { 0xE000 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xE000 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(is_valid);
@@ -263,8 +263,8 @@
// 2.3.3 - U-0000FFFD = ef bf bd = "\xEF\xBF\xBD"
{
const char* src = "\xEF\xBF\xBD";
- uint32_t expected[] = { 0xFFFD };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xFFFD };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(is_valid);
@@ -274,8 +274,8 @@
// 2.3.4 - U-0010FFFF = f4 8f bf bf = "\xF4\x8F\xBF\xBF"
{
const char* src = "\xF4\x8F\xBF\xBF";
- uint32_t expected[] = { 0x10FFFF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x10FFFF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(is_valid);
@@ -285,8 +285,8 @@
// 2.3.5 - U-00110000 = f4 90 80 80 = "\xF4\x90\x80\x80"
{
const char* src = "\xF4\x90\x80\x80";
- uint32_t expected[] = { 0x110000 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x110000 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -300,8 +300,8 @@
// 3.1.1 - First continuation byte 0x80: "\x80"
{
const char* src = "\x80";
- uint32_t expected[] = { 0x80 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x80 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -311,8 +311,8 @@
// 3.1.2 - Last continuation byte 0xbf: "\xBF"
{
const char* src = "\xBF";
- uint32_t expected[] = { 0xBF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xBF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -322,8 +322,8 @@
// 3.1.3 - 2 continuation bytes: "\x80\xBF"
{
const char* src = "\x80\xBF";
- uint32_t expected[] = { 0x80, 0xBF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x80, 0xBF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -333,8 +333,8 @@
// 3.1.4 - 3 continuation bytes: "\x80\xBF\x80"
{
const char* src = "\x80\xBF\x80";
- uint32_t expected[] = { 0x80, 0xBF, 0x80 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x80, 0xBF, 0x80 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -344,8 +344,8 @@
// 3.1.5 - 4 continuation bytes: "\x80\xBF\x80\xBF"
{
const char* src = "\x80\xBF\x80\xBF";
- uint32_t expected[] = { 0x80, 0xBF, 0x80, 0xBF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x80, 0xBF, 0x80, 0xBF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -355,8 +355,8 @@
// 3.1.6 - 5 continuation bytes: "\x80\xBF\x80\xBF\x80"
{
const char* src = "\x80\xBF\x80\xBF\x80";
- uint32_t expected[] = { 0x80, 0xBF, 0x80, 0xBF, 0x80 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x80, 0xBF, 0x80, 0xBF, 0x80 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -366,8 +366,8 @@
// 3.1.7 - 6 continuation bytes: "\x80\xBF\x80\xBF\x80\xBF"
{
const char* src = "\x80\xBF\x80\xBF\x80\xBF";
- uint32_t expected[] = { 0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -377,8 +377,8 @@
// 3.1.8 - 7 continuation bytes: "\x80\xBF\x80\xBF\x80\xBF\x80"
{
const char* src = "\x80\xBF\x80\xBF\x80\xBF\x80";
- uint32_t expected[] = { 0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF, 0x80 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF, 0x80 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -395,8 +395,8 @@
"\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF"
"\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7"
"\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
for (size_t i = 0; i < strlen(src); ++i) {
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(&src[i], dst, ARRAY_SIZE(dst));
@@ -418,8 +418,8 @@
"\xD4\x20\xD5\x20\xD6\x20\xD7\x20"
"\xD8\x20\xD9\x20\xDA\x20\xDB\x20"
"\xDC\x20\xDD\x20\xDE\x20\xDF\x20";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
for (size_t i = 0; i < strlen(src); i += 2) {
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(&src[i], dst, ARRAY_SIZE(dst));
@@ -435,8 +435,8 @@
"\xE4\x20\xE5\x20\xE6\x20\xE7\x20"
"\xE8\x20\xE9\x20\xEA\x20\xEB\x20"
"\xEC\x20\xED\x20\xEE\x20\xEF\x20";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
for (size_t i = 0; i < strlen(src); i += 2) {
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(&src[i], dst, ARRAY_SIZE(dst));
@@ -450,8 +450,8 @@
{
const char* src = "\xF0\x20\xF1\x20\xF2\x20\xF3\x20"
"\xF4\x20\xF5\x20\xF6\x20\xF7\x20";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
for (size_t i = 0; i < strlen(src); i += 2) {
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(&src[i], dst, ARRAY_SIZE(dst));
@@ -464,8 +464,8 @@
// followed by a space character:
{
const char* src = "\xF8\x20\xF9\x20\xFA\x20\xFB\x20";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
for (size_t i = 0; i < strlen(src); i += 2) {
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(&src[i], dst, ARRAY_SIZE(dst));
@@ -478,8 +478,8 @@
// followed by a space character:
{
const char* src = "\xFC\x20\xFD\x20";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
for (size_t i = 0; i < strlen(src); i += 2) {
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(&src[i], dst, ARRAY_SIZE(dst));
@@ -493,8 +493,8 @@
// 3.3.1 - 2-byte sequence with last byte missing (U+0000): "\xC0"
{
const char* src = "\xC0";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -504,8 +504,8 @@
// 3.3.2 - 3-byte sequence with last byte missing (U+0000): "\xE0\x80"
{
const char* src = "\xE0\x80";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -515,8 +515,8 @@
// 3.3.3 - 4-byte sequence with last byte missing (U+0000): "\xF0\x80\x80"
{
const char* src = "\xF0\x80\x80";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -526,8 +526,8 @@
// 3.3.4 - 5-byte sequence with last byte missing (U+0000): "\xF8\x80\x80\x80"
{
const char* src = "\xF8\x80\x80\x80";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -538,8 +538,8 @@
// "\xFC\x80\x80\x80\x80"
{
const char* src = "\xFC\x80\x80\x80\x80";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -549,8 +549,8 @@
// 3.3.6 - 2-byte sequence with last byte missing (U-000007FF): "\xDF"
{
const char* src = "\xDF";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -560,8 +560,8 @@
// 3.3.7 - 3-byte sequence with last byte missing (U-0000FFFF): "\xEF\xBF"
{
const char* src = "\xEF\xBF";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -571,8 +571,8 @@
// 3.3.8 - 4-byte sequence with last byte missing (U-001FFFFF): "\xF7\xBF\xBF"
{
const char* src = "\xF7\xBF\xBF";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -583,8 +583,8 @@
// "\xFB\xBF\xBF\xBF"
{
const char* src = "\xFB\xBF\xBF\xBF";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -595,8 +595,8 @@
// "\xFD\xBF\xBF\xBF\xBF"
{
const char* src = "\xFD\xBF\xBF\xBF\xBF";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -610,8 +610,8 @@
"\x80\x80\x80\xDF\xEF\xBF"
"\xF7\xBF\xBF\xFB\xBF\xBF"
"\xBF\xFD\xBF\xBF\xBF\xBF";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
for (size_t i = 0; i < strlen(src); ++i) {
for (size_t j = 1; j < (strlen(src) - i); ++j) {
memset(dst, 0xFF, sizeof(dst));
@@ -628,8 +628,8 @@
// 3.5.1 - fe = "\xFE"
{
const char* src = "\xFE";
- uint32_t expected[] = { 0xFE };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xFE };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -639,8 +639,8 @@
// 3.5.2 - ff = "\xFF"
{
const char* src = "\xFF";
- uint32_t expected[] = { 0xFF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xFF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -650,8 +650,8 @@
// 3.5.3 - fe fe ff ff = "\xFE\xFE\xFF\xFF"
{
const char* src = "\xFE\xFE\xFF\xFF";
- uint32_t expected[] = { 0xFF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xFF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -665,8 +665,8 @@
// 4.1.1 - U+002F = c0 af = "\xC0\xAF"
{
const char* src = "\xC0\xAF";
- uint32_t expected[] = { 0x2F };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x2F };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -676,8 +676,8 @@
// 4.1.2 - U+002F = e0 80 af = "\xE0\x80\xAF"
{
const char* src = "\xE0\x80\xAF";
- uint32_t expected[] = { 0x2F };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x2F };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -687,8 +687,8 @@
// 4.1.3 - U+002F = f0 80 80 af = "\xF0\x80\x80\xAF"
{
const char* src = "\xF0\x80\x80\xAF";
- uint32_t expected[] = { 0x2F };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x2F };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -698,8 +698,8 @@
// 4.1.4 - U+002F = f8 80 80 80 af = "\xF8\x80\x80\x80\xAF"
{
const char* src = "\xF8\x80\x80\x80\xAF";
- uint32_t expected[] = { 0x2F };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x2F };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -709,8 +709,8 @@
// 4.1.5 - U+002F = fc 80 80 80 80 af = "\xFC\x80\x80\x80\x80\xAF"
{
const char* src = "\xFC\x80\x80\x80\x80\xAF";
- uint32_t expected[] = { 0x2F };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x2F };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -722,8 +722,8 @@
// 4.2.1 - U-0000007F = c1 bf = "\xC1\xBF"
{
const char* src = "\xC1\xBF";
- uint32_t expected[] = { 0x7F };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x7F };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -733,8 +733,8 @@
// 4.2.2 U+000007FF = e0 9f bf = "\xE0\x9F\xBF"
{
const char* src = "\xE0\x9F\xBF";
- uint32_t expected[] = { 0x7FF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x7FF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -744,8 +744,8 @@
// 4.2.3 - U+0000FFFF = f0 8f bf bf = "\xF0\x8F\xBF\xBF"
{
const char* src = "\xF0\x8F\xBF\xBF";
- uint32_t expected[] = { 0xFFFF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xFFFF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -755,8 +755,8 @@
// 4.2.4 U-001FFFFF = f8 87 bf bf bf = "\xF8\x87\xBF\xBF\xBF"
{
const char* src = "\xF8\x87\xBF\xBF\xBF";
- uint32_t expected[] = { 0x1FFFFF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x1FFFFF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -766,8 +766,8 @@
// 4.2.5 U-03FFFFFF = fc 83 bf bf bf bf = "\xFC\x83\xBF\xBF\xBF\xBF"
{
const char* src = "\xFC\x83\xBF\xBF\xBF\xBF";
- uint32_t expected[] = { 0x3FFFFFF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x3FFFFFF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -779,8 +779,8 @@
// 4.3.1 - U+0000 = "\xC0\x80"
{
const char* src = "\xC0\x80";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -790,8 +790,8 @@
// 4.3.2 U+0000 = e0 80 80 = "\xE0\x80\x80"
{
const char* src = "\xE0\x80\x80";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -801,8 +801,8 @@
// 4.3.3 U+0000 = f0 80 80 80 = "\xF0\x80\x80\x80"
{
const char* src = "\xF0\x80\x80\x80";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -812,8 +812,8 @@
// 4.3.4 U+0000 = f8 80 80 80 80 = "\xF8\x80\x80\x80\x80"
{
const char* src = "\xF8\x80\x80\x80\x80";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -823,8 +823,8 @@
// 4.3.5 U+0000 = fc 80 80 80 80 80 = "\xFC\x80\x80\x80\x80\x80"
{
const char* src = "\xFC\x80\x80\x80\x80\x80";
- uint32_t expected[] = { 0x0 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0x0 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0xFF, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -836,8 +836,8 @@
// 5.1.1 - U+D800 = ed a0 80 = "\xED\xA0\x80"
{
const char* src = "\xED\xA0\x80";
- uint32_t expected[] = { 0xD800 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xD800 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -847,8 +847,8 @@
// 5.1.2 - U+DB7F = ed ad bf = "\xED\xAD\xBF"
{
const char* src = "\xED\xAD\xBF";
- uint32_t expected[] = { 0xDB7F };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xDB7F };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -858,8 +858,8 @@
// 5.1.3 - U+DB80 = ed ae 80 = "\xED\xAE\x80"
{
const char* src = "\xED\xAE\x80";
- uint32_t expected[] = { 0xDB80 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xDB80 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -869,8 +869,8 @@
// 5.1.4 - U+DBFF = ed af bf = "\xED\xAF\xBF"
{
const char* src = "\xED\xAF\xBF";
- uint32_t expected[] = { 0xDBFF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xDBFF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -880,8 +880,8 @@
// 5.1.5 - U+DC00 = ed b0 80 = "\xED\xB0\x80"
{
const char* src = "\xED\xB0\x80";
- uint32_t expected[] = { 0xDC00 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xDC00 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -891,8 +891,8 @@
// 5.1.6 - U+DF80 = ed be 80 = "\xED\xBE\x80"
{
const char* src = "\xED\xBE\x80";
- uint32_t expected[] = { 0xDF80 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xDF80 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -902,8 +902,8 @@
// 5.1.7 - U+DFFF = ed bf bf = "\xED\xBF\xBF"
{
const char* src = "\xED\xBF\xBF";
- uint32_t expected[] = { 0xDFFF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xDFFF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -915,8 +915,8 @@
// 5.2.1 - U+D800 U+DC00 = ed a0 80 ed b0 80 = "\xED\xA0\x80\xED\xB0\x80"
{
const char* src = "\xED\xA0\x80\xED\xB0\x80";
- uint32_t expected[] = { 0xD800, 0xDC00 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xD800, 0xDC00 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -926,8 +926,8 @@
// 5.2.2 - U+D800 U+DFFF = ed a0 80 ed bf bf = "\xED\xA0\x80\xED\xBF\xBF"
{
const char* src = "\xED\xA0\x80\xED\xBF\xBF";
- uint32_t expected[] = { 0xD800, 0xDFFF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xD800, 0xDFFF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -937,8 +937,8 @@
// 5.2.3 - U+DB7F U+DC00 = ed a0 80 ed bf bf = "\xED\xAD\xBF\xED\xB0\x80"
{
const char* src = "\xED\xAD\xBF\xED\xB0\x80";
- uint32_t expected[] = { 0xDB7F, 0xDC00 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xDB7F, 0xDC00 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -948,8 +948,8 @@
// 5.2.4 - U+DB7F U+DFFF = ed ad bf ed bf bf = "\xED\xAD\xBF\xED\xBF\xBF"
{
const char* src = "\xED\xAD\xBF\xED\xBF\xBF";
- uint32_t expected[] = { 0xDB7F, 0xDFFF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xDB7F, 0xDFFF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -959,8 +959,8 @@
// 5.2.5 - U+DB80 U+DC00 = ed ae 80 ed b0 80 = "\xED\xAE\x80\xED\xB0\x80"
{
const char* src = "\xED\xAE\x80\xED\xB0\x80";
- uint32_t expected[] = { 0xDB80, 0xDC00 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xDB80, 0xDC00 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -970,8 +970,8 @@
// 5.2.6 - U+DB80 U+DFFF = ed ae 80 ed bf bf = "\xED\xAE\x80\xED\xBF\xBF"
{
const char* src = "\xED\xAE\x80\xED\xBF\xBF";
- uint32_t expected[] = { 0xDB80, 0xDFFF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xDB80, 0xDFFF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -981,8 +981,8 @@
// 5.2.7 - U+DBFF U+DC00 = ed af bf ed b0 80 = "\xED\xAF\xBF\xED\xB0\x80"
{
const char* src = "\xED\xAF\xBF\xED\xB0\x80";
- uint32_t expected[] = { 0xDBFF, 0xDC00 };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xDBFF, 0xDC00 };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -992,8 +992,8 @@
// 5.2.8 - U+DBFF U+DFFF = ed af bf ed bf bf = "\xED\xAF\xBF\xED\xBF\xBF"
{
const char* src = "\xED\xAF\xBF\xED\xBF\xBF";
- uint32_t expected[] = { 0xDBFF, 0xDFFF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xDBFF, 0xDFFF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(!is_valid);
@@ -1005,8 +1005,8 @@
// 5.3.1 - U+FFFE = ef bf be = "\xEF\xBF\xBE"
{
const char* src = "\xEF\xBF\xBE";
- uint32_t expected[] = { 0xFFFE };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xFFFE };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(is_valid);
@@ -1016,8 +1016,8 @@
// 5.3.2 - U+FFFF = ef bf bf = "\xEF\xBF\xBF"
{
const char* src = "\xEF\xBF\xBF";
- uint32_t expected[] = { 0xFFFF };
- uint32_t dst[ARRAY_SIZE(expected)];
+ int32_t expected[] = { 0xFFFF };
+ int32_t dst[ARRAY_SIZE(expected)];
memset(dst, 0, sizeof(dst));
bool is_valid = Utf8::DecodeCStringToUTF32(src, dst, ARRAY_SIZE(dst));
EXPECT(is_valid);
diff --git a/runtime/vm/vm.gypi b/runtime/vm/vm.gypi
index 0fb1bd9..7104aa5 100644
--- a/runtime/vm/vm.gypi
+++ b/runtime/vm/vm.gypi
@@ -78,6 +78,7 @@
'includes': [
'../lib/lib_sources.gypi',
'../lib/isolate_sources.gypi',
+ '../lib/math_sources.gypi',
'../lib/mirrors_sources.gypi',
'../lib/scalarlist_sources.gypi',
],
@@ -106,6 +107,7 @@
'includes': [
'../lib/lib_sources.gypi',
'../lib/isolate_sources.gypi',
+ '../lib/math_sources.gypi',
'../lib/mirrors_sources.gypi',
'../lib/scalarlist_sources.gypi',
],
diff --git a/runtime/vm/vm_sources.gypi b/runtime/vm/vm_sources.gypi
index d45c8fa..2b2f9d4 100644
--- a/runtime/vm/vm_sources.gypi
+++ b/runtime/vm/vm_sources.gypi
@@ -236,9 +236,6 @@
'port.cc',
'port.h',
'port_test.cc',
- 'random.cc',
- 'random.h',
- 'random_test.cc',
'raw_object.cc',
'raw_object.h',
'raw_object_snapshot.cc',
diff --git a/sdk/lib/_internal/compiler/compiler.dart b/sdk/lib/_internal/compiler/compiler.dart
index af37116..9ef6aa8 100644
--- a/sdk/lib/_internal/compiler/compiler.dart
+++ b/sdk/lib/_internal/compiler/compiler.dart
@@ -8,8 +8,7 @@
import 'implementation/apiimpl.dart';
// Unless explicitly allowed, passing [:null:] for any argument to the
-// methods of library will result in a NullPointerException being
-// thrown.
+// methods of library will result in an Error being thrown.
/**
* Returns a future that completes to the source corresponding to
diff --git a/sdk/lib/_internal/compiler/implementation/closure.dart b/sdk/lib/_internal/compiler/implementation/closure.dart
index 4d6be1c..3d5feef 100644
--- a/sdk/lib/_internal/compiler/implementation/closure.dart
+++ b/sdk/lib/_internal/compiler/implementation/closure.dart
@@ -371,7 +371,7 @@
return true;
} else if (type is InterfaceType) {
InterfaceType ifcType = type;
- for (DartType argument in ifcType.arguments) {
+ for (DartType argument in ifcType.typeArguments) {
if (hasTypeVariable(argument)) {
return true;
}
@@ -385,7 +385,7 @@
useLocal(type.element);
} else if (type is InterfaceType) {
InterfaceType ifcType = type;
- for (DartType argument in ifcType.arguments) {
+ for (DartType argument in ifcType.typeArguments) {
analyzeTypeVariables(argument);
}
}
diff --git a/sdk/lib/_internal/compiler/implementation/compile_time_constants.dart b/sdk/lib/_internal/compiler/implementation/compile_time_constants.dart
index 1f16080..975d4e5 100644
--- a/sdk/lib/_internal/compiler/implementation/compile_time_constants.dart
+++ b/sdk/lib/_internal/compiler/implementation/compile_time_constants.dart
@@ -28,7 +28,6 @@
/** Caches the statics where the initial value cannot be eagerly compiled. */
final Set<VariableElement> lazyStatics;
-
ConstantHandler(Compiler compiler, this.constantSystem)
: initialVariableValues = new Map<VariableElement, dynamic>(),
compiledConstants = new Set<Constant>(),
@@ -134,7 +133,7 @@
&& element.isField()) {
DartType elementType = element.computeType(compiler);
DartType constantType = value.computeType(compiler);
- if (!compiler.types.isSubtype(constantType, elementType)) {
+ if (!constantSystem.isSubtype(compiler, constantType, elementType)) {
if (isConst) {
MessageKind kind = MessageKind.NOT_ASSIGNABLE;
compiler.reportError(node, new CompileTimeConstantError(
@@ -248,6 +247,7 @@
final ConstantSystem constantSystem;
final TreeElements elements;
final Compiler compiler;
+ bool enabledRuntimeTypeSupport = false;
CompileTimeConstantEvaluator(this.constantSystem,
this.elements,
@@ -400,6 +400,25 @@
return constantSystem.createString(accumulator, node);
}
+ Constant makeTypeConstant(Element element) {
+ // If we use a type literal in a constant, the compile time constant
+ // emitter will generate a call to the runtime type cache helper, so we
+ // resolve it and put it into the codegen work list.
+ if (!enabledRuntimeTypeSupport) {
+ SourceString helperName = const SourceString('createRuntimeType');
+ Element helper = compiler.findHelper(helperName);
+ compiler.enqueuer.resolution.addToWorkList(helper);
+ compiler.enqueuer.codegen.addToWorkList(helper);
+ enabledRuntimeTypeSupport = true;
+ }
+
+ DartType elementType = element.computeType(compiler).asRaw();
+ DartType constantType = compiler.typeClass.computeType(compiler);
+ Constant constant = new TypeConstant(elementType, constantType);
+ compiler.constantHandler.registerCompileTimeConstant(constant);
+ return constant;
+ }
+
// TODO(floitsch): provide better error-messages.
Constant visitSend(Send send) {
Element element = elements[send];
@@ -418,6 +437,8 @@
result = compiler.compileVariable(element);
}
if (result != null) return result;
+ } else if (Elements.isClass(element) || Elements.isTypedef(element)) {
+ return makeTypeConstant(element);
}
return signalNotCompileTimeConstant(send);
} else if (send.isCall) {
@@ -427,6 +448,8 @@
Constant right = evaluate(send.argumentsNode.nodes.tail.head);
Constant result = constantSystem.identity.fold(left, right);
if (result != null) return result;
+ } else if (Elements.isClass(element) || Elements.isTypedef(element)) {
+ return makeTypeConstant(element);
}
return signalNotCompileTimeConstant(send);
} else if (send.isPrefix) {
diff --git a/sdk/lib/_internal/compiler/implementation/compiler.dart b/sdk/lib/_internal/compiler/implementation/compiler.dart
index e416804..e770cff 100644
--- a/sdk/lib/_internal/compiler/implementation/compiler.dart
+++ b/sdk/lib/_internal/compiler/implementation/compiler.dart
@@ -96,8 +96,6 @@
SourceString getCheckedModeHelper(DartType type) => null;
void registerInstantiatedClass(ClassElement cls, Enqueuer enqueuer) {}
-
- Element getInterceptor(Selector selector);
}
abstract class Compiler implements DiagnosticListener {
diff --git a/sdk/lib/_internal/compiler/implementation/constants.dart b/sdk/lib/_internal/compiler/implementation/constants.dart
index 6e20124..ad5dc74 100644
--- a/sdk/lib/_internal/compiler/implementation/constants.dart
+++ b/sdk/lib/_internal/compiler/implementation/constants.dart
@@ -16,6 +16,7 @@
R visitList(ListConstant constant);
R visitMap(MapConstant constant);
R visitConstructed(ConstructedConstant constant);
+ R visitType(TypeConstant constant);
}
abstract class Constant {
@@ -37,6 +38,7 @@
bool isPrimitive() => false;
/** Returns true if the constant is a list, a map or a constructed object. */
bool isObject() => false;
+ bool isType() => false;
bool isSentinel() => false;
bool isNaN() => false;
@@ -46,7 +48,7 @@
List<Constant> getDependencies();
- accept(ConstantVisitor);
+ accept(ConstantVisitor visitor);
}
class SentinelConstant extends Constant {
@@ -100,7 +102,7 @@
bool operator ==(var other) {
if (other is !PrimitiveConstant) return false;
PrimitiveConstant otherPrimitive = other;
- // We use == instead of === so that DartStrings compare correctly.
+ // We use == instead of 'identical' so that DartStrings compare correctly.
return value == otherPrimitive.value;
}
@@ -315,10 +317,25 @@
bool isObject() => true;
DartType computeType(Compiler compiler) => type;
+}
- // TODO(1603): The class should be marked as abstract, but the VM doesn't
- // currently allow this.
- int get hashCode;
+class TypeConstant extends ObjectConstant {
+ /// The user type that this constant represents.
+ final DartType representedType;
+
+ TypeConstant(this.representedType, type) : super(type);
+
+ bool isType() => true;
+
+ bool operator ==(other) {
+ return other is TypeConstant && representedType == other.representedType;
+ }
+
+ int get hashCode => representedType.hashCode * 13;
+
+ List<Constant> getDependencies() => const <Constant>[];
+
+ accept(ConstantVisitor visitor) => visitor.visitType(this);
}
class ListConstant extends ObjectConstant {
diff --git a/sdk/lib/_internal/compiler/implementation/dart_backend/backend.dart b/sdk/lib/_internal/compiler/implementation/dart_backend/backend.dart
index 101918b..c012488 100644
--- a/sdk/lib/_internal/compiler/implementation/dart_backend/backend.dart
+++ b/sdk/lib/_internal/compiler/implementation/dart_backend/backend.dart
@@ -196,8 +196,6 @@
stripAsserts = strips.indexOf('asserts') != -1,
super(compiler);
- Element getInterceptor(Selector selector) => null;
-
void enqueueHelpers(Enqueuer world) {
// Right now resolver doesn't always resolve interfaces needed
// for literals, so force them. TODO(antonm): fix in the resolver.
diff --git a/sdk/lib/_internal/compiler/implementation/dart_backend/placeholder_collector.dart b/sdk/lib/_internal/compiler/implementation/dart_backend/placeholder_collector.dart
index b31e471..63e14f9 100644
--- a/sdk/lib/_internal/compiler/implementation/dart_backend/placeholder_collector.dart
+++ b/sdk/lib/_internal/compiler/implementation/dart_backend/placeholder_collector.dart
@@ -30,6 +30,7 @@
final bool isRedirectingCall;
ConstructorPlaceholder(this.node, this.type)
: this.isRedirectingCall = false;
+ // Note: factory redirection is not redirecting call!
ConstructorPlaceholder.redirectingCall(this.node)
: this.type = null, this.isRedirectingCall = true;
}
@@ -141,7 +142,7 @@
final Set<String> fixedMemberNames; // member names which cannot be renamed.
final Map<Element, ElementAst> elementAsts;
final Set<Node> nullNodes; // Nodes that should not be in output.
- final Set<Identifier> unresolvedNodes;
+ final Set<Node> unresolvedNodes;
final Map<Element, Set<Node>> elementNodes;
final Map<FunctionElement, FunctionScope> functionScopes;
final Map<LibraryElement, Set<Identifier>> privateNodes;
@@ -161,7 +162,7 @@
PlaceholderCollector(this.compiler, this.fixedMemberNames, this.elementAsts) :
nullNodes = new Set<Node>(),
- unresolvedNodes = new Set<Identifier>(),
+ unresolvedNodes = new Set<Node>(),
elementNodes = new Map<Element, Set<Node>>(),
functionScopes = new Map<FunctionElement, FunctionScope>(),
privateNodes = new Map<LibraryElement, Set<Identifier>>(),
@@ -175,6 +176,15 @@
if (element.isGenerativeConstructor() || element.isFactoryConstructor()) {
DartType type = element.getEnclosingClass().type.asRaw();
makeConstructorPlaceholder(node.name, element, type);
+ Return bodyAsReturn = node.body.asReturn();
+ if (bodyAsReturn != null && bodyAsReturn.isRedirectingFactoryBody) {
+ // Factory redirection.
+ FunctionElement redirectTarget = element.defaultImplementation;
+ assert(redirectTarget != null && redirectTarget != element);
+ type = redirectTarget.getEnclosingClass().type.asRaw();
+ makeConstructorPlaceholder(
+ bodyAsReturn.expression, redirectTarget, type);
+ }
} else if (Elements.isStaticOrTopLevel(element)) {
// Note: this code should only rename private identifiers for class'
// fields/getters/setters/methods. Top-level identifiers are renamed
@@ -355,7 +365,8 @@
Element constructor = treeElements[send];
assert(constructor != null);
assert(send.receiver == null);
- if (constructor is !ErroneousElement) {
+ if (!Elements.isErroneousElement(constructor) &&
+ !Elements.isMalformedElement(constructor)) {
makeConstructorPlaceholder(node.send.selector, constructor, type);
// TODO(smok): Should this be in visitNamedArgument?
// Field names can be exposed as names of optional arguments, e.g.
diff --git a/sdk/lib/_internal/compiler/implementation/dart_backend/renamer.dart b/sdk/lib/_internal/compiler/implementation/dart_backend/renamer.dart
index d41d5b2..f132df6 100644
--- a/sdk/lib/_internal/compiler/implementation/dart_backend/renamer.dart
+++ b/sdk/lib/_internal/compiler/implementation/dart_backend/renamer.dart
@@ -88,9 +88,9 @@
// js-helpers.
StringBuffer result = new StringBuffer(renameElement(type.element));
if (type is InterfaceType) {
- if (!type.arguments.isEmpty) {
+ if (!type.typeArguments.isEmpty) {
result.add('<');
- Link<DartType> argumentsLink = type.arguments;
+ Link<DartType> argumentsLink = type.typeArguments;
result.add(renameType(argumentsLink.head, renameElement));
for (Link<DartType> link = argumentsLink.tail; !link.isEmpty;
link = link.tail) {
diff --git a/sdk/lib/_internal/compiler/implementation/elements/elements.dart b/sdk/lib/_internal/compiler/implementation/elements/elements.dart
index fbdc8ca..df07e95 100644
--- a/sdk/lib/_internal/compiler/implementation/elements/elements.dart
+++ b/sdk/lib/_internal/compiler/implementation/elements/elements.dart
@@ -120,6 +120,8 @@
const ElementKind('ambiguous', ElementCategory.NONE);
static const ElementKind ERROR =
const ElementKind('error', ElementCategory.NONE);
+ static const ElementKind MALFORMED_TYPE =
+ const ElementKind('malformed', ElementCategory.NONE);
toString() => id;
}
@@ -200,6 +202,8 @@
/** See [AmbiguousElement] for documentation. */
bool isAmbiguous() => false;
+ bool isMalformed() => false;
+
/**
* Is [:true:] if this element has a corresponding patch.
*
@@ -1136,7 +1140,7 @@
* changed by the resolver to point to the redirection target. If
* this is an interface constructor, [defaultImplementation] will be
* changed by the resolver to point to the default implementation.
- * Otherwise, [:defaultImplementation === this:].
+ * Otherwise, [:identical(defaultImplementation, this):].
*/
// TODO(ahe): Rename this field to redirectionTarget and remove
// mention of interface constructors above.
@@ -1178,7 +1182,7 @@
FunctionElement get redirectionTarget {
if (this == defaultImplementation) return this;
- Element target = defaultImplementation;
+ var target = defaultImplementation;
Set<Element> seen = new Set<Element>();
seen.add(target);
while (!target.isErroneous() && target != target.defaultImplementation) {
@@ -1319,6 +1323,23 @@
bool impliesType() => true;
}
+class MalformedTypeElement extends Element {
+ final TypeAnnotation typeNode;
+
+ MalformedTypeElement(this.typeNode, Element enclosing)
+ : super(const SourceString('malformed'),
+ ElementKind.MALFORMED_TYPE,
+ enclosing);
+
+ DartType computeType(compiler) => compiler.types.malformedType;
+
+ Node parseNode(_) => typeNode;
+
+ bool impliesType() => true;
+
+ bool isMalformed() => true;
+}
+
/**
* [TypeDeclarationElement] defines the common interface for class/interface
* declarations and typedefs.
@@ -1414,7 +1435,7 @@
bool isObject(Compiler compiler) =>
identical(declaration, compiler.objectClass);
- Link<DartType> get typeVariables => type.arguments;
+ Link<DartType> get typeVariables => type.typeArguments;
ClassElement ensureResolved(Compiler compiler) {
if (resolutionState == STATE_NOT_STARTED) {
@@ -1724,8 +1745,16 @@
}
class Elements {
- static bool isUnresolved(Element e) => e == null || e.isErroneous();
+ static bool isUnresolved(Element e) {
+ return e == null || e.isErroneous() || e.isMalformed();
+ }
static bool isErroneousElement(Element e) => e != null && e.isErroneous();
+ static bool isMalformedElement(Element e) => e != null && e.isMalformed();
+
+ static bool isClass(Element e) => e != null && e.kind == ElementKind.CLASS;
+ static bool isTypedef(Element e) {
+ return e != null && e.kind == ElementKind.TYPEDEF;
+ }
static bool isLocal(Element element) {
return !Elements.isUnresolved(element)
@@ -1863,27 +1892,27 @@
static SourceString constructOperatorName(SourceString op, bool isUnary) {
String value = op.stringValue;
- if ((value === '==') ||
- (value === '~') ||
- (value === '[]') ||
- (value === '[]=') ||
- (value === '*') ||
- (value === '/') ||
- (value === '%') ||
- (value === '~/') ||
- (value === '+') ||
- (value === '<<') ||
- (value === '>>>') ||
- (value === '>>') ||
- (value === '>=') ||
- (value === '>') ||
- (value === '<=') ||
- (value === '<') ||
- (value === '&') ||
- (value === '^') ||
- (value === '|')) {
+ if ((identical(value, '==')) ||
+ (identical(value, '~')) ||
+ (identical(value, '[]')) ||
+ (identical(value, '[]=')) ||
+ (identical(value, '*')) ||
+ (identical(value, '/')) ||
+ (identical(value, '%')) ||
+ (identical(value, '~/')) ||
+ (identical(value, '+')) ||
+ (identical(value, '<<')) ||
+ (identical(value, '>>>')) ||
+ (identical(value, '>>')) ||
+ (identical(value, '>=')) ||
+ (identical(value, '>')) ||
+ (identical(value, '<=')) ||
+ (identical(value, '<')) ||
+ (identical(value, '&')) ||
+ (identical(value, '^')) ||
+ (identical(value, '|'))) {
return op;
- } else if (value === '-') {
+ } else if (identical(value, '-')) {
return isUnary ? const SourceString('unary-') : op;
} else {
throw 'Unhandled operator: ${op.slowToString()}';
@@ -1933,10 +1962,17 @@
final TargetElement target;
bool isBreakTarget = false;
bool isContinueTarget = false;
- LabelElement(Label label, this.labelName, this.target,
+ LabelElement(Label label, String labelName, this.target,
Element enclosingElement)
: this.label = label,
- super(label.identifier.source, ElementKind.LABEL, enclosingElement);
+ this.labelName = labelName,
+ // In case of a synthetic label, just use [labelName] for
+ // identifying the element.
+ super(label == null
+ ? new SourceString(labelName)
+ : label.identifier.source,
+ ElementKind.LABEL,
+ enclosingElement);
void setBreakTarget() {
isBreakTarget = true;
diff --git a/sdk/lib/_internal/compiler/implementation/enqueue.dart b/sdk/lib/_internal/compiler/implementation/enqueue.dart
index 8ed7bdb..f12d760 100644
--- a/sdk/lib/_internal/compiler/implementation/enqueue.dart
+++ b/sdk/lib/_internal/compiler/implementation/enqueue.dart
@@ -138,6 +138,7 @@
}
void registerInstantiatedClass(ClassElement cls) {
+ if (universe.instantiatedClasses.contains(cls)) return;
universe.instantiatedClasses.add(cls);
onRegisterInstantiatedClass(cls);
compiler.backend.registerInstantiatedClass(cls, this);
@@ -403,11 +404,4 @@
: 'Compiled ${universe.generatedCode.length} methods.');
nativeEnqueuer.logSummary(log);
}
-
- registerUsedSelector(Selector selector) {
- Element interceptor = compiler.backend.getInterceptor(selector);
- if (interceptor != null) {
- registerStaticUse(interceptor);
- }
- }
}
diff --git a/sdk/lib/_internal/compiler/implementation/js/nodes.dart b/sdk/lib/_internal/compiler/implementation/js/nodes.dart
index 18139b2..cfc88a5 100644
--- a/sdk/lib/_internal/compiler/implementation/js/nodes.dart
+++ b/sdk/lib/_internal/compiler/implementation/js/nodes.dart
@@ -713,6 +713,8 @@
PropertyAccess(this.receiver, this.selector);
PropertyAccess.field(this.receiver, String fieldName)
: selector = new LiteralString("'$fieldName'");
+ PropertyAccess.indexed(this.receiver, int index)
+ : selector = new LiteralNumber('$index');
accept(NodeVisitor visitor) => visitor.visitAccess(this);
@@ -769,6 +771,9 @@
ArrayInitializer(this.length, this.elements);
+ factory ArrayInitializer.from(List<Expression> expressions) =>
+ new ArrayInitializer(expressions.length, _convert(expressions));
+
accept(NodeVisitor visitor) => visitor.visitArrayInitializer(this);
void visitChildren(NodeVisitor visitor) {
@@ -776,6 +781,12 @@
}
int get precedenceLevel => PRIMARY;
+
+ static List<ArrayElement> _convert(List<Expression> expressions) {
+ int index = 0;
+ return expressions.map(
+ (expression) => new ArrayElement(index++, expression));
+ }
}
/**
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
index 5cc96d6..9aa445d 100644
--- a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
@@ -648,8 +648,17 @@
ClassElement jsStringClass;
ClassElement jsArrayClass;
+ ClassElement jsNumberClass;
+ ClassElement jsIntClass;
+ ClassElement jsDoubleClass;
+ ClassElement jsFunctionClass;
+ ClassElement jsNullClass;
+ ClassElement jsBoolClass;
ClassElement objectInterceptorClass;
+ Element jsArrayLength;
+ Element jsStringLength;
Element getInterceptorMethod;
+ bool _interceptorsAreInitialized = false;
final Namer namer;
@@ -685,19 +694,22 @@
* name to the list of members that have that name. This map is used
* by the codegen to know whether a send must be intercepted or not.
*/
- final Map<SourceString, List<Element>> interceptedElements;
+ final Map<SourceString, Set<Element>> interceptedElements;
List<CompilerTask> get tasks {
return <CompilerTask>[builder, optimizer, generator, emitter];
}
+ final RuntimeTypeInformation rti;
+
JavaScriptBackend(Compiler compiler, bool generateSourceMap, bool disableEval)
: namer = determineNamer(compiler),
returnInfo = new Map<Element, ReturnInfo>(),
invalidateAfterCodegen = new List<Element>(),
interceptors = new Interceptors(compiler),
usedInterceptors = new Set<Selector>(),
- interceptedElements = new Map<SourceString, List<Element>>(),
+ interceptedElements = new Map<SourceString, Set<Element>>(),
+ rti = new RuntimeTypeInformation(compiler),
super(compiler, JAVA_SCRIPT_CONSTANT_SYSTEM) {
emitter = disableEval
? new CodeEmitterNoEvalTask(compiler, namer, generateSourceMap)
@@ -717,20 +729,36 @@
bool isInterceptorClass(Element element) {
if (element == null) return false;
- return element == jsStringClass || element == jsArrayClass;
+ return element == jsStringClass
+ || element == jsArrayClass
+ || element == jsIntClass
+ || element == jsDoubleClass
+ || element == jsNullClass
+ || element == jsFunctionClass
+ || element == jsBoolClass
+ || element == jsNumberClass;
}
void addInterceptedSelector(Selector selector) {
usedInterceptors.add(selector);
}
- bool shouldInterceptSelector(Selector selector) {
- List<Element> intercepted = interceptedElements[selector.name];
- if (intercepted == null) return false;
+ /**
+ * Returns a set of interceptor classes that contain a member whose
+ * signature matches the given [selector]. Returns [:null:] if there
+ * is no class.
+ */
+ Set<ClassElement> getInterceptedClassesOn(Selector selector) {
+ Set<Element> intercepted = interceptedElements[selector.name];
+ if (intercepted == null) return null;
+ Set<ClassElement> result = new Set<ClassElement>();
for (Element element in intercepted) {
- if (selector.applies(element, compiler)) return true;
+ if (selector.applies(element, compiler)) {
+ result.add(element.getEnclosingClass());
+ }
}
- return false;
+ if (result.isEmpty) return null;
+ return result;
}
void initializeInterceptorElements() {
@@ -738,35 +766,75 @@
compiler.findInterceptor(const SourceString('ObjectInterceptor'));
getInterceptorMethod =
compiler.findInterceptor(const SourceString('getInterceptor'));
+ jsStringClass =
+ compiler.findInterceptor(const SourceString('JSString'));
+ jsArrayClass =
+ compiler.findInterceptor(const SourceString('JSArray'));
+ jsNumberClass =
+ compiler.findInterceptor(const SourceString('JSNumber'));
+ jsIntClass =
+ compiler.findInterceptor(const SourceString('JSInt'));
+ jsDoubleClass =
+ compiler.findInterceptor(const SourceString('JSDouble'));
+ jsNullClass =
+ compiler.findInterceptor(const SourceString('JSNull'));
+ jsFunctionClass =
+ compiler.findInterceptor(const SourceString('JSFunction'));
+ jsBoolClass =
+ compiler.findInterceptor(const SourceString('JSBool'));
+ jsArrayClass.ensureResolved(compiler);
+ jsArrayLength =
+ jsArrayClass.lookupLocalMember(const SourceString('length'));
+ jsStringClass.ensureResolved(compiler);
+ jsStringLength =
+ jsStringClass.lookupLocalMember(const SourceString('length'));
}
+ void addInterceptors(ClassElement cls) {
+ cls.ensureResolved(compiler);
+ cls.forEachMember((ClassElement classElement, Element member) {
+ Set<Element> set = interceptedElements.putIfAbsent(
+ member.name, () => new Set<Element>());
+ set.add(member);
+ },
+ includeSuperMembers: true);
+ }
void registerInstantiatedClass(ClassElement cls, Enqueuer enqueuer) {
ClassElement result = null;
- if (cls == compiler.stringClass) {
- if (jsStringClass == null) {
- jsStringClass =
- compiler.findInterceptor(const SourceString('JSString'));
- initializeInterceptorElements();
+ if (!_interceptorsAreInitialized) {
+ initializeInterceptorElements();
+ _interceptorsAreInitialized = true;
+ // The null interceptor and the function interceptor are
+ // currently always instantiated if a new class is instantiated.
+ // TODO(ngeoffray): do this elsewhere for the function
+ // interceptor?
+ if (jsNullClass != null) {
+ addInterceptors(jsNullClass);
+ enqueuer.registerInstantiatedClass(jsNullClass);
}
+ if (jsFunctionClass != null) {
+ addInterceptors(jsFunctionClass);
+ enqueuer.registerInstantiatedClass(jsFunctionClass);
+ }
+ enqueuer.addToWorkList(getInterceptorMethod);
+ }
+ if (cls == compiler.stringClass) {
result = jsStringClass;
} else if (cls == compiler.listClass) {
- if (jsArrayClass == null) {
- jsArrayClass =
- compiler.findInterceptor(const SourceString('JSArray'));
- initializeInterceptorElements();
- }
result = jsArrayClass;
+ } else if (cls == compiler.intClass) {
+ result = jsIntClass;
+ } else if (cls == compiler.doubleClass) {
+ result = jsDoubleClass;
+ } else if (cls == compiler.functionClass) {
+ result = jsFunctionClass;
+ } else if (cls == compiler.boolClass) {
+ result = jsBoolClass;
}
if (result == null) return;
-
- result.forEachMember((_, Element member) {
- List<Element> list = interceptedElements.putIfAbsent(
- member.name, () => new List<Element>());
- list.add(member);
- });
-
+ if (enqueuer.isResolutionQueue) addInterceptors(result);
enqueuer.registerInstantiatedClass(result);
}
@@ -778,10 +846,6 @@
return new JavaScriptItemCompilationContext();
}
- Element getInterceptor(Selector selector) {
- return interceptors.getStaticInterceptor(selector);
- }
-
void enqueueHelpers(Enqueuer world) {
enqueueAllTopLevelFunctions(compiler.jsHelperLibrary, world);
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart b/sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart
index a9e49c0..7635c6a 100644
--- a/sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart
@@ -87,23 +87,12 @@
/**
* Write the contents of the quoted string to a [CodeBuffer] in
* a form that is valid as JavaScript string literal content.
- * The string is assumed quoted by single quote characters.
+ * The string is assumed quoted by double quote characters.
*/
- void writeEscapedString(DartString string,
- CodeBuffer buffer,
- Node diagnosticNode) {
- void onError(code) {
- compiler.reportError(
- diagnosticNode,
- 'Unhandled non-BMP character: U+${code.toRadixString(16)}');
- }
- writeJsonEscapedCharsOn(string.iterator(), buffer, onError);
- }
-
void visitString(StringConstant constant) {
- buffer.add("'");
- writeEscapedString(constant.value, buffer, constant.node);
- buffer.add("'");
+ buffer.add('"');
+ writeJsonEscapedCharsOn(constant.value.slowToString(), buffer);
+ buffer.add('"');
}
void emitCanonicalVersion(Constant constant) {
@@ -196,6 +185,29 @@
}
}
+ void visitType(TypeConstant constant) {
+ if (shouldEmitCanonicalVersion) {
+ emitCanonicalVersion(constant);
+ } else {
+ SourceString helperSourceName =
+ const SourceString('createRuntimeType');
+ Element helper = compiler.findHelper(helperSourceName);
+ JavaScriptBackend backend = compiler.backend;
+ String helperName = backend.namer.getName(helper);
+ DartType type = constant.representedType;
+ Element element = type.element;
+ String typeName;
+ if (type.kind == TypeKind.INTERFACE) {
+ typeName =
+ backend.rti.getStringRepresentation(type, expandRawType: true);
+ } else {
+ assert(type.kind == TypeKind.TYPEDEF);
+ typeName = element.name.slowToString();
+ }
+ buffer.add("${namer.CURRENT_ISOLATE}.$helperName('$typeName')");
+ }
+ }
+
void visitConstructed(ConstructedConstant constant) {
if (shouldEmitCanonicalVersion) {
emitCanonicalVersion(constant);
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart b/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
index e8ad203..12a8d4f 100644
--- a/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
@@ -192,6 +192,7 @@
constructor = new Function(str)();
}
constructor.prototype = prototype;
+ constructor.builtin\$cls = cls;
return constructor;
}""";
}
@@ -236,7 +237,9 @@
for (var cls in collectedClasses) {
if (hasOwnProperty.call(collectedClasses, cls)) {
var desc = collectedClasses[cls];
- $isolatePropertiesName[cls] = $defineClassName(cls, desc[''], desc);
+'''/* If the class does not have any declared fields (in the ''
+ property of the description), then provide an empty list of fields. */'''
+ $isolatePropertiesName[cls] = $defineClassName(cls, desc[''] || [], desc);
if (desc['super'] !== "") $pendingClassesName[cls] = desc['super'];
}
}
@@ -322,14 +325,21 @@
String get lazyInitializerFunction {
String isolate = namer.CURRENT_ISOLATE;
+ return """
+function(prototype, staticName, fieldName, getterName, lazyValue) {
+ var getter = new Function("{ return $isolate." + fieldName + ";}");
+$lazyInitializerLogic
+}""";
+ }
+
+ String get lazyInitializerLogic {
+ String isolate = namer.CURRENT_ISOLATE;
JavaScriptBackend backend = compiler.backend;
String cyclicThrow = namer.isolateAccess(backend.cyclicThrowHelper);
return """
-function(prototype, staticName, fieldName, getterName, lazyValue) {
var sentinelUndefined = {};
var sentinelInProgress = {};
prototype[fieldName] = sentinelUndefined;
- var getter = new Function("{ return $isolate." + fieldName + ";}");
prototype[getterName] = function() {
var result = $isolate[fieldName];
try {
@@ -350,8 +360,7 @@
} finally {
$isolate[getterName] = getter;
}
- };
-}""";
+ };""";
}
void addDefineClassAndFinishClassFunctionsIfNecessary(CodeBuffer buffer) {
@@ -671,12 +680,11 @@
*/
void emitInstanceMembers(ClassElement classElement,
CodeBuffer buffer,
- bool needsLeadingComma) {
+ bool emitLeadingComma) {
assert(invariant(classElement, classElement.isDeclaration));
- bool needsComma = needsLeadingComma;
void defineInstanceMember(String name, StringBuffer memberBuffer) {
- if (needsComma) buffer.add(',');
- needsComma = true;
+ if (emitLeadingComma) buffer.add(',');
+ emitLeadingComma = true;
buffer.add('\n');
buffer.add(' $name: ');
buffer.add(memberBuffer);
@@ -846,8 +854,9 @@
/* Do nothing. */
}
- void emitClassFields(ClassElement classElement, CodeBuffer buffer) {
- buffer.add('"": [');
+ void emitClassFields(ClassElement classElement,
+ CodeBuffer buffer,
+ bool emitEndingComma) {
bool isFirstField = true;
visitClassFields(classElement, (Element member,
String name,
@@ -856,6 +865,7 @@
bool needsSetter,
bool needsCheckedSetter) {
if (isFirstField) {
+ buffer.add('"": [');
isFirstField = false;
} else {
buffer.add(", ");
@@ -876,12 +886,19 @@
}
buffer.add('"');
});
- buffer.add(']');
+ if (!isFirstField) {
+ // There was at least one field.
+ buffer.add(']');
+ if (emitEndingComma) {
+ buffer.add(',');
+ }
+ }
}
/** Each getter/setter must be prefixed with a ",\n ". */
- void emitClassGettersSetters(ClassElement classElement, CodeBuffer buffer,
- {bool omitLeadingComma: false}) {
+ void emitClassGettersSetters(ClassElement classElement,
+ CodeBuffer buffer,
+ bool emitLeadingComma) {
visitClassFields(classElement, (Element member,
String name,
String accessorName,
@@ -890,10 +907,10 @@
bool needsCheckedSetter) {
if (needsCheckedSetter) {
assert(!needsSetter);
- if (!omitLeadingComma) {
+ if (emitLeadingComma) {
buffer.add(",\n ");
} else {
- omitLeadingComma = false;
+ emitLeadingComma = true;
}
generateCheckedSetter(member, name, accessorName, buffer);
}
@@ -927,12 +944,12 @@
buffer.add('$classesCollector.$className = {');
emitClassConstructor(classElement, buffer);
- emitClassFields(classElement, buffer);
+ emitClassFields(classElement, buffer, true);
// TODO(floitsch): the emitInstanceMember should simply always emit a ',\n'.
// That does currently not work because the native classes have a different
// syntax.
- buffer.add(',\n "super": "$superName"');
- emitClassGettersSetters(classElement, buffer);
+ buffer.add('\n "super": "$superName"');
+ emitClassGettersSetters(classElement, buffer, true);
emitInstanceMembers(classElement, buffer, true);
buffer.add('\n};\n\n');
}
@@ -951,7 +968,7 @@
} else if (selector.isSetter()) {
name = backend.namer.setterName(selector.library, selector.name);
} else {
- assert(selector.isCall());
+ assert(selector.isCall() || selector.isOperator());
name = backend.namer.instanceMethodInvocationName(
selector.library, selector.name, selector);
if (selector.argumentCount > 0) {
@@ -1182,21 +1199,20 @@
Map<int, String> cache;
String extraArg;
- String extraArgWithThis;
String extraArgWithoutComma;
+ bool hasExtraArgument = false;
// Methods on foreign classes take an extra parameter, which is
// the actual receiver of the call.
JavaScriptBackend backend = compiler.backend;
if (backend.isInterceptorClass(member.getEnclosingClass())) {
+ hasExtraArgument = true;
cache = interceptorClosureCache;
extraArg = 'receiver, ';
- extraArgWithThis = 'this.receiver, ';
extraArgWithoutComma = 'receiver';
} else {
cache = boundClosureCache;
extraArg = '';
extraArgWithoutComma = '';
- extraArgWithThis = '';
}
String closureClass =
@@ -1230,8 +1246,12 @@
String joinedArgs = Strings.join(arguments, ", ");
boundClosureBuffer.add(
"$invocationName: function($joinedArgs) {");
- boundClosureBuffer.add(
- " return this.self[this.target]($extraArgWithThis$joinedArgs);");
+ String callArgs = hasExtraArgument
+ ? joinedArgs.isEmpty
+ ? 'this.$extraArgWithoutComma'
+ : 'this.$extraArg$joinedArgs'
+ : joinedArgs;
+ boundClosureBuffer.add(" return this.self[this.target]($callArgs);");
boundClosureBuffer.add(" }");
addParameterStubs(callElement, (String stubName, CodeBuffer memberValue) {
boundClosureBuffer.add(',\n $stubName: $memberValue');
@@ -1333,11 +1353,16 @@
buffer.add(namer.getLazyInitializerName(element));
buffer.add("', ");
buffer.add(code);
+ emitLazyInitializedGetter(element, buffer);
buffer.add(");\n");
}
}
}
+ void emitLazyInitializedGetter(VariableElement element, CodeBuffer buffer) {
+ // Nothing to do, the 'lazy' function will create the getter.
+ }
+
void emitCompileTimeConstants(CodeBuffer buffer) {
ConstantHandler handler = compiler.constantHandler;
List<Constant> constants = handler.getConstantsForEmission();
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/emitter_no_eval.dart b/sdk/lib/_internal/compiler/implementation/js_backend/emitter_no_eval.dart
index 00563f0..0b3864e 100644
--- a/sdk/lib/_internal/compiler/implementation/js_backend/emitter_no_eval.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/emitter_no_eval.dart
@@ -59,6 +59,18 @@
}""";
}
+ String get lazyInitializerFunction {
+ return """
+function(prototype, staticName, fieldName, getterName, lazyValue, getter) {
+$lazyInitializerLogic
+}""";
+ }
+
+ void emitLazyInitializedGetter(VariableElement element, CodeBuffer buffer) {
+ String isolate = namer.CURRENT_ISOLATE;
+ buffer.add(', function() { return $isolate.${namer.getName(element)}; }');
+ }
+
void emitBoundClosureClassHeader(String mangledName,
String superName,
String extraArgument,
@@ -121,17 +133,20 @@
buffer.add(' }');
}
- void emitClassFields(ClassElement classElement, CodeBuffer buffer) {
- /* Do nothing. */
+ void emitClassFields(ClassElement classElement,
+ CodeBuffer buffer,
+ bool emitEndingComma) {
+ if (emitEndingComma) buffer.add(', ');
}
- void emitClassGettersSetters(ClassElement classElement, CodeBuffer buffer,
- {bool omitLeadingComma: false}) {
+ void emitClassGettersSetters(ClassElement classElement,
+ CodeBuffer buffer,
+ bool emitLeadingComma) {
emitComma() {
- if (!omitLeadingComma) {
+ if (emitLeadingComma) {
buffer.add(",\n ");
} else {
- omitLeadingComma = false;
+ emitLeadingComma = true;
}
}
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/js_backend.dart b/sdk/lib/_internal/compiler/implementation/js_backend/js_backend.dart
index 2a9d4da..f24e5ba 100644
--- a/sdk/lib/_internal/compiler/implementation/js_backend/js_backend.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/js_backend.dart
@@ -8,6 +8,7 @@
import '../../compiler.dart' as api;
import '../elements/elements.dart';
import '../dart2jslib.dart' hide Selector;
+import '../js/js.dart' as js;
import '../native_handler.dart' as native;
import '../source_file.dart';
import '../source_map_builder.dart';
@@ -23,5 +24,6 @@
part 'emitter.dart';
part 'emitter_no_eval.dart';
part 'namer.dart';
-part 'minify_namer.dart';
part 'native_emitter.dart';
+part 'minify_namer.dart';
+part 'runtime_types.dart';
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/minify_namer.dart b/sdk/lib/_internal/compiler/implementation/js_backend/minify_namer.dart
index f252b54..8e292b4 100644
--- a/sdk/lib/_internal/compiler/implementation/js_backend/minify_namer.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/minify_namer.dart
@@ -2,6 +2,8 @@
// 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.
+part of js_backend;
+
/**
* Assigns JavaScript identifiers to Dart variables, class-names and members.
*/
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/namer.dart b/sdk/lib/_internal/compiler/implementation/js_backend/namer.dart
index 3d134c2..691d73b 100644
--- a/sdk/lib/_internal/compiler/implementation/js_backend/namer.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/namer.dart
@@ -313,7 +313,6 @@
} else {
name = element.name.slowToString();
}
- // Prefix the name with '$' if it is reserved.
return name;
}
@@ -363,7 +362,6 @@
} else {
// Use declaration element to ensure invariant on [globals].
element = element.declaration;
-
// Dealing with a top-level or static element.
String cached = globals[element];
if (cached != null) return cached;
@@ -382,7 +380,8 @@
kind == ElementKind.GETTER ||
kind == ElementKind.SETTER ||
kind == ElementKind.TYPEDEF ||
- kind == ElementKind.LIBRARY) {
+ kind == ElementKind.LIBRARY ||
+ kind == ElementKind.MALFORMED_TYPE) {
bool isNative = false;
if (identical(kind, ElementKind.CLASS)) {
ClassElement class_elt = element;
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/native_emitter.dart b/sdk/lib/_internal/compiler/implementation/js_backend/native_emitter.dart
index 7b92fcd..6e87ec4 100644
--- a/sdk/lib/_internal/compiler/implementation/js_backend/native_emitter.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/native_emitter.dart
@@ -166,12 +166,10 @@
CodeBuffer fieldBuffer = new CodeBuffer();
CodeBuffer getterSetterBuffer = new CodeBuffer();
-
- emitter.emitClassFields(classElement, fieldBuffer);
- emitter.emitClassGettersSetters(classElement, getterSetterBuffer,
- omitLeadingComma: true);
-
CodeBuffer methodBuffer = new CodeBuffer();
+
+ emitter.emitClassFields(classElement, fieldBuffer, false);
+ emitter.emitClassGettersSetters(classElement, getterSetterBuffer, false);
emitter.emitInstanceMembers(classElement, methodBuffer, false);
if (methodBuffer.isEmpty
@@ -321,19 +319,20 @@
// Temporary variables for common substrings.
List<String> varNames = <String>[];
// var -> expression
- Map<String, String> varDefns = <String, String>{};
+ Map<dynamic, js.Expression> varDefns = new Map<dynamic, js.Expression>();
// tag -> expression (a string or a variable)
- Map<ClassElement, String> tagDefns = new Map<ClassElement, String>();
+ Map<ClassElement, js.Expression> tagDefns =
+ new Map<ClassElement, js.Expression>();
- String makeExpression(ClassElement classElement) {
+ js.Expression makeExpression(ClassElement classElement) {
// Expression fragments for this set of cls keys.
- List<String> expressions = <String>[];
+ List<js.Expression> expressions = <js.Expression>[];
// TODO: Remove if cls is abstract.
List<String> subtags = [toNativeName(classElement)];
void walk(ClassElement cls) {
for (final ClassElement subclass in getDirectSubclasses(cls)) {
ClassElement tag = subclass;
- String existing = tagDefns[tag];
+ var existing = tagDefns[tag];
if (existing == null) {
subtags.add(toNativeName(tag));
walk(subclass);
@@ -341,23 +340,28 @@
if (varDefns.containsKey(existing)) {
expressions.add(existing);
} else {
- String varName = 'v${varNames.length}/*${tag}*/';
+ String varName = 'v${varNames.length}_${tag.name.slowToString()}';
varNames.add(varName);
varDefns[varName] = existing;
- tagDefns[tag] = varName;
- expressions.add(varName);
+ tagDefns[tag] = new js.VariableUse(varName);
+ expressions.add(new js.VariableUse(varName));
}
}
}
}
walk(classElement);
- String constantPart = "'${Strings.join(subtags, '|')}'";
- if (constantPart != "''") expressions.add(constantPart);
- String expression;
+ if (!subtags.isEmpty) {
+ expressions.add(
+ new js.LiteralString("'${Strings.join(subtags, '|')}'"));
+ }
+ js.Expression expression;
if (expressions.length == 1) {
expression = expressions[0];
} else {
- expression = "[${Strings.join(expressions, ',')}].join('|')";
+ js.Expression array = new js.ArrayInitializer.from(expressions);
+ expression = new js.Call(
+ new js.PropertyAccess.field(array, 'join'),
+ [new js.LiteralString("'|'")]);
}
return expression;
}
@@ -368,27 +372,46 @@
// Write out a thunk that builds the metadata.
if (!tagDefns.isEmpty) {
- nativeBuffer.add('(function(){\n');
+ List<js.Statement> statements = <js.Statement>[];
+ List<js.VariableInitialization> initializations =
+ <js.VariableInitialization>[];
for (final String varName in varNames) {
- nativeBuffer.add(' var ${varName} = ${varDefns[varName]};\n');
+ initializations.add(
+ new js.VariableInitialization(
+ new js.VariableDeclaration(varName),
+ varDefns[varName]));
+ }
+ if (!initializations.isEmpty) {
+ statements.add(
+ new js.ExpressionStatement(
+ new js.VariableDeclarationList(initializations)));
}
- nativeBuffer.add(' var table = [\n');
+ // [table] is a list of lists, each inner list of the form:
+ // [dynamic-dispatch-tag, tags-of-classes-implementing-dispatch-tag]
+ // E.g.
+ // [['Node', 'Text|HTMLElement|HTMLDivElement|...'], ...]
+ js.Expression table =
+ new js.ArrayInitializer.from(
+ dispatchClasses.map((cls) =>
+ new js.ArrayInitializer.from([
+ new js.LiteralString("'${toNativeName(cls)}'"),
+ tagDefns[cls]])));
+
+ // $.dynamicSetMetadata(table);
+ statements.add(
+ new js.ExpressionStatement(
+ new js.Call(
+ new js.VariableUse(dynamicSetMetadataName),
+ [table])));
+
+ // (function(){statements})();
nativeBuffer.add(
- ' // [dynamic-dispatch-tag, '
- 'tags of classes implementing dynamic-dispatch-tag]');
- bool needsComma = false;
- List<String> entries = <String>[];
- for (final ClassElement cls in dispatchClasses) {
- String clsName = toNativeName(cls);
- entries.add("\n ['$clsName', ${tagDefns[cls]}]");
- }
- nativeBuffer.add(Strings.join(entries, ','));
- nativeBuffer.add('];\n');
- nativeBuffer.add('$dynamicSetMetadataName(table);\n');
-
- nativeBuffer.add('})();\n');
+ js.prettyPrint(
+ new js.ExpressionStatement(
+ new js.Call(new js.Fun([], new js.Block(statements)), [])),
+ compiler));
}
}
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/runtime_types.dart b/sdk/lib/_internal/compiler/implementation/js_backend/runtime_types.dart
new file mode 100644
index 0000000..2064f09
--- /dev/null
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/runtime_types.dart
@@ -0,0 +1,65 @@
+// Copyright (c) 2012, 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.
+
+part of js_backend;
+
+class RuntimeTypeInformation {
+ final Compiler compiler;
+
+ RuntimeTypeInformation(this.compiler);
+
+ // TODO(karlklose): remove when using type representations.
+ String getStringRepresentation(DartType type, {bool expandRawType: false}) {
+ StringBuffer builder = new StringBuffer();
+ void build(DartType t) {
+ if (t is TypeVariableType) {
+ builder.add(t.name.slowToString());
+ return;
+ }
+ JavaScriptBackend backend = compiler.backend;
+ builder.add(backend.namer.getName(t.element));
+ if (t is InterfaceType) {
+ InterfaceType interface = t;
+ ClassElement element = t.element;
+ if (element.typeVariables.isEmpty) return;
+ bool isRaw = interface.typeArguments.isEmpty;
+ if (isRaw && !expandRawType) return;
+ builder.add('<');
+ Iterable items =
+ isRaw ? element.typeVariables : interface.typeArguments;
+ var stringify = isRaw ? (_) => 'dynamic' : (type) => type.toString();
+ bool first = true;
+ for (var item in items) {
+ if (first) {
+ first = false;
+ } else {
+ builder.add(', ');
+ }
+ builder.add(stringify(item));
+ }
+ builder.add('>');
+ }
+ }
+
+ build(type);
+ return builder.toString();
+ }
+
+ static bool hasTypeArguments(DartType type) {
+ if (type is InterfaceType) {
+ InterfaceType interfaceType = type;
+ return !interfaceType.typeArguments.isEmpty;
+ }
+ return false;
+ }
+
+ static int getTypeVariableIndex(TypeVariableType variable) {
+ ClassElement classElement = variable.element.getEnclosingClass();
+ Link<DartType> variables = classElement.typeVariables;
+ for (int index = 0; !variables.isEmpty;
+ index++, variables = variables.tail) {
+ if (variables.head == variable) return index;
+ }
+ }
+}
diff --git a/sdk/lib/_internal/compiler/implementation/lib/core_patch.dart b/sdk/lib/_internal/compiler/implementation/lib/core_patch.dart
index 253c1fa..21cf6e1 100644
--- a/sdk/lib/_internal/compiler/implementation/lib/core_patch.dart
+++ b/sdk/lib/_internal/compiler/implementation/lib/core_patch.dart
@@ -82,7 +82,7 @@
patch static double parse(String source) => Primitives.parseDouble(source);
}
-patch class NoSuchMethodError {
+patch class Error {
patch static String _objectToString(Object object) {
return Primitives.objectToString(object);
}
@@ -154,22 +154,13 @@
// Patch for List implementation.
-patch class _ListImpl<E> {
+patch class List<E> {
patch factory List([int length]) => Primitives.newList(length);
-
- patch factory List.from(Iterable<E> other) {
- var result = new List();
- for (var element in other) {
- result.add(element);
- }
- return result;
- }
}
patch class String {
patch factory String.fromCharCodes(List<int> charCodes) {
- checkNull(charCodes);
if (!isJsArray(charCodes)) {
if (charCodes is !List) throw new ArgumentError(charCodes);
charCodes = new List.from(charCodes);
@@ -182,7 +173,6 @@
patch class Strings {
patch static String join(List<String> strings, String separator) {
checkNull(strings);
- checkNull(separator);
if (separator is !String) throw new ArgumentError(separator);
return stringJoinUnchecked(_toJsStringArray(strings), separator);
}
@@ -199,14 +189,12 @@
array = strings;
for (int i = 0; i < length; i++) {
final string = strings[i];
- checkNull(string);
if (string is !String) throw new ArgumentError(string);
}
} else {
array = new List(length);
for (int i = 0; i < length; i++) {
final string = strings[i];
- checkNull(string);
if (string is !String) throw new ArgumentError(string);
array[i] = string;
}
diff --git a/sdk/lib/_internal/compiler/implementation/lib/interceptors.dart b/sdk/lib/_internal/compiler/implementation/lib/interceptors.dart
index ca685dc..c87e763 100644
--- a/sdk/lib/_internal/compiler/implementation/lib/interceptors.dart
+++ b/sdk/lib/_internal/compiler/implementation/lib/interceptors.dart
@@ -7,6 +7,7 @@
import 'dart:collection';
part 'js_array.dart';
+part 'js_number.dart';
part 'js_string.dart';
/**
@@ -25,465 +26,45 @@
getInterceptor(object) {
if (object is String) return const JSString();
if (isJsArray(object)) return const JSArray();
+ if (object is int) return const JSInt();
+ if (object is double) return const JSDouble();
+ if (object is bool) return const JSBool();
+ if (object == null) return const JSNull();
+ if (JS('String', 'typeof #', object) == 'function') return const JSFunction();
return const ObjectInterceptor();
}
-get$length(var receiver) {
- if (receiver is String || isJsArray(receiver)) {
- return JS('num', r'#.length', receiver); // TODO(sra): Use 'int'?
- } else {
- return UNINTERCEPTED(receiver.length);
- }
-}
-
-set$length(receiver, newLength) {
- if (isJsArray(receiver)) {
- checkNull(newLength); // TODO(ahe): This is not specified but co19 tests it.
- if (newLength is !int) throw new ArgumentError(newLength);
- if (newLength < 0) throw new RangeError.value(newLength);
- checkGrowable(receiver, 'set length');
- JS('void', r'#.length = #', receiver, newLength);
- } else {
- UNINTERCEPTED(receiver.length = newLength);
- }
- return newLength;
-}
-
-toString(var value) {
- if (JS('bool', r'typeof # == "object" && # != null', value, value)) {
- if (isJsArray(value)) {
- return Collections.collectionToString(value);
- } else {
- return UNINTERCEPTED(value.toString());
- }
- }
- if (JS('bool', r'# === 0 && (1 / #) < 0', value, value)) {
- return '-0.0';
- }
- if (value == null) return 'null';
- if (JS('bool', r'typeof # == "function"', value)) {
- return 'Closure';
- }
- return JS('String', r'String(#)', value);
-}
-
-get$isEmpty(receiver) {
- if (receiver is String || isJsArray(receiver)) {
- return JS('bool', r'#.length === 0', receiver);
- }
- return UNINTERCEPTED(receiver.isEmpty);
-}
-
-compareTo(a, b) {
- if (checkNumbers(a, b)) {
- if (a < b) {
- return -1;
- } else if (a > b) {
- return 1;
- } else if (a == b) {
- if (a == 0) {
- bool aIsNegative = a.isNegative;
- bool bIsNegative = b.isNegative;
- if (aIsNegative == bIsNegative) return 0;
- if (aIsNegative) return -1;
- return 1;
- }
- return 0;
- } else if (a.isNaN) {
- if (b.isNaN) {
- return 0;
- }
- return 1;
- } else {
- return -1;
- }
- } else if (a is String) {
- if (b is !String) throw new ArgumentError(b);
- return JS('bool', r'# == #', a, b) ? 0
- : JS('bool', r'# < #', a, b) ? -1 : 1;
- } else {
- return UNINTERCEPTED(a.compareTo(b));
- }
-}
-
-iterator(receiver) {
- if (isJsArray(receiver)) {
- return new ListIterator(receiver);
- }
- return UNINTERCEPTED(receiver.iterator());
-}
-
-indexOf$1(receiver, element) {
- if (isJsArray(receiver)) {
- var length = JS('num', r'#.length', receiver);
- return Arrays.indexOf(receiver, element, 0, length);
- } else if (receiver is String) {
- checkNull(element);
- if (element is !String) throw new ArgumentError(element);
- return JS('int', r'#.indexOf(#)', receiver, element);
- }
- return UNINTERCEPTED(receiver.indexOf(element));
-}
-
-indexOf$2(receiver, element, start) {
- if (isJsArray(receiver)) {
- if (start is !int) throw new ArgumentError(start);
- var length = JS('num', r'#.length', receiver);
- return Arrays.indexOf(receiver, element, start, length);
- } else if (receiver is String) {
- checkNull(element);
- if (start is !int) throw new ArgumentError(start);
- if (element is !String) throw new ArgumentError(element);
- if (start < 0) return -1; // TODO(ahe): Is this correct?
- return JS('int', r'#.indexOf(#, #)', receiver, element, start);
- }
- return UNINTERCEPTED(receiver.indexOf(element, start));
-}
-
-insertRange$2(receiver, start, length) {
- if (isJsArray(receiver)) {
- return insertRange$3(receiver, start, length, null);
- }
- return UNINTERCEPTED(receiver.insertRange(start, length));
-}
-
-insertRange$3(receiver, start, length, initialValue) {
- if (!isJsArray(receiver)) {
- return UNINTERCEPTED(receiver.insertRange(start, length, initialValue));
- }
- return listInsertRange(receiver, start, length, initialValue);
-}
-
-get$last(receiver) {
- if (!isJsArray(receiver)) {
- return UNINTERCEPTED(receiver.last);
- }
- return receiver[receiver.length - 1];
-}
-
-lastIndexOf$1(receiver, element) {
- if (isJsArray(receiver)) {
- var start = JS('num', r'#.length', receiver);
- return Arrays.lastIndexOf(receiver, element, start);
- } else if (receiver is String) {
- checkNull(element);
- if (element is !String) throw new ArgumentError(element);
- return JS('int', r'#.lastIndexOf(#)', receiver, element);
- }
- return UNINTERCEPTED(receiver.lastIndexOf(element));
-}
-
-lastIndexOf$2(receiver, element, start) {
- if (isJsArray(receiver)) {
- return Arrays.lastIndexOf(receiver, element, start);
- } else if (receiver is String) {
- checkNull(element);
- if (element is !String) throw new ArgumentError(element);
- if (start != null) {
- if (start is !num) throw new ArgumentError(start);
- if (start < 0) return -1;
- if (start >= receiver.length) {
- if (element == "") return receiver.length;
- start = receiver.length - 1;
- }
- }
- return stringLastIndexOfUnchecked(receiver, element, start);
- }
- return UNINTERCEPTED(receiver.lastIndexOf(element, start));
-}
-
-removeRange(receiver, start, length) {
- if (!isJsArray(receiver)) {
- return UNINTERCEPTED(receiver.removeRange(start, length));
- }
- checkGrowable(receiver, 'removeRange');
- if (length == 0) {
- return;
- }
- checkNull(start); // TODO(ahe): This is not specified but co19 tests it.
- checkNull(length); // TODO(ahe): This is not specified but co19 tests it.
- if (start is !int) throw new ArgumentError(start);
- if (length is !int) throw new ArgumentError(length);
- if (length < 0) throw new ArgumentError(length);
- var receiverLength = JS('num', r'#.length', receiver);
- if (start < 0 || start >= receiverLength) {
- throw new RangeError.value(start);
- }
- if (start + length > receiverLength) {
- throw new RangeError.value(start + length);
- }
- Arrays.copy(receiver,
- start + length,
- receiver,
- start,
- receiverLength - length - start);
- receiver.length = receiverLength - length;
-}
-
-setRange$3(receiver, start, length, from) {
- if (isJsArray(receiver)) {
- return setRange$4(receiver, start, length, from, 0);
- }
- return UNINTERCEPTED(receiver.setRange(start, length, from));
-}
-
-setRange$4(receiver, start, length, from, startFrom) {
- if (!isJsArray(receiver)) {
- return UNINTERCEPTED(receiver.setRange(start, length, from, startFrom));
- }
-
- checkMutable(receiver, 'indexed set');
- if (length == 0) return;
- checkNull(start); // TODO(ahe): This is not specified but co19 tests it.
- checkNull(length); // TODO(ahe): This is not specified but co19 tests it.
- checkNull(from); // TODO(ahe): This is not specified but co19 tests it.
- checkNull(startFrom); // TODO(ahe): This is not specified but co19 tests it.
- if (start is !int) throw new ArgumentError(start);
- if (length is !int) throw new ArgumentError(length);
- if (startFrom is !int) throw new ArgumentError(startFrom);
- if (length < 0) throw new ArgumentError(length);
- if (start < 0) throw new RangeError.value(start);
- if (start + length > receiver.length) {
- throw new RangeError.value(start + length);
- }
-
- Arrays.copy(from, startFrom, receiver, start, length);
-}
-
-some(receiver, f) {
- if (!isJsArray(receiver)) {
- return UNINTERCEPTED(receiver.some(f));
- } else {
- return Collections.some(receiver, f);
- }
-}
-
-every(receiver, f) {
- if (!isJsArray(receiver)) {
- return UNINTERCEPTED(receiver.every(f));
- } else {
- return Collections.every(receiver, f);
- }
-}
-
-// TODO(ngeoffray): Make it possible to have just one "sort" function ends
-// an optional parameter.
-
-sort$0(receiver) {
- if (!isJsArray(receiver)) return UNINTERCEPTED(receiver.sort());
- checkMutable(receiver, 'sort');
- coreSort(receiver, Comparable.compare);
-}
-
-sort$1(receiver, compare) {
- if (!isJsArray(receiver)) return UNINTERCEPTED(receiver.sort(compare));
- checkMutable(receiver, 'sort');
- coreSort(receiver, compare);
-}
-
-get$isNegative(receiver) {
- if (receiver is num) {
- return (receiver == 0) ? (1 / receiver) < 0 : receiver < 0;
- } else {
- return UNINTERCEPTED(receiver.isNegative);
- }
-}
-
-get$isNaN(receiver) {
- if (receiver is num) {
- return JS('bool', r'isNaN(#)', receiver);
- } else {
- return UNINTERCEPTED(receiver.isNaN);
- }
-}
-
-remainder(a, b) {
- if (checkNumbers(a, b)) {
- return JS('num', r'# % #', a, b);
- } else {
- return UNINTERCEPTED(a.remainder(b));
- }
-}
-
-abs(receiver) {
- if (receiver is !num) return UNINTERCEPTED(receiver.abs());
-
- return JS('num', r'Math.abs(#)', receiver);
-}
-
-toInt(receiver) {
- if (receiver is !num) return UNINTERCEPTED(receiver.toInt());
-
- if (receiver.isNaN) throw new FormatException('NaN');
-
- if (receiver.isInfinite) throw new FormatException('Infinity');
-
- var truncated = receiver.truncate();
- return JS('bool', r'# == -0.0', truncated) ? 0 : truncated;
-}
-
-ceil(receiver) {
- if (receiver is !num) return UNINTERCEPTED(receiver.ceil());
-
- return JS('num', r'Math.ceil(#)', receiver);
-}
-
-floor(receiver) {
- if (receiver is !num) return UNINTERCEPTED(receiver.floor());
-
- return JS('num', r'Math.floor(#)', receiver);
-}
-
-get$isInfinite(receiver) {
- if (receiver is !num) return UNINTERCEPTED(receiver.isInfinite);
-
- return JS('bool', r'# == Infinity', receiver)
- || JS('bool', r'# == -Infinity', receiver);
-}
-
-round(receiver) {
- if (receiver is !num) return UNINTERCEPTED(receiver.round());
-
- if (JS('bool', r'# < 0', receiver)) {
- return JS('num', r'-Math.round(-#)', receiver);
- } else {
- return JS('num', r'Math.round(#)', receiver);
- }
-}
-
-toDouble(receiver) {
- if (receiver is !num) return UNINTERCEPTED(receiver.toDouble());
-
- return receiver;
-}
-
-truncate(receiver) {
- if (receiver is !num) return UNINTERCEPTED(receiver.truncate());
-
- return receiver < 0 ? receiver.ceil() : receiver.floor();
-}
-
-toStringAsFixed(receiver, fractionDigits) {
- if (receiver is !num) {
- return UNINTERCEPTED(receiver.toStringAsFixed(fractionDigits));
- }
- checkNum(fractionDigits);
-
- String result = JS('String', r'#.toFixed(#)', receiver, fractionDigits);
- if (receiver == 0 && receiver.isNegative) return "-$result";
- return result;
-}
-
-toStringAsExponential(receiver, fractionDigits) {
- if (receiver is !num) {
- return UNINTERCEPTED(receiver.toStringAsExponential(fractionDigits));
- }
- String result;
- if (fractionDigits != null) {
- checkNum(fractionDigits);
- result = JS('String', r'#.toExponential(#)', receiver, fractionDigits);
- } else {
- result = JS('String', r'#.toExponential()', receiver);
- }
- if (receiver == 0 && receiver.isNegative) return "-$result";
- return result;
-}
-
-toStringAsPrecision(receiver, fractionDigits) {
- if (receiver is !num) {
- return UNINTERCEPTED(receiver.toStringAsPrecision(fractionDigits));
- }
- checkNum(fractionDigits);
-
- String result = JS('String', r'#.toPrecision(#)',
- receiver, fractionDigits);
- if (receiver == 0 && receiver.isNegative) return "-$result";
- return result;
-}
-
-toRadixString(receiver, radix) {
- if (receiver is !num) {
- return UNINTERCEPTED(receiver.toRadixString(radix));
- }
- checkNum(radix);
- if (radix < 2 || radix > 36) throw new ArgumentError(radix);
- return JS('String', r'#.toString(#)', receiver, radix);
-}
-
-contains$1(receiver, other) {
- if (receiver is String) {
- return contains$2(receiver, other, 0);
- } else if (isJsArray(receiver)) {
- for (int i = 0; i < receiver.length; i++) {
- if (other == receiver[i]) return true;
- }
- return false;
- }
- return UNINTERCEPTED(receiver.contains(other));
-}
-
-contains$2(receiver, other, startIndex) {
- if (receiver is !String) {
- return UNINTERCEPTED(receiver.contains(other, startIndex));
- }
- checkNull(other);
- return stringContainsUnchecked(receiver, other, startIndex);
+/**
+ * The interceptor class for tear-off static methods. Unlike
+ * tear-off instance methods, tear-off static methods are just the JS
+ * function, and methods inherited from Object must therefore be
+ * intercepted.
+ */
+class JSFunction implements Function {
+ const JSFunction();
+ String toString() => 'Closure';
}
/**
- * This is the [Jenkins hash function][1] but using masking to keep
- * values in SMI range.
- *
- * [1]: http://en.wikipedia.org/wiki/Jenkins_hash_function
+ * The interceptor class for [bool].
*/
-get$hashCode(receiver) {
- // TODO(ahe): This method shouldn't have to use JS. Update when our
- // optimizations are smarter.
- if (receiver == null) return 0;
- if (receiver is num) return receiver & 0x1FFFFFFF;
- if (receiver is bool) return receiver ? 0x40377024 : 0xc18c0076;
- if (isJsArray(receiver)) return Primitives.objectHashCode(receiver);
- if (receiver is !String) return UNINTERCEPTED(receiver.hashCode);
- int hash = 0;
- int length = receiver.length;
- for (int i = 0; i < length; i++) {
- hash = 0x1fffffff & (hash + JS('int', r'#.charCodeAt(#)', receiver, i));
- hash = 0x1fffffff & (hash + (0x0007ffff & hash) << 10);
- hash = JS('int', '# ^ (# >> 6)', hash, hash);
- }
- hash = 0x1fffffff & (hash + (0x03ffffff & hash) << 3);
- hash = JS('int', '# ^ (# >> 11)', hash, hash);
- return 0x1fffffff & (hash + (0x00003fff & hash) << 15);
+class JSBool implements bool {
+ const JSBool();
+ String toString() => JS('String', r'String(#)', this);
+
+ // The values here are SMIs, co-prime and differ about half of the bit
+ // positions, including the low bit, so they are different mod 2^k.
+ int get hashCode => this ? (2 * 3 * 23 * 3761) : (269 * 811);
+
+ Type get runtimeType => bool;
}
-get$isEven(receiver) {
- if (receiver is !int) return UNINTERCEPTED(receiver.isEven);
- return (receiver & 1) == 0;
+/**
+ * The interceptor class for [Null].
+ */
+class JSNull implements Null {
+ const JSNull();
+ String toString() => 'null';
+ int get hashCode => 0;
+ Type get runtimeType => createRuntimeType('Null');
}
-
-get$isOdd(receiver) {
- if (receiver is !int) return UNINTERCEPTED(receiver.isOdd);
- return (receiver & 1) == 1;
-}
-
-get$runtimeType(receiver) {
- if (receiver is int) {
- return createRuntimeType('int');
- } else if (receiver is String) {
- return createRuntimeType('String');
- } else if (receiver is double) {
- return createRuntimeType('double');
- } else if (receiver is bool) {
- return createRuntimeType('bool');
- } else if (receiver == null) {
- return createRuntimeType('Null');
- } else if (isJsArray(receiver)) {
- return createRuntimeType('List');
- } else {
- return UNINTERCEPTED(receiver.runtimeType);
- }
-}
-
-// TODO(lrn): These getters should be generated automatically for all
-// intercepted methods.
-get$toString(receiver) => () => toString(receiver);
diff --git a/sdk/lib/_internal/compiler/implementation/lib/io_patch.dart b/sdk/lib/_internal/compiler/implementation/lib/io_patch.dart
index e06bd18..a253935 100644
--- a/sdk/lib/_internal/compiler/implementation/lib/io_patch.dart
+++ b/sdk/lib/_internal/compiler/implementation/lib/io_patch.dart
@@ -167,15 +167,16 @@
patch factory Socket(String host, int port) => new _Socket(host, port);
}
-patch class TlsSocket {
- patch static void setCertificateDatabase(String pkcertDirectory) {
- throw new UnsupportedError("TlsSocket.setCertificateDatabase");
+patch class SecureSocket {
+ patch static void setCertificateDatabase(String certificateDatabase,
+ [String password]) {
+ throw new UnsupportedError("SecureSocket.setCertificateDatabase");
}
}
-patch class _TlsFilter {
- patch factory _TlsFilter() {
- throw new UnsupportedError("_TlsFilter._TlsFilter");
+patch class _SecureFilter {
+ patch factory _SecureFilter() {
+ throw new UnsupportedError("_SecureFilter._SecureFilter");
}
}
diff --git a/sdk/lib/_internal/compiler/implementation/lib/js_array.dart b/sdk/lib/_internal/compiler/implementation/lib/js_array.dart
index 9f5db9b..a4f069d 100644
--- a/sdk/lib/_internal/compiler/implementation/lib/js_array.dart
+++ b/sdk/lib/_internal/compiler/implementation/lib/js_array.dart
@@ -38,7 +38,7 @@
}
void addAll(Collection<E> collection) {
- for (Element e in collection) {
+ for (E e in collection) {
this.add(e);
}
}
@@ -78,6 +78,106 @@
throw new RangeError.value(length);
}
if (length < 0) throw new ArgumentError(length);
- return JS('List', r'#.slice(#, #)', this, start, end);
+ return JS('=List', r'#.slice(#, #)', this, start, end);
+ }
+
+ void insertRange(int start, int length, [E initialValue]) {
+ return listInsertRange(this, start, length, initialValue);
+ }
+
+ E get last => this[length - 1];
+
+ E get first => this[0];
+
+ void removeRange(int start, int length) {
+ checkGrowable(this, 'removeRange');
+ if (length == 0) {
+ return;
+ }
+ checkNull(start); // TODO(ahe): This is not specified but co19 tests it.
+ checkNull(length); // TODO(ahe): This is not specified but co19 tests it.
+ if (start is !int) throw new ArgumentError(start);
+ if (length is !int) throw new ArgumentError(length);
+ if (length < 0) throw new ArgumentError(length);
+ var receiverLength = this.length;
+ if (start < 0 || start >= receiverLength) {
+ throw new RangeError.value(start);
+ }
+ if (start + length > receiverLength) {
+ throw new RangeError.value(start + length);
+ }
+ Arrays.copy(this,
+ start + length,
+ this,
+ start,
+ receiverLength - length - start);
+ this.length = receiverLength - length;
+ }
+
+ void setRange(int start, int length, List<E> from, [int startFrom = 0]) {
+ checkMutable(this, 'indexed set');
+ if (length == 0) return;
+ checkNull(start); // TODO(ahe): This is not specified but co19 tests it.
+ checkNull(length); // TODO(ahe): This is not specified but co19 tests it.
+ checkNull(from); // TODO(ahe): This is not specified but co19 tests it.
+ checkNull(startFrom); // TODO(ahe): This is not specified but co19 tests it.
+ if (start is !int) throw new ArgumentError(start);
+ if (length is !int) throw new ArgumentError(length);
+ if (startFrom is !int) throw new ArgumentError(startFrom);
+ if (length < 0) throw new ArgumentError(length);
+ if (start < 0) throw new RangeError.value(start);
+ if (start + length > this.length) {
+ throw new RangeError.value(start + length);
+ }
+
+ Arrays.copy(from, startFrom, this, start, length);
+ }
+
+ bool some(bool f(E element)) => Collections.some(this, f);
+
+ bool every(bool f(E element)) => Collections.every(this, f);
+
+ void sort([Comparator<E> compare = Comparable.compare]) {
+ checkMutable(this, 'sort');
+ coreSort(this, compare);
+ }
+
+ int indexOf(E element, [int start = 0]) {
+ if (start is !int) throw new ArgumentError(start);
+ return Arrays.indexOf(this, element, start, length);
+ }
+
+ int lastIndexOf(E element, [int start]) {
+ if (start == null) start = this.length - 1;
+ return Arrays.lastIndexOf(this, element, start);
+ }
+
+ bool contains(E other) {
+ for (int i = 0; i < length; i++) {
+ if (other == this[i]) return true;
+ }
+ return false;
+ }
+
+ bool get isEmpty => length == 0;
+
+ String toString() => Collections.collectionToString(this);
+
+ ListIterator iterator() => new ListIterator(this);
+
+ int get hashCode => Primitives.objectHashCode(this);
+
+ Type get runtimeType {
+ // Call getRuntimeTypeString to get the name including type arguments.
+ return new TypeImpl(getRuntimeTypeString(this));
+ }
+
+ int get length => JS('int', r'#.length', this);
+
+ void set length(int newLength) {
+ if (newLength is !int) throw new ArgumentError(newLength);
+ if (newLength < 0) throw new RangeError.value(newLength);
+ checkGrowable(this, 'set length');
+ JS('void', r'#.length = #', this, newLength);
}
}
diff --git a/sdk/lib/_internal/compiler/implementation/lib/js_helper.dart b/sdk/lib/_internal/compiler/implementation/lib/js_helper.dart
index 8e9dbb1..ea31fe2 100644
--- a/sdk/lib/_internal/compiler/implementation/lib/js_helper.dart
+++ b/sdk/lib/_internal/compiler/implementation/lib/js_helper.dart
@@ -62,7 +62,7 @@
: identical(le$slow(a, b), true);
index(var a, var index) {
- // The type test may cause a NullPointerException to be thrown but
+ // The type test may cause a NoSuchMethodError to be thrown but
// that matches the specification of what the indexing operator is
// supposed to do.
bool isJsArrayOrString = JS('bool',
@@ -78,7 +78,7 @@
}
indexSet(var a, var index, var value) {
- // The type test may cause a NullPointerException to be thrown but
+ // The type test may cause a NoSuchMethodError to be thrown but
// that matches the specification of what the indexing operator is
// supposed to do.
bool isMutableJsArray = JS('bool',
@@ -105,7 +105,6 @@
if (b is num) {
return true;
} else {
- checkNull(b);
throw new ArgumentError(b);
}
}
@@ -536,9 +535,27 @@
static num dateNow() => JS('num', r'Date.now()');
+ static stringFromCodePoints(codePoints) {
+ List<int> a = <int>[];
+ for (var i in codePoints) {
+ if (i is !int) throw new ArgumentError(i);
+ if (i <= 0xffff) {
+ a.add(i);
+ } else if (i <= 0x10ffff) {
+ a.add(0xd800 + ((((i - 0x10000) >> 10) & 0x3ff)));
+ a.add(0xdc00 + (i & 0x3ff));
+ } else {
+ throw new ArgumentError(i);
+ }
+ }
+ return JS('String', r'String.fromCharCode.apply(#, #)', null, a);
+ }
+
static String stringFromCharCodes(charCodes) {
for (var i in charCodes) {
if (i is !int) throw new ArgumentError(i);
+ if (i < 0) throw new ArgumentError(i);
+ if (i > 0xffff) return stringFromCodePoints(charCodes);
}
return JS('String', r'String.fromCharCode.apply(#, #)', null, charCodes);
}
@@ -659,7 +676,6 @@
}
static valueFromDateString(str) {
- checkNull(str);
if (str is !String) throw new ArgumentError(str);
var value = JS('num', r'Date.parse(#)', str);
if (value.isNaN) throw new ArgumentError(str);
@@ -667,16 +683,14 @@
}
static getProperty(object, key) {
- checkNull(object);
- if (object is bool || object is num || object is String) {
+ if (object == null || object is bool || object is num || object is String) {
throw new ArgumentError(object);
}
return JS('var', '#[#]', object, key);
}
static void setProperty(object, key, value) {
- checkNull(object);
- if (object is bool || object is num || object is String) {
+ if (object == null || object is bool || object is num || object is String) {
throw new ArgumentError(object);
}
JS('void', '#[#] = #', object, key, value);
@@ -750,8 +764,6 @@
if (length == 0) {
return;
}
- checkNull(start); // TODO(ahe): This is not specified but co19 tests it.
- checkNull(length); // TODO(ahe): This is not specified but co19 tests it.
if (length is !int) throw new ArgumentError(length);
if (length < 0) throw new ArgumentError(length);
if (start is !int) throw new ArgumentError(start);
@@ -779,13 +791,12 @@
checkNull(object) {
- if (object == null) throw new NullPointerException();
+ if (object == null) throw new ArgumentError(null);
return object;
}
checkNum(value) {
if (value is !num) {
- checkNull(value);
throw new ArgumentError(value);
}
return value;
@@ -793,7 +804,6 @@
checkInt(value) {
if (value is !int) {
- checkNull(value);
throw new ArgumentError(value);
}
return value;
@@ -801,7 +811,6 @@
checkBool(value) {
if (value is !bool) {
- checkNull(value);
throw new ArgumentError(value);
}
return value;
@@ -809,7 +818,6 @@
checkString(value) {
if (value is !String) {
- checkNull(value);
throw new ArgumentError(value);
}
return value;
@@ -894,7 +902,7 @@
* object out of the wrapper again.
*/
$throw(ex) {
- if (ex == null) ex = const NullPointerException();
+ if (ex == null) ex = const NullThrownError();
var jsError = JS('var', r'new Error()');
JS('void', r'#.name = #', jsError, ex);
JS('void', r'#.description = #', jsError, ex);
@@ -954,11 +962,12 @@
// exception occurred.
var type = JS('var', r'#.type', ex);
var name = JS('var', r'#.arguments ? #.arguments[0] : ""', ex, ex);
- if (type == 'property_not_function' ||
+ if (contains(message, 'JSNull') ||
+ type == 'property_not_function' ||
type == 'called_non_callable' ||
type == 'non_object_property_call' ||
type == 'non_object_property_load') {
- return new NullPointerException();
+ return new NoSuchMethodError(null, name, [], {});
} else if (type == 'undefined_method') {
return new NoSuchMethodError('', name, [], {});
}
@@ -972,8 +981,8 @@
if (message.endsWith('is null') ||
message.endsWith('is undefined') ||
message.endsWith('is null or undefined')) {
- return new NullPointerException();
- } else if (message.contains(' is not a function') ||
+ return new NoSuchMethodError(null, '<unknown>', [], {});
+ } else if (contains(message, ' is not a function') ||
(ieErrorCode == 438 && ieFacilityNumber == 10)) {
// Examples:
// x.foo is not a function
@@ -992,7 +1001,7 @@
}
if (JS('bool', r'# instanceof RangeError', ex)) {
- if (message is String && message.contains('call stack')) {
+ if (message is String && contains(message, 'call stack')) {
return new StackOverflowError();
}
@@ -1114,6 +1123,42 @@
/**
* A metadata annotation describing the types instantiated by a native element.
+ *
+ * The annotation is valid on a native method and a field of a native class.
+ *
+ * By default, a field of a native class is seen as an instantiation point for
+ * all native classes that are a subtype of the field's type, and a native
+ * method is seen as an instantiation point fo all native classes that are a
+ * subtype of the method's return type, or the argument types of the declared
+ * type of the method's callback parameter.
+ *
+ * An @[Creates] annotation overrides the default set of instantiated types. If
+ * one or more @[Creates] annotations are present, the type of the native
+ * element is ignored, and the union of @[Creates] annotations is used instead.
+ * The names in the strings are resolved and the program will fail to compile
+ * with dart2js if they do not name types.
+ *
+ * The argument to [Creates] is a string. The string is parsed as the names of
+ * one or more types, separated by vertical bars `|`. There are some special
+ * names:
+ *
+ * * `=List`. This means 'exactly List', which is the JavaScript Array
+ * implementation of [List] and no other implementation.
+ *
+ * * `=Object`. This means 'exactly Object', which is a plain JavaScript object
+ * with properties and none of the subtypes of Object.
+ *
+ * Example: we may know that a method always returns a specific implementation:
+ *
+ * @Creates('_NodeList')
+ * List<Node> getElementsByTagName(String tag) native;
+ *
+ * Useful trick: A method can be marked as not instantiating any native classes
+ * with the annotation `@Creates('Null')`. This is useful for fields on native
+ * classes that are used only in Dart code.
+ *
+ * @Creates('Null')
+ * var _cachedFoo;
*/
class Creates {
final String types;
@@ -1123,6 +1168,23 @@
/**
* A metadata annotation describing the types returned or yielded by a native
* element.
+ *
+ * The annotation is valid on a native method and a field of a native class.
+ *
+ * By default, a native method or field is seen as returning or yielding all
+ * subtypes if the method return type or field type. This annotation allows a
+ * more precise set of types to be specified.
+ *
+ * See [Creates] for the syntax of the argument.
+ *
+ * Example: IndexedDB keys are numbers, strings and JavaScript Arrays of keys.
+ *
+ * @Returns('String|num|=List')
+ * dynamic key;
+ *
+ * // Equivalent:
+ * @Returns('String') @Returns('num') @Returns('=List')
+ * dynamic key;
*/
class Returns {
final String types;
@@ -1142,6 +1204,7 @@
}
setRuntimeTypeInfo(target, typeInfo) {
+ assert(typeInfo == null || isJsArray(typeInfo));
// We have to check for null because factories may return null.
if (target != null) JS('var', r'#.builtin$typeInfo = #', target, typeInfo);
}
@@ -1486,15 +1549,33 @@
final String typeName;
TypeImpl(this.typeName);
toString() => typeName;
+ int get hashCode => typeName.hashCode;
bool operator ==(other) {
if (other is !TypeImpl) return false;
return typeName == other.typeName;
}
}
+String getClassName(var object) {
+ return JS('String', r'#.constructor.builtin$cls', object);
+}
+
String getRuntimeTypeString(var object) {
+ String className = isJsArray(object) ? 'List' : getClassName(object);
var typeInfo = JS('var', r'#.builtin$typeInfo', object);
- return JS('String', r'#.runtimeType', typeInfo);
+ if (typeInfo == null) return className;
+ StringBuffer arguments = new StringBuffer();
+ for (var i = 0; i < typeInfo.length; i++) {
+ if (i > 0) {
+ arguments.add(', ');
+ }
+ var argument = typeInfo[i];
+ if (argument == null) {
+ argument = 'dynamic';
+ }
+ arguments.add(argument);
+ }
+ return '$className<$arguments>';
}
createRuntimeType(String name) => new TypeImpl(name);
diff --git a/sdk/lib/_internal/compiler/implementation/lib/js_number.dart b/sdk/lib/_internal/compiler/implementation/lib/js_number.dart
new file mode 100644
index 0000000..e8e5750
--- /dev/null
+++ b/sdk/lib/_internal/compiler/implementation/lib/js_number.dart
@@ -0,0 +1,137 @@
+// Copyright (c) 2012, 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.
+
+part of _interceptors;
+
+/**
+ * The super interceptor class for [JSInt] and [JSDouble]. The compiler
+ * recognizes this class as an interceptor, and changes references to
+ * [:this:] to actually use the receiver of the method, which is
+ * generated as an extra argument added to each member.
+ */
+class JSNumber {
+ const JSNumber();
+
+ int compareTo(num b) {
+ if (b is! num) throw new ArgumentError(b);
+ if (this < b) {
+ return -1;
+ } else if (this > b) {
+ return 1;
+ } else if (this == b) {
+ if (this == 0) {
+ bool bIsNegative = b.isNegative;
+ if (isNegative == bIsNegative) return 0;
+ if (isNegative) return -1;
+ return 1;
+ }
+ return 0;
+ } else if (isNaN) {
+ if (b.isNaN) {
+ return 0;
+ }
+ return 1;
+ } else {
+ return -1;
+ }
+ }
+
+ bool get isNegative => (this == 0) ? (1 / this) < 0 : this < 0;
+
+ bool get isNaN => JS('bool', r'isNaN(#)', this);
+
+ num remainder(num b) {
+ checkNull(b); // TODO(ngeoffray): This is not specified but co19 tests it.
+ if (b is! num) throw new ArgumentError(b);
+ return JS('num', r'# % #', this, b);
+ }
+
+ num abs() => JS('num', r'Math.abs(#)', this);
+
+ int toInt() {
+ if (isNaN) throw new FormatException('NaN');
+ if (isInfinite) throw new FormatException('Infinity');
+ num truncated = truncate();
+ return JS('bool', r'# == -0.0', truncated) ? 0 : truncated;
+ }
+
+ num ceil() => JS('num', r'Math.ceil(#)', this);
+
+ num floor() => JS('num', r'Math.floor(#)', this);
+
+ bool get isInfinite {
+ return JS('bool', r'# == Infinity', this)
+ || JS('bool', r'# == -Infinity', this);
+ }
+
+ num round() {
+ if (this < 0) {
+ return JS('num', r'-Math.round(-#)', this);
+ } else {
+ return JS('num', r'Math.round(#)', this);
+ }
+ }
+
+ double toDouble() => this;
+
+ num truncate() => this < 0 ? ceil() : floor();
+
+ String toStringAsFixed(int fractionDigits) {
+ checkNum(fractionDigits);
+ String result = JS('String', r'#.toFixed(#)', this, fractionDigits);
+ if (this == 0 && isNegative) return "-$result";
+ return result;
+ }
+
+ String toStringAsExponential(int fractionDigits) {
+ String result;
+ if (fractionDigits != null) {
+ checkNum(fractionDigits);
+ result = JS('String', r'#.toExponential(#)', this, fractionDigits);
+ } else {
+ result = JS('String', r'#.toExponential()', this);
+ }
+ if (this == 0 && isNegative) return "-$result";
+ return result;
+ }
+
+ String toStringAsPrecision(int fractionDigits) {
+ checkNum(fractionDigits);
+ String result = JS('String', r'#.toPrecision(#)',
+ this, fractionDigits);
+ if (this == 0 && isNegative) return "-$result";
+ return result;
+ }
+
+ String toRadixString(int radix) {
+ checkNum(radix);
+ if (radix < 2 || radix > 36) throw new ArgumentError(radix);
+ return JS('String', r'#.toString(#)', this, radix);
+ }
+
+ String toString() {
+ if (this == 0 && JS('bool', '(1 / #) < 0', this)) {
+ return '-0.0';
+ } else {
+ return JS('String', r'String(#)', this);
+ }
+ }
+
+ int get hashCode => this & 0x1FFFFFFF;
+}
+
+class JSInt extends JSNumber {
+ const JSInt();
+
+ bool get isEven => (this & 1) == 0;
+
+ bool get isOdd => (this & 1) == 1;
+
+ Type get runtimeType => int;
+}
+
+class JSDouble extends JSNumber {
+ const JSDouble();
+ Type get runtimeType => double;
+}
diff --git a/sdk/lib/_internal/compiler/implementation/lib/js_string.dart b/sdk/lib/_internal/compiler/implementation/lib/js_string.dart
index d796ef2..c8bb16c 100644
--- a/sdk/lib/_internal/compiler/implementation/lib/js_string.dart
+++ b/sdk/lib/_internal/compiler/implementation/lib/js_string.dart
@@ -89,8 +89,71 @@
List<int> get charCodes {
List<int> result = new List<int>(length);
for (int i = 0; i < length; i++) {
- result[i] = charCodeAt(i);
+ result[i] = JS('int', '#.charCodeAt(#)', this, i);
}
return result;
}
+
+ int indexOf(String other, [int start = 0]) {
+ checkNull(other);
+ if (start is !int) throw new ArgumentError(start);
+ if (other is !String) throw new ArgumentError(other);
+ if (start < 0) return -1;
+ return JS('int', r'#.indexOf(#, #)', this, other, start);
+ }
+
+ int lastIndexOf(String other, [int start]) {
+ checkNull(other);
+ if (other is !String) throw new ArgumentError(other);
+ if (start != null) {
+ if (start is !num) throw new ArgumentError(start);
+ if (start < 0) return -1;
+ if (start >= length) {
+ if (other == "") return length;
+ start = length - 1;
+ }
+ } else {
+ start = length - 1;
+ }
+ return stringLastIndexOfUnchecked(this, other, start);
+ }
+
+ bool contains(String other, [int startIndex = 0]) {
+ checkNull(other);
+ return stringContainsUnchecked(this, other, startIndex);
+ }
+
+ bool get isEmpty => length == 0;
+
+ int compareTo(String other) {
+ if (other is !String) throw new ArgumentError(other);
+ return this == other ? 0
+ : JS('bool', r'# < #', this, other) ? -1 : 1;
+ }
+
+ String toString() => this;
+
+ /**
+ * This is the [Jenkins hash function][1] but using masking to keep
+ * values in SMI range.
+ *
+ * [1]: http://en.wikipedia.org/wiki/Jenkins_hash_function
+ */
+ int get hashCode {
+ // TODO(ahe): This method shouldn't have to use JS. Update when our
+ // optimizations are smarter.
+ int hash = 0;
+ for (int i = 0; i < length; i++) {
+ hash = 0x1fffffff & (hash + JS('int', r'#.charCodeAt(#)', this, i));
+ hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10));
+ hash = JS('int', '# ^ (# >> 6)', hash, hash);
+ }
+ hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3));
+ hash = JS('int', '# ^ (# >> 11)', hash, hash);
+ return 0x1fffffff & (hash + ((0x00003fff & hash) << 15));
+ }
+
+ Type get runtimeType => String;
+
+ int get length => JS('int', r'#.length', this);
}
diff --git a/sdk/lib/_internal/compiler/implementation/lib/native_helper.dart b/sdk/lib/_internal/compiler/implementation/lib/native_helper.dart
index f6ee855..98eea02 100644
--- a/sdk/lib/_internal/compiler/implementation/lib/native_helper.dart
+++ b/sdk/lib/_internal/compiler/implementation/lib/native_helper.dart
@@ -42,12 +42,14 @@
String typeNameInFirefox(obj) {
String name = JS('String', '#', constructorNameFallback(obj));
if (name == 'Window') return 'DOMWindow';
- if (name == 'XMLDocument') return 'Document';
- if (name == 'WorkerMessageEvent') return 'MessageEvent';
- if (name == 'DragEvent') return 'MouseEvent';
+ if (name == 'CSS2Properties') return 'CSSStyleDeclaration';
if (name == 'DataTransfer') return 'Clipboard';
+ if (name == 'DragEvent') return 'MouseEvent';
+ if (name == 'GeoGeolocation') return 'Geolocation';
if (name == 'MouseScrollEvent') return 'WheelEvent';
if (name == 'OfflineResourceList') return 'DOMApplicationCache';
+ if (name == 'WorkerMessageEvent') return 'MessageEvent';
+ if (name == 'XMLDocument') return 'Document';
return name;
}
@@ -71,6 +73,7 @@
if (name == 'HTMLPhraseElement') return 'HTMLElement';
if (name == 'MSStyleCSSProperties') return 'CSSStyleDeclaration';
if (name == 'MouseWheelEvent') return 'WheelEvent';
+ if (name == 'Position') return 'Geoposition';
return name;
}
diff --git a/sdk/lib/_internal/compiler/implementation/mirrors/dart2js_mirror.dart b/sdk/lib/_internal/compiler/implementation/mirrors/dart2js_mirror.dart
index 825498e..5d4f253 100644
--- a/sdk/lib/_internal/compiler/implementation/mirrors/dart2js_mirror.dart
+++ b/sdk/lib/_internal/compiler/implementation/mirrors/dart2js_mirror.dart
@@ -195,6 +195,11 @@
// TODO(johnniwinther): implement this.
throw 'unimplemented';
}
+
+ void onDeprecatedFeature(Spannable span, String feature) {
+ // TODO(johnniwinther): implement this?
+ throw 'unimplemented';
+ }
}
//------------------------------------------------------------------------------
@@ -380,7 +385,8 @@
librariesUri.add(cwd.resolve(library.toString()));
// TODO(johnniwinther): Detect file not found
}
- _compiler.runList(librariesUri);
+ LibraryCompiler libraryCompiler = _compiler;
+ libraryCompiler.runList(librariesUri);
}
MirrorSystem get mirrors => new Dart2JsMirrorSystem(_compiler);
@@ -1163,7 +1169,7 @@
List<TypeMirror> get typeArguments {
if (_typeArguments == null) {
_typeArguments = <TypeMirror>[];
- Link<DartType> type = _interfaceType.arguments;
+ Link<DartType> type = _interfaceType.typeArguments;
while (type != null && type.head != null) {
_typeArguments.add(_convertTypeToTypeMirror(mirrors, type.head,
mirrors.compiler.types.dynamicType));
diff --git a/sdk/lib/_internal/compiler/implementation/native_handler.dart b/sdk/lib/_internal/compiler/implementation/native_handler.dart
index 038fbdd..0c1579b 100644
--- a/sdk/lib/_internal/compiler/implementation/native_handler.dart
+++ b/sdk/lib/_internal/compiler/implementation/native_handler.dart
@@ -63,7 +63,7 @@
}
-class NativeEnqueuerBase implements NativeEnqueuer {
+abstract class NativeEnqueuerBase implements NativeEnqueuer {
/**
* The set of all native classes. Each native class is in [nativeClasses] and
@@ -303,8 +303,8 @@
super.processNativeClasses(libraries);
// HACK HACK - add all the resolved classes.
- for (final classElement
- in compiler.enqueuer.resolution.nativeEnqueuer.registeredClasses) {
+ NativeEnqueuerBase enqueuer = compiler.enqueuer.resolution.nativeEnqueuer;
+ for (final classElement in enqueuer.registeredClasses) {
if (unusedClasses.contains(classElement)) {
enqueueClass(classElement, 'was resolved');
}
@@ -382,10 +382,10 @@
class NativeBehavior {
/// [DartType]s or [SpecialType]s returned or yielded by the native element.
- final Collection typesReturned = [];
+ final List typesReturned = [];
/// [DartType]s or [SpecialType]s instantiated by the native element.
- final Collection typesInstantiated = [];
+ final List typesInstantiated = [];
static final NativeBehavior NONE = new NativeBehavior();
@@ -432,8 +432,8 @@
compiler.cancel("Unexpected JS first argument", node: firstArg);
}
- static NativeBehavior ofMethod(Element method, Compiler compiler) {
- DartType type = method.computeType(compiler);
+ static NativeBehavior ofMethod(FunctionElement method, Compiler compiler) {
+ FunctionType type = method.computeType(compiler);
var behavior = new NativeBehavior();
behavior.typesReturned.add(type.returnType);
behavior._capture(type, compiler);
@@ -479,14 +479,11 @@
return e.computeType(compiler);
}
- var creates =
- _collect(element, compiler,
- compiler.enqueuer.resolution.nativeEnqueuer.annotationCreatesClass,
- lookup);
- var returns =
- _collect(element, compiler,
- compiler.enqueuer.resolution.nativeEnqueuer.annotationReturnsClass,
- lookup);
+ NativeEnqueuerBase enqueuer = compiler.enqueuer.resolution.nativeEnqueuer;
+ var creates = _collect(element, compiler, enqueuer.annotationCreatesClass,
+ lookup);
+ var returns = _collect(element, compiler, enqueuer.annotationReturnsClass,
+ lookup);
if (creates != null) {
typesInstantiated..clear()..addAll(creates);
@@ -516,8 +513,9 @@
var fields = value.fields;
// TODO(sra): Better validation of the constant.
if (fields.length != 1 || fields[0] is! StringConstant) {
+ PartialMetadataAnnotation partial = annotation;
compiler.cancel(
- 'Annotations needs one string: ${annotation.parseNode(compiler)}');
+ 'Annotations needs one string: ${partial.parseNode(compiler)}');
}
String specString = fields[0].toDartString().slowToString();
for (final typeString in specString.split('|')) {
diff --git a/sdk/lib/_internal/compiler/implementation/resolution/members.dart b/sdk/lib/_internal/compiler/implementation/resolution/members.dart
index d2c8c11..713a03c 100644
--- a/sdk/lib/_internal/compiler/implementation/resolution/members.dart
+++ b/sdk/lib/_internal/compiler/implementation/resolution/members.dart
@@ -1038,6 +1038,18 @@
TypeResolver(this.compiler);
+ bool anyMalformedTypesInThere(Link<DartType> list) {
+ for (Link<DartType> link = list;
+ !link.isEmpty;
+ link = link.tail) {
+ DartType dtype = link.head;
+ if (dtype is MalformedType) {
+ return true;
+ }
+ }
+ return false;
+ }
+
Element resolveTypeName(Scope scope, TypeAnnotation node) {
Identifier typeName = node.typeName.asIdentifier();
Send send = node.typeName.asSend();
@@ -1081,6 +1093,7 @@
DartType resolveTypeAnnotation(
TypeAnnotation node,
Scope scope,
+ bool inStaticContext,
{onFailure(Node node, MessageKind kind, [List arguments]),
whenResolved(Node node, DartType type)}) {
if (onFailure == null) {
@@ -1092,11 +1105,12 @@
if (scope == null) {
compiler.internalError('resolveTypeAnnotation: no scope specified');
}
- return resolveTypeAnnotationInContext(scope, node, onFailure,
- whenResolved);
+ return resolveTypeAnnotationInContext(scope, node, inStaticContext,
+ onFailure, whenResolved);
}
DartType resolveTypeAnnotationInContext(Scope scope, TypeAnnotation node,
+ bool inStaticContext,
onFailure, whenResolved) {
Element element = resolveTypeName(scope, node);
DartType type;
@@ -1115,13 +1129,21 @@
ClassElement cls = element;
cls.ensureResolved(compiler);
Link<DartType> arguments =
- resolveTypeArguments(node, cls.typeVariables, scope,
+ resolveTypeArguments(node, cls.typeVariables,
+ inStaticContext, scope,
onFailure, whenResolved);
if (cls.typeVariables.isEmpty && arguments.isEmpty) {
// Use the canonical type if it has no type parameters.
type = cls.computeType(compiler);
} else {
- type = new InterfaceType(cls, arguments);
+ // In checked mode malformed-ness of the type argument bubbles up.
+ if (anyMalformedTypesInThere(arguments) &&
+ compiler.enableTypeAssertions) {
+ type = new MalformedType(
+ new MalformedTypeElement(node, element));
+ } else {
+ type = new InterfaceType(cls.declaration, arguments);
+ }
}
} else if (element.isTypedef()) {
TypedefElement typdef = element;
@@ -1129,7 +1151,7 @@
compiler.resolveTypedef(typdef);
typdef.computeType(compiler);
Link<DartType> arguments = resolveTypeArguments(
- node, typdef.typeVariables,
+ node, typdef.typeVariables, inStaticContext,
scope, onFailure, whenResolved);
if (typdef.typeVariables.isEmpty && arguments.isEmpty) {
// Return the canonical type if it has no type parameters.
@@ -1138,7 +1160,14 @@
type = new TypedefType(typdef, arguments);
}
} else if (element.isTypeVariable()) {
- type = element.computeType(compiler);
+ if (inStaticContext) {
+ compiler.reportWarning(node,
+ MessageKind.TYPE_VARIABLE_WITHIN_STATIC_MEMBER.message(
+ [element]));
+ type = new MalformedType(new MalformedTypeElement(node, element));
+ } else {
+ type = element.computeType(compiler);
+ }
} else {
compiler.cancel("unexpected element kind ${element.kind}",
node: node);
@@ -1150,6 +1179,7 @@
Link<DartType> resolveTypeArguments(TypeAnnotation node,
Link<DartType> typeVariables,
+ bool inStaticContext,
Scope scope, onFailure, whenResolved) {
if (node.typeArguments == null) {
return const Link<DartType>();
@@ -1163,6 +1193,7 @@
}
DartType argType = resolveTypeAnnotationInContext(scope,
typeArguments.head,
+ inStaticContext,
onFailure,
whenResolved);
arguments.addLast(argType);
@@ -1507,6 +1538,8 @@
scope = oldScope;
enclosingElement = previousEnclosingElement;
+
+ world.registerInstantiatedClass(compiler.functionClass);
}
visitIf(If node) {
@@ -1882,18 +1915,14 @@
world.registerStaticUse(target.declaration);
}
}
- if (target == null) {
- // If we haven't found an element for this send, it might be a
- // dynamic send on a primitive value. Register the selector with
- // the world to add an interceptor, if necessary.
- world.registerUsedSelector(selector);
- }
}
visitLiteralInt(LiteralInt node) {
+ world.registerInstantiatedClass(compiler.intClass);
}
visitLiteralDouble(LiteralDouble node) {
+ world.registerInstantiatedClass(compiler.doubleClass);
}
visitLiteralBool(LiteralBool node) {
@@ -1932,7 +1961,7 @@
void handleRedirectingFactoryBody(Return node) {
Element redirectionTarget = resolveRedirectingFactory(node);
var type = mapping.getType(node.expression);
- if (type is InterfaceType && !type.arguments.isEmpty) {
+ if (type is InterfaceType && !type.typeArguments.isEmpty) {
unimplemented(node.expression, 'type arguments on redirecting factory');
}
useElement(node.expression, redirectionTarget);
@@ -2052,28 +2081,17 @@
argument.element.enclosingElement);
} else if (argument is InterfaceType) {
InterfaceType type = argument;
- type.arguments.forEach((DartType argument) {
+ type.typeArguments.forEach((DartType argument) {
analyzeTypeArgument(type, argument);
});
}
}
DartType resolveTypeAnnotation(TypeAnnotation node) {
- // TODO(johnniwinther): Remove this together with the named arguments
- // on [TypeResolver.resolveTypeAnnotation].
- void checkAndUseType(TypeAnnotation annotation, DartType type) {
- useType(annotation, type);
- if (type != null &&
- identical(type.kind, TypeKind.TYPE_VARIABLE) &&
- enclosingElement.isInStaticMember()) {
- warning(annotation, MessageKind.TYPE_VARIABLE_WITHIN_STATIC_MEMBER,
- [type]);
- }
- }
-
Function report = typeRequired ? error : warning;
DartType type = typeResolver.resolveTypeAnnotation(
- node, scope, onFailure: report, whenResolved: checkAndUseType);
+ node, scope, enclosingElement.isInStaticMember(),
+ onFailure: report, whenResolved: useType);
if (type == null) return null;
if (inCheckContext) {
compiler.enqueuer.resolution.registerIsCheck(type);
@@ -2081,7 +2099,7 @@
if (typeRequired || inCheckContext) {
if (type is InterfaceType) {
InterfaceType itf = type;
- itf.arguments.forEach((DartType argument) {
+ itf.typeArguments.forEach((DartType argument) {
analyzeTypeArgument(type, argument);
});
}
@@ -2440,7 +2458,8 @@
TypeVariableElement variableElement = typeVariable.element;
if (typeNode.bound != null) {
DartType boundType = typeResolver.resolveTypeAnnotation(
- typeNode.bound, scope, onFailure: warning);
+ typeNode.bound, scope, element.isInStaticMember(),
+ onFailure: warning);
if (boundType != null && boundType.element == variableElement) {
// TODO(johnniwinther): Check for more general cycles, like
// [: <A extends B, B extends C, C extends B> :].
diff --git a/sdk/lib/_internal/compiler/implementation/resolved_visitor.dart b/sdk/lib/_internal/compiler/implementation/resolved_visitor.dart
index e53a3ff..1de6a79 100644
--- a/sdk/lib/_internal/compiler/implementation/resolved_visitor.dart
+++ b/sdk/lib/_internal/compiler/implementation/resolved_visitor.dart
@@ -60,7 +60,7 @@
R visitDynamicSend(Send node);
R visitForeignSend(Send node);
R visitStaticSend(Send node);
- abstract R visitTypeReferenceSend(Send node);
+ R visitTypeReferenceSend(Send node);
void internalError(String reason, {Node node});
diff --git a/sdk/lib/_internal/compiler/implementation/runtime_types.dart b/sdk/lib/_internal/compiler/implementation/runtime_types.dart
deleted file mode 100644
index 3f7967a..0000000
--- a/sdk/lib/_internal/compiler/implementation/runtime_types.dart
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright (c) 2012, 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 runtime_types;
-
-import 'dart2jslib.dart';
-import 'elements/elements.dart';
-import 'tree/tree.dart';
-import 'universe/universe.dart';
-import 'util/util.dart';
-
-class RuntimeTypeInformation {
- /**
- * Names used for elements in runtime type information. This map is kept to
- * detect elements with the same name and use a different name instead.
- */
- final Map<String, Element> usedNames = new Map<String, Element>();
-
- /** Get a unique name for the element. */
- String getName(Element element) {
- String guess = element.name.slowToString();
- String name = guess;
- int id = 0;
- while (usedNames.containsKey(name) && usedNames[name] != element) {
- name = '$guess@$id';
- id++;
- }
- usedNames[name] = element;
- return name;
- }
-
- bool hasTypeArguments(DartType type) {
- if (type is InterfaceType) {
- InterfaceType interfaceType = type;
- return !interfaceType.arguments.isEmpty;
- }
- return false;
- }
-
- /**
- * Map type variables to strings calling [:stringify:] and joins the results
- * to a single string separated by commas.
- * The argument [:hasValue:] is used to treat variables that will not receive
- * a value at the use site of the code that is generated with this function.
- */
- static String stringifyTypeVariables(Link collection,
- int numberOfInputs,
- stringify(TypeVariableType variable,
- bool hasValue)) {
- int currentVariable = 0;
- bool isFirst = true;
- StringBuffer buffer = new StringBuffer();
- collection.forEach((TypeVariableType variable) {
- if (!isFirst) buffer.add(", ");
- bool hasValue = currentVariable < numberOfInputs;
- buffer.add(stringify(variable, hasValue));
- isFirst = false;
- currentVariable++;
- });
- return buffer.toString();
- }
-
- /**
- * Generate a string representation template for this element, using '#' to
- * denote the place for the type argument input. If there are more type
- * variables than [numberOfInputs], 'dynamic' is used as the value for these
- * arguments.
- */
- String generateRuntimeTypeString(ClassElement element, int numberOfInputs) {
- String elementName = getName(element);
- if (element.typeVariables.isEmpty) return "$elementName";
- String stringify(_, bool hasValue) => hasValue ? "' + # + '" : "dynamic";
- String arguments = stringifyTypeVariables(element.typeVariables,
- numberOfInputs,
- stringify);
- return "$elementName<$arguments>";
- }
-
- /**
- * Generate a string template for the runtime type fields that contain the
- * type descriptions of the reified type arguments, using '#' to denote the
- * place for the type argument value, or [:null:] if there are more than
- * [numberOfInputs] type variables.
- */
- static String generateTypeVariableString(ClassElement element,
- int numberOfInputs) {
- String stringify(TypeVariableType variable, bool hasValue) {
- return "'${variable.name.slowToString()}': #";
- }
- return stringifyTypeVariables(element.typeVariables, numberOfInputs,
- stringify);
- }
-}
diff --git a/sdk/lib/_internal/compiler/implementation/scanner/listener.dart b/sdk/lib/_internal/compiler/implementation/scanner/listener.dart
index 783be1c..e8a15aa 100644
--- a/sdk/lib/_internal/compiler/implementation/scanner/listener.dart
+++ b/sdk/lib/_internal/compiler/implementation/scanner/listener.dart
@@ -641,7 +641,7 @@
return result;
}
- LiteralString popLiteralString() {
+ StringNode popLiteralString() {
StringNode node = popNode();
// TODO(lrn): Handle interpolations in script tags.
if (node.isInterpolation) {
@@ -671,7 +671,7 @@
if (asKeyword != null) {
prefix = popNode();
}
- LiteralString uri = popLiteralString();
+ StringNode uri = popLiteralString();
addLibraryTag(new Import(importKeyword, uri, prefix, combinators));
}
@@ -703,7 +703,7 @@
}
void endPart(Token partKeyword, Token semicolon) {
- LiteralString uri = popLiteralString();
+ StringNode uri = popLiteralString();
addLibraryTag(new Part(partKeyword, uri));
}
diff --git a/sdk/lib/_internal/compiler/implementation/source_map_builder.dart b/sdk/lib/_internal/compiler/implementation/source_map_builder.dart
index 06a6ca0..498c9fb 100644
--- a/sdk/lib/_internal/compiler/implementation/source_map_builder.dart
+++ b/sdk/lib/_internal/compiler/implementation/source_map_builder.dart
@@ -57,9 +57,9 @@
buffer.add('[');
for (String string in strings) {
if (!first) buffer.add(',');
- buffer.add("'");
- writeJsonEscapedCharsOn(string.charCodes.iterator(), buffer, null);
- buffer.add("'");
+ buffer.add('"');
+ writeJsonEscapedCharsOn(string, buffer);
+ buffer.add('"');
first = false;
}
buffer.add(']');
diff --git a/sdk/lib/_internal/compiler/implementation/ssa/bailout.dart b/sdk/lib/_internal/compiler/implementation/ssa/bailout.dart
index e6423cd..a001ad5 100644
--- a/sdk/lib/_internal/compiler/implementation/ssa/bailout.dart
+++ b/sdk/lib/_internal/compiler/implementation/ssa/bailout.dart
@@ -16,12 +16,12 @@
*/
class Environment {
final Set<HInstruction> lives;
- final Set<HBasicBlock> loopMarkers;
+ final List<HBasicBlock> loopMarkers;
Environment() : lives = new Set<HInstruction>(),
- loopMarkers = new Set<HBasicBlock>();
+ loopMarkers = new List<HBasicBlock>();
Environment.from(Environment other)
: lives = new Set<HInstruction>.from(other.lives),
- loopMarkers = new Set<HBasicBlock>.from(other.loopMarkers);
+ loopMarkers = new List<HBasicBlock>.from(other.loopMarkers);
void remove(HInstruction instruction) {
lives.remove(instruction);
@@ -48,17 +48,8 @@
}
}
- void addLoopMarker(HBasicBlock block) {
- loopMarkers.add(block);
- }
-
- void removeLoopMarker(HBasicBlock block) {
- loopMarkers.remove(block);
- }
-
void addAll(Environment other) {
lives.addAll(other.lives);
- loopMarkers.addAll(other.loopMarkers);
}
bool get isEmpty => lives.isEmpty && loopMarkers.isEmpty;
@@ -257,10 +248,15 @@
final Map<HBailoutTarget, Environment> capturedEnvironments;
final Map<HBasicBlock, Environment> liveInstructions;
Environment environment;
+ /**
+ * The set of current loop headers that dominate the current block.
+ */
+ Set<HBasicBlock> loopMarkers;
SsaEnvironmentBuilder(Compiler this.compiler)
: capturedEnvironments = new Map<HBailoutTarget, Environment>(),
- liveInstructions = new Map<HBasicBlock, Environment>();
+ liveInstructions = new Map<HBasicBlock, Environment>(),
+ loopMarkers = new Set<HBasicBlock>();
void visitGraph(HGraph graph) {
@@ -290,9 +286,9 @@
// in this case {x}.
capturedEnvironments.forEach((ignoredInstruction, env) {
env.loopMarkers.forEach((HBasicBlock header) {
- env.removeLoopMarker(header);
env.addAll(liveInstructions[header]);
});
+ env.loopMarkers.clear();
});
}
@@ -310,7 +306,8 @@
// If we haven't computed the liveInstructions of that successor, we
// know it must be a loop header.
assert(successor.isLoopHeader());
- environment.addLoopMarker(successor);
+ assert(!block.isLoopHeader());
+ loopMarkers.add(successor);
}
int index = successor.predecessors.indexOf(block);
@@ -319,6 +316,15 @@
}
}
+ if (block.isLoopHeader()) {
+ loopMarkers.remove(block);
+ }
+
+ // If the block is a loop header, we're adding all [loopMarkers]
+ // after removing it from the list of [loopMarkers], because
+ // it will just recompute the loop phis.
+ environment.loopMarkers.addAll(loopMarkers);
+
// Iterate over all instructions to remove an instruction from the
// environment and add its inputs.
HInstruction instruction = block.last;
@@ -333,12 +339,6 @@
environment.remove(phi);
}
- // If the block is a loop header, we can remove the loop marker,
- // because it will just recompute the loop phis.
- if (block.isLoopHeader()) {
- environment.removeLoopMarker(block);
- }
-
// Finally save the liveInstructions of that block.
liveInstructions[block] = environment;
}
diff --git a/sdk/lib/_internal/compiler/implementation/ssa/builder.dart b/sdk/lib/_internal/compiler/implementation/ssa/builder.dart
index b6137f2..cefee59 100644
--- a/sdk/lib/_internal/compiler/implementation/ssa/builder.dart
+++ b/sdk/lib/_internal/compiler/implementation/ssa/builder.dart
@@ -4,6 +4,21 @@
part of ssa;
+/**
+ * A special element for the extra parameter taken by intercepted
+ * methods. We need to override [Element.computeType] because our
+ * optimizers may look at its declared type.
+ */
+class InterceptedElement extends Element {
+ final HType ssaType;
+ InterceptedElement(this.ssaType, Element enclosing)
+ : super(const SourceString('receiver'),
+ ElementKind.PARAMETER,
+ enclosing);
+
+ DartType computeType(Compiler compiler) => ssaType.computeType(compiler);
+}
+
class Interceptors {
Compiler compiler;
Interceptors(Compiler this.compiler);
@@ -45,38 +60,13 @@
compiler.unimplemented('Unknown operator', node: op);
}
- Element getStaticInterceptor(Selector selector) {
- // Check if we have an interceptor method implemented with
- // interceptor classes.
+ /**
+ * Returns a set of interceptor classes that contain a member whose
+ * signature matches the given [selector].
+ */
+ Set<ClassElement> getInterceptedClassesOn(Selector selector) {
JavaScriptBackend backend = compiler.backend;
- if (backend.shouldInterceptSelector(selector)) {
- return backend.getInterceptorMethod;
- }
-
- // Fall back to the old interceptor mechanism.
- String name = selector.name.slowToString();
- if (selector.isGetter()) {
- // TODO(lrn): If there is no get-interceptor, but there is a
- // method-interceptor, we should generate a get-interceptor automatically.
- String mangledName = "get\$$name";
- return compiler.findInterceptor(new SourceString(mangledName));
- } else if (selector.isSetter()) {
- String mangledName = "set\$$name";
- return compiler.findInterceptor(new SourceString(mangledName));
- } else {
- Element element = compiler.findInterceptor(new SourceString(name));
- if (element != null && element.isFunction()) {
- // Only pick the function element with the short name if the
- // number of parameters it expects matches the number we're
- // passing modulo the receiver.
- FunctionElement function = element;
- if (function.parameterCount(compiler) == selector.argumentCount + 1) {
- return element;
- }
- }
- String longMangledName = "$name\$${selector.argumentCount}";
- return compiler.findInterceptor(new SourceString(longMangledName));
- }
+ return backend.getInterceptedClassesOn(selector);
}
Element getOperatorInterceptor(Operator op) {
@@ -339,13 +329,16 @@
scopeData.capturedVariableMapping.forEach((Element from, Element to) {
// The [from] can only be a parameter for function-scopes and not
// loop scopes.
- if (from.isParameter()) {
- // Store the captured parameter in the box. Get the current value
- // before we put the redirection in place.
- HInstruction instruction = readLocal(from);
- redirectElement(from, to);
+ if (from.isParameter() && !element.isGenerativeConstructorBody()) {
// Now that the redirection is set up, the update to the local will
// write the parameter value into the box.
+ // Store the captured parameter in the box. Get the current value
+ // before we put the redirection in place.
+ // We don't need to update the local for a generative
+ // constructor body, because it receives a box that already
+ // contains the updates as the last parameter.
+ HInstruction instruction = readLocal(from);
+ redirectElement(from, to);
updateLocal(from, instruction);
} else {
redirectElement(from, to);
@@ -389,6 +382,16 @@
FunctionElement functionElement = element;
FunctionSignature params = functionElement.computeSignature(compiler);
params.orderedForEachParameter((Element parameterElement) {
+ if (element.isGenerativeConstructorBody()) {
+ ClosureScope scopeData = closureData.capturingScopes[node];
+ if (scopeData != null
+ && scopeData.capturedVariableMapping.containsKey(
+ parameterElement)) {
+ // The parameter will be a field in the box passed as the
+ // last parameter. So no need to have it.
+ return;
+ }
+ }
HInstruction parameter = builder.addParameter(parameterElement);
builder.parameters[parameterElement] = parameter;
directLocals[parameterElement] = parameter;
@@ -424,13 +427,32 @@
directLocals[closureData.thisElement] = builder.thisInstruction;
}
- if (builder.backend.isInterceptorClass(element.getEnclosingClass())) {
- Element parameter = new Element(
- const SourceString('receiver'), ElementKind.VARIABLE, element);
+ // If this method is an intercepted method, add the extra
+ // parameter to it, that is the actual receiver.
+ ClassElement cls = element.getEnclosingClass();
+ if (builder.backend.isInterceptorClass(cls)) {
+ HType type = HType.UNKNOWN;
+ if (cls == builder.backend.jsArrayClass) {
+ type = HType.READABLE_ARRAY;
+ } else if (cls == builder.backend.jsStringClass) {
+ type = HType.STRING;
+ } else if (cls == builder.backend.jsNumberClass) {
+ type = HType.NUMBER;
+ } else if (cls == builder.backend.jsIntClass) {
+ type = HType.INTEGER;
+ } else if (cls == builder.backend.jsDoubleClass) {
+ type = HType.DOUBLE;
+ } else if (cls == builder.backend.jsNullClass) {
+ type = HType.NULL;
+ } else if (cls == builder.backend.jsBoolClass) {
+ type = HType.BOOLEAN;
+ }
+ Element parameter = new InterceptedElement(type, element);
HParameterValue value = new HParameterValue(parameter);
builder.graph.entry.addAfter(
directLocals[closureData.thisElement], value);
directLocals[closureData.thisElement] = value;
+ value.guaranteedType = type;
}
}
@@ -943,7 +965,7 @@
parameters = new Map<Element, HInstruction>(),
sourceElementStack = <Element>[work.element],
inliningStack = <InliningState>[],
- rti = builder.compiler.codegenWorld.rti,
+ rti = builder.backend.rti,
super(work.resolutionTree) {
localsHandler = new LocalsHandler(this);
}
@@ -1431,12 +1453,11 @@
FunctionSignature functionSignature = body.computeSignature(compiler);
int arity = functionSignature.parameterCount;
functionSignature.orderedForEachParameter((parameter) {
- // TODO(ngeoffray): No need to pass the parameters that are
- // captured and stored in a box. Because this information is
- // not trivial to get in codegen.dart, we just pass the
- // parameters anyway. We need to update both codegen.dart and
- // builder.dart on how parameters are being passed.
- bodyCallInputs.add(localsHandler.readLocal(parameter));
+ if (!localsHandler.isBoxed(parameter)) {
+ // The parameter will be a field in the box passed as the
+ // last parameter. So no need to pass it.
+ bodyCallInputs.add(localsHandler.readLocal(parameter));
+ }
});
// If parameters are checked, we pass the already computed
@@ -1561,11 +1582,22 @@
// because that is where the type guards will also be inserted.
// This way we ensure that a type guard will dominate the type
// check.
- signature.orderedForEachParameter((Element element) {
+ signature.orderedForEachParameter((Element parameterElement) {
+ if (element.isGenerativeConstructorBody()) {
+ ClosureScope scopeData =
+ localsHandler.closureData.capturingScopes[node];
+ if (scopeData != null
+ && scopeData.capturedVariableMapping.containsKey(
+ parameterElement)) {
+ // The parameter will be a field in the box passed as the
+ // last parameter. So no need to have it.
+ return;
+ }
+ }
HInstruction newParameter = potentiallyCheckType(
- localsHandler.directLocals[element],
- element.computeType(compiler));
- localsHandler.directLocals[element] = newParameter;
+ localsHandler.directLocals[parameterElement],
+ parameterElement.computeType(compiler));
+ localsHandler.directLocals[parameterElement] = newParameter;
});
returnType = signature.returnType;
@@ -1800,11 +1832,11 @@
// For while loops, initializer and update are null.
// The condition function must return a boolean result.
// None of the functions must leave anything on the stack.
- handleLoop(Node loop,
- void initialize(),
- HInstruction condition(),
- void update(),
- void body()) {
+ void handleLoop(Node loop,
+ void initialize(),
+ HInstruction condition(),
+ void update(),
+ void body()) {
// Generate:
// <initializer>
// loop-entry:
@@ -1909,23 +1941,83 @@
updateGraph = new SubExpression(updateBlock, updateEndBlock);
}
- conditionBlock.postProcessLoopHeader();
+ if (jumpHandler.hasAnyContinue() || bodyBlock != null) {
+ endLoop(conditionBlock, conditionExitBlock, jumpHandler, savedLocals);
+ conditionBlock.postProcessLoopHeader();
+ HLoopBlockInformation info =
+ new HLoopBlockInformation(
+ HLoopBlockInformation.loopType(loop),
+ wrapExpressionGraph(initializerGraph),
+ wrapExpressionGraph(conditionExpression),
+ wrapStatementGraph(bodyGraph),
+ wrapExpressionGraph(updateGraph),
+ conditionBlock.loopInformation.target,
+ conditionBlock.loopInformation.labels,
+ sourceFileLocationForBeginToken(loop),
+ sourceFileLocationForEndToken(loop));
- endLoop(conditionBlock, conditionExitBlock, jumpHandler, savedLocals);
- HLoopBlockInformation info =
- new HLoopBlockInformation(
- HLoopBlockInformation.loopType(loop),
- wrapExpressionGraph(initializerGraph),
+ startBlock.setBlockFlow(info, current);
+ loopInfo.loopBlockInformation = info;
+ } else {
+ // There is no back edge for the loop, so we turn the code into:
+ // if (condition) {
+ // body;
+ // } else {
+ // // We always create an empty else block to avoid critical edges.
+ // }
+ //
+ // If there is any break in the body, we attach a synthetic
+ // label to the if.
+ HBasicBlock elseBlock = addNewBlock();
+ open(elseBlock);
+ close(new HGoto());
+ endLoop(conditionBlock, null, jumpHandler, savedLocals);
+
+ // [endLoop] will not create an exit block if there are no
+ // breaks.
+ if (current == null) open(addNewBlock());
+ elseBlock.addSuccessor(current);
+ SubGraph elseGraph = new SubGraph(elseBlock, elseBlock);
+ // Remove the loop information attached to the header.
+ conditionBlock.loopInformation = null;
+
+ // Remove the [HLoopBranch] instruction and replace it with
+ // [HIf].
+ HInstruction condition = conditionExitBlock.last.inputs[0];
+ conditionExitBlock.addAtExit(new HIf(condition));
+ conditionExitBlock.addSuccessor(elseBlock);
+ conditionExitBlock.remove(conditionExitBlock.last);
+ HIfBlockInformation info =
+ new HIfBlockInformation(
wrapExpressionGraph(conditionExpression),
wrapStatementGraph(bodyGraph),
- wrapExpressionGraph(updateGraph),
- conditionBlock.loopInformation.target,
- conditionBlock.loopInformation.labels,
- sourceFileLocationForBeginToken(loop),
- sourceFileLocationForEndToken(loop));
+ wrapStatementGraph(elseGraph));
- startBlock.setBlockFlow(info, current);
- loopInfo.loopBlockInformation = info;
+ conditionBlock.setBlockFlow(info, current);
+ HIf ifBlock = conditionBlock.last;
+ ifBlock.blockInformation = conditionBlock.blockFlow;
+
+ // If the body has any break, attach a synthesized label to the
+ // if block.
+ if (jumpHandler.hasAnyBreak()) {
+ TargetElement target = elements[loop];
+ LabelElement label = target.addLabel(null, 'loop');
+ label.isBreakTarget = true;
+ SubGraph labelGraph = new SubGraph(conditionBlock, current);
+ HLabeledBlockInformation labelInfo = new HLabeledBlockInformation(
+ new HSubGraphBlockInformation(labelGraph),
+ <LabelElement>[label]);
+
+ conditionBlock.setBlockFlow(labelInfo, current);
+
+ jumpHandler.forEachBreak((HBreak breakInstruction, _) {
+ HBasicBlock block = breakInstruction.block;
+ block.addAtExit(new HBreak.toLabel(label));
+ block.remove(breakInstruction);
+ });
+ }
+ }
+ jumpHandler.close();
}
visitFor(For node) {
@@ -2049,31 +2141,56 @@
conditionEndBlock = close(
new HLoopBranch(conditionInstruction, HLoopBranch.DO_WHILE_LOOP));
- conditionEndBlock.addSuccessor(loopEntryBlock); // The back-edge.
+ HBasicBlock avoidCriticalEdge = addNewBlock();
+ conditionEndBlock.addSuccessor(avoidCriticalEdge);
+ open(avoidCriticalEdge);
+ close(new HGoto());
+ avoidCriticalEdge.addSuccessor(loopEntryBlock); // The back-edge.
+
conditionExpression =
new SubExpression(conditionBlock, conditionEndBlock);
}
- loopEntryBlock.postProcessLoopHeader();
-
endLoop(loopEntryBlock, conditionEndBlock, jumpHandler, localsHandler);
+ if (!isAbortingBody || hasContinues) {
+ loopEntryBlock.postProcessLoopHeader();
+ SubGraph bodyGraph = new SubGraph(bodyEntryBlock, bodyExitBlock);
+ HLoopBlockInformation loopBlockInfo =
+ new HLoopBlockInformation(
+ HLoopBlockInformation.DO_WHILE_LOOP,
+ null,
+ wrapExpressionGraph(conditionExpression),
+ wrapStatementGraph(bodyGraph),
+ null,
+ loopEntryBlock.loopInformation.target,
+ loopEntryBlock.loopInformation.labels,
+ sourceFileLocationForBeginToken(node),
+ sourceFileLocationForEndToken(node));
+ loopEntryBlock.setBlockFlow(loopBlockInfo, current);
+ loopInfo.loopBlockInformation = loopBlockInfo;
+ } else {
+ // If the loop has no back edge, we remove the loop information
+ // on the header.
+ loopEntryBlock.loopInformation = null;
+
+ // If the body of the loop has any break, we attach a
+ // synthesized label to the body.
+ if (jumpHandler.hasAnyBreak()) {
+ SubGraph bodyGraph = new SubGraph(bodyEntryBlock, bodyExitBlock);
+ TargetElement target = elements[node];
+ LabelElement label = target.addLabel(null, 'loop');
+ label.isBreakTarget = true;
+ HLabeledBlockInformation info = new HLabeledBlockInformation(
+ new HSubGraphBlockInformation(bodyGraph), <LabelElement>[label]);
+ loopEntryBlock.setBlockFlow(info, current);
+ jumpHandler.forEachBreak((HBreak breakInstruction, _) {
+ HBasicBlock block = breakInstruction.block;
+ block.addAtExit(new HBreak.toLabel(label));
+ block.remove(breakInstruction);
+ });
+ }
+ }
jumpHandler.close();
-
- SubGraph bodyGraph = new SubGraph(bodyEntryBlock, bodyExitBlock);
-
- HLoopBlockInformation loopBlockInfo =
- new HLoopBlockInformation(
- HLoopBlockInformation.DO_WHILE_LOOP,
- null,
- wrapExpressionGraph(conditionExpression),
- wrapStatementGraph(bodyGraph),
- null,
- loopEntryBlock.loopInformation.target,
- loopEntryBlock.loopInformation.labels,
- sourceFileLocationForBeginToken(node),
- sourceFileLocationForEndToken(node));
- loopEntryBlock.setBlockFlow(loopBlockInfo, current);
- loopInfo.loopBlockInformation = loopBlockInfo;
}
visitFunctionExpression(FunctionExpression node) {
@@ -2291,7 +2408,7 @@
return result;
}
- Element getInterceptor(Send send, Selector selector) {
+ Set<ClassElement> getInterceptedClassesOn(Send send, Selector selector) {
if (!methodInterceptionEnabled) return null;
if (!backend.isInterceptorClass(currentElement.getEnclosingClass())
&& send.receiver == null) {
@@ -2299,7 +2416,7 @@
// object.
return null;
}
- return interceptors.getStaticInterceptor(selector);
+ return interceptors.getInterceptedClassesOn(selector);
}
void generateInstanceGetterWithCompiledReceiver(Send send,
@@ -2313,36 +2430,22 @@
: elements.getSelector(send.selector);
assert(selector.isGetter());
SourceString getterName = selector.name;
- Element interceptor = getInterceptor(send, selector);
+ Set<ClassElement> interceptedClasses =
+ getInterceptedClassesOn(send, selector);
bool hasGetter = compiler.world.hasAnyUserDefinedGetter(selector);
- if (interceptor == backend.getInterceptorMethod && interceptor != null) {
+ if (interceptedClasses != null) {
// If we're using an interceptor class, emit a call to the
// interceptor method and then the actual dynamic call on the
// interceptor object.
- HInstruction instruction;
- if (backend.isInterceptorClass(currentElement.getEnclosingClass())
- && send.receiver == null) {
- instruction = thisInstruction;
- } else {
- HStatic target = new HStatic(interceptor);
- add(target);
- instruction = new HInvokeStatic(<HInstruction>[target, receiver]);
- add(instruction);
- }
+ HInstruction instruction =
+ invokeInterceptor(interceptedClasses, receiver, send);
instruction = new HInvokeDynamicGetter(
selector, null, instruction, !hasGetter);
// Add the receiver as an argument to the getter call on the
// interceptor.
instruction.inputs.add(receiver);
pushWithPosition(instruction, send);
- } else if (elements[send] == null && interceptor != null) {
- // Use the old, deprecated interceptor mechanism.
- HStatic target = new HStatic(interceptor);
- add(target);
- List<HInstruction> inputs = <HInstruction>[target, receiver];
- pushWithPosition(new HInvokeInterceptor(selector, inputs, !hasGetter),
- send);
} else {
pushWithPosition(
new HInvokeDynamicGetter(selector, null, receiver, !hasGetter), send);
@@ -2395,16 +2498,21 @@
Selector selector = elements.getSelector(send);
assert(selector.isSetter());
SourceString setterName = selector.name;
- Element interceptor = getInterceptor(send, selector);
bool hasSetter = compiler.world.hasAnyUserDefinedSetter(selector);
- if (interceptor != null && interceptor == backend.getInterceptorMethod) {
- compiler.internalError(
- 'Unimplemented intercepted setter call with interceptor classes');
- } else if (interceptor != null && elements[send] == null) {
- HStatic target = new HStatic(interceptor);
- add(target);
- List<HInstruction> inputs = <HInstruction>[target, receiver, value];
- addWithPosition(new HInvokeInterceptor(selector, inputs), send);
+ Set<ClassElement> interceptedClasses =
+ getInterceptedClassesOn(send, selector);
+ if (interceptedClasses != null) {
+ // If we're using an interceptor class, emit a call to the
+ // getInterceptor method and then the actual dynamic call on the
+ // interceptor object.
+ HInstruction instruction =
+ invokeInterceptor(interceptedClasses, receiver, send);
+ instruction = new HInvokeDynamicSetter(
+ selector, null, instruction, receiver, !hasSetter);
+ // Add the value as an argument to the setter call on the
+ // interceptor.
+ instruction.inputs.add(value);
+ addWithPosition(instruction, send);
} else {
addWithPosition(
new HInvokeDynamicSetter(selector, null, receiver, value, !hasSetter),
@@ -2448,6 +2556,19 @@
}
}
+ HInstruction invokeInterceptor(Set<ClassElement> intercepted,
+ HInstruction receiver,
+ Send send) {
+ if (send != null
+ && backend.isInterceptorClass(currentElement.getEnclosingClass())
+ && send.receiver == null) {
+ return thisInstruction;
+ }
+ HInterceptor interceptor = new HInterceptor(intercepted, receiver);
+ add(interceptor);
+ return interceptor;
+ }
+
void pushInvokeHelper0(Element helper) {
HInstruction reference = new HStatic(helper);
add(reference);
@@ -2528,7 +2649,7 @@
DartType type = elements.getType(typeAnnotation);
HInstruction typeInfo = null;
- if (compiler.codegenWorld.rti.hasTypeArguments(type)) {
+ if (RuntimeTypeInformation.hasTypeArguments(type)) {
pushInvokeHelper1(interceptors.getGetRuntimeTypeInfo(), expression);
typeInfo = pop();
}
@@ -2649,7 +2770,6 @@
visitDynamicSend(Send node) {
Selector selector = elements.getSelector(node);
- var inputs = <HInstruction>[];
SourceString dartMethodName;
bool isNotEquals = false;
@@ -2665,43 +2785,6 @@
dartMethodName = node.selector.asIdentifier().source;
}
- Element interceptor = getInterceptor(node, selector);
-
- if (interceptor != null) {
- if (interceptor == backend.getInterceptorMethod) {
- if (backend.isInterceptorClass(currentElement.getEnclosingClass())
- && node.receiver == null) {
- inputs.add(thisInstruction);
- inputs.add(localsHandler.readThis());
- } else {
- HStatic target = new HStatic(interceptor);
- add(target);
- visit(node.receiver);
- HInstruction receiver = pop();
- HInstruction instruction =
- new HInvokeStatic(<HInstruction>[target, receiver]);
- add(instruction);
- inputs.add(instruction);
- inputs.add(receiver);
- }
- addDynamicSendArgumentsToList(node, inputs);
- // The first entry in the inputs list is the interceptor. The
- // second is the receiver, and the others are the arguments.
- HInstruction instruction = new HInvokeDynamicMethod(selector, inputs);
- pushWithPosition(instruction, node);
- return;
- } else if (elements[node] == null) {
- HStatic target = new HStatic(interceptor);
- add(target);
- inputs.add(target);
- visit(node.receiver);
- inputs.add(pop());
- addGenericSendArgumentsToList(node.arguments, inputs);
- pushWithPosition(new HInvokeInterceptor(selector, inputs), node);
- return;
- }
- }
-
Element element = elements[node];
if (element != null && compiler.world.hasNoOverridingMember(element)) {
if (tryInlineMethod(element, selector, node.arguments)) {
@@ -2709,16 +2792,24 @@
}
}
+ HInstruction receiver;
if (node.receiver == null) {
- inputs.add(localsHandler.readThis());
+ receiver = localsHandler.readThis();
} else {
visit(node.receiver);
- inputs.add(pop());
+ receiver = pop();
}
+ List<HInstruction> inputs = <HInstruction>[];
+ Set<ClassElement> interceptedClasses =
+ interceptors.getInterceptedClassesOn(selector);
+ if (interceptedClasses != null) {
+ inputs.add(invokeInterceptor(interceptedClasses, receiver, node));
+ }
+ inputs.add(receiver);
+
addDynamicSendArgumentsToList(node, inputs);
- // The first entry in the inputs list is the receiver.
pushWithPosition(new HInvokeDynamicMethod(selector, inputs), node);
if (isNotEquals) {
@@ -2995,8 +3086,9 @@
localsHandler.readThis());
typeInfo = pop();
}
+ int index = RuntimeTypeInformation.getTypeVariableIndex(type);
HInstruction foreign = new HForeign(
- new LiteralDartString('#.${type.name.slowToString()}'),
+ new LiteralDartString('#[$index]'),
new LiteralDartString('String'),
<HInstruction>[typeInfo]);
add(foreign);
@@ -3027,12 +3119,12 @@
} else if (type is InterfaceType) {
bool isFirstVariable = true;
InterfaceType interfaceType = type;
- bool hasTypeArguments = !interfaceType.arguments.isEmpty;
+ bool hasTypeArguments = !interfaceType.typeArguments.isEmpty;
if (!isInQuotes) template.add("'");
- template.add(rti.getName(type.element));
+ template.add(backend.namer.getName(type.element));
if (hasTypeArguments) {
template.add("<");
- for (DartType argument in interfaceType.arguments) {
+ for (DartType argument in interfaceType.typeArguments) {
if (!isFirstVariable) {
template.add(", ");
} else {
@@ -3046,7 +3138,7 @@
} else {
assert(type is TypedefType);
if (!isInQuotes) template.add("'");
- template.add(rti.getName(argument.element));
+ template.add(backend.namer.getName(argument.element));
if (!isInQuotes) template.add("'");
}
}
@@ -3065,7 +3157,7 @@
HInstruction newObject) {
if (!compiler.world.needsRti(type.element)) return;
List<HInstruction> inputs = <HInstruction>[];
- type.arguments.forEach((DartType argument) {
+ type.typeArguments.forEach((DartType argument) {
inputs.add(analyzeTypeArgument(argument, currentNode));
});
callSetRuntimeTypeInfo(type.element, inputs, newObject);
@@ -3074,49 +3166,19 @@
void callSetRuntimeTypeInfo(ClassElement element,
List<HInstruction> rtiInputs,
HInstruction newObject) {
- bool needsRti = compiler.world.needsRti(element) && !rtiInputs.isEmpty;
- bool runtimeTypeIsUsed = compiler.enabledRuntimeType;
- if (!needsRti && !runtimeTypeIsUsed) return;
-
- HInstruction createForeign(String template,
- List<HInstruction> arguments,
- [String type = 'String']) {
- return new HForeign(new LiteralDartString(template),
- new LiteralDartString(type),
- arguments);
+ if (!compiler.world.needsRti(element) || element.typeVariables.isEmpty) {
+ return;
}
- // Construct the runtime type information.
- StringBuffer runtimeCode = new StringBuffer();
- List<HInstruction> runtimeCodeInputs = <HInstruction>[];
- if (runtimeTypeIsUsed) {
- String runtimeTypeString =
- rti.generateRuntimeTypeString(element, rtiInputs.length);
- HInstruction runtimeType = createForeign(runtimeTypeString, rtiInputs);
- add(runtimeType);
- runtimeCodeInputs.add(runtimeType);
- runtimeCode.add("runtimeType: '#'");
- }
- if (needsRti) {
- if (runtimeTypeIsUsed) runtimeCode.add(', ');
- String typeVariablesString =
- RuntimeTypeInformation.generateTypeVariableString(element,
- rtiInputs.length);
- HInstruction typeInfo = createForeign(typeVariablesString, rtiInputs);
- add(typeInfo);
- runtimeCodeInputs.add(typeInfo);
- runtimeCode.add('#');
- }
- HInstruction runtimeInfo =
- createForeign("{$runtimeCode}", runtimeCodeInputs, 'Object');
- add(runtimeInfo);
+ HInstruction typeInfo = new HLiteralList(rtiInputs);
+ add(typeInfo);
// Set the runtime type information on the object.
Element typeInfoSetterElement = interceptors.getSetRuntimeTypeInfo();
HInstruction typeInfoSetter = new HStatic(typeInfoSetterElement);
add(typeInfoSetter);
add(new HInvokeStatic(
- <HInstruction>[typeInfoSetter, newObject, runtimeInfo]));
+ <HInstruction>[typeInfoSetter, newObject, typeInfo]));
}
visitNewSend(Send node, InterfaceType type) {
@@ -3167,22 +3229,10 @@
return;
}
if (compiler.world.needsRti(constructor.enclosingElement)) {
- if (!type.arguments.isEmpty) {
- type.arguments.forEach((DartType argument) {
+ if (!type.typeArguments.isEmpty) {
+ type.typeArguments.forEach((DartType argument) {
inputs.add(analyzeTypeArgument(argument, node));
});
- } else if (compiler.enabledRuntimeType) {
- Link<DartType> variables =
- constructor.getEnclosingClass().typeVariables;
- if (!variables.isEmpty) {
- // If the class has type variables but no type arguments have been
- // provided, add [:dynamic:] as argument for all type variables.
- DartString stringDynamic = new DartString.literal('dynamic');
- HInstruction input = graph.addConstantString(stringDynamic,
- node,
- constantSystem);
- variables.forEach((_) => inputs.add(input));
- }
}
}
@@ -3263,22 +3313,17 @@
visitTypeReferenceSend(Send node) {
Element element = elements[node];
- HInstruction name;
- Element helper =
- compiler.findHelper(const SourceString('createRuntimeType'));
- if (element.isClass()) {
- String string = rti.generateRuntimeTypeString(element, 0);
- name = addConstantString(node.selector, string);
- } else if (element.isTypedef()) {
- // TODO(karlklose): implement support for type variables in typedefs.
- name = addConstantString(node.selector, rti.getName(element));
+ if (element.isClass() || element.isTypedef()) {
+ // TODO(karlklose): add type representation
+ ConstantHandler handler = compiler.constantHandler;
+ Constant constant = handler.compileNodeWithDefinitions(node, elements);
+ stack.add(graph.addConstant(constant));
} else if (element.isTypeVariable()) {
// TODO(6248): implement support for type variables.
compiler.unimplemented('first class type for type variable', node: node);
} else {
- internalError('unexpected element $element', node: node);
+ internalError('unexpected element kind $element', node: node);
}
- pushInvokeHelper1(helper, name);
if (node.isCall) {
// This send is of the form 'e(...)', where e is resolved to a type
// reference. We create a regular closure call on the result of the type
@@ -3378,8 +3423,10 @@
visitNewExpression(NewExpression node) {
Element element = elements[node.send];
- if (!Elements.isErroneousElement(element)) {
- element = element.redirectionTarget;
+ if (!Elements.isErroneousElement(element) &&
+ !Elements.isMalformedElement(element)) {
+ FunctionElement function = element;
+ element = function.redirectionTarget;
}
if (Elements.isErroneousElement(element)) {
ErroneousElement error = element;
@@ -3399,6 +3446,10 @@
ConstantHandler handler = compiler.constantHandler;
Constant constant = handler.compileNodeWithDefinitions(node, elements);
stack.add(graph.addConstant(constant));
+ } else if (Elements.isMalformedElement(element)) {
+ Message message =
+ MessageKind.TYPE_VARIABLE_WITHIN_STATIC_MEMBER.message([element]);
+ generateRuntimeError(node.send, message.toString());
} else {
visitNewSend(node.send, elements.getType(node));
}
@@ -3604,11 +3655,7 @@
} else {
visit(node.expression);
value = pop();
- if (value is HForeign) {
- // TODO(6530, 6534): remove this check.
- } else {
- value = potentiallyCheckType(value, returnType);
- }
+ value = potentiallyCheckType(value, returnType);
}
handleInTryStatement();
@@ -3759,19 +3806,23 @@
SourceString iteratorName = const SourceString("iterator");
Selector selector =
new Selector.call(iteratorName, work.element.getLibrary(), 0);
- Element interceptor = interceptors.getStaticInterceptor(selector);
- assert(interceptor != null);
+ Set<ClassElement> interceptedClasses =
+ interceptors.getInterceptedClassesOn(selector);
visit(node.expression);
- pushInvokeHelper1(interceptor, pop());
- iterator = pop();
+ HInstruction receiver = pop();
+ if (interceptedClasses == null) {
+ iterator = new HInvokeDynamicMethod(selector, <HInstruction>[receiver]);
+ } else {
+ HInterceptor interceptor =
+ invokeInterceptor(interceptedClasses, receiver, null);
+ iterator = new HInvokeDynamicMethod(
+ selector, <HInstruction>[interceptor, receiver]);
+ }
+ add(iterator);
}
HInstruction buildCondition() {
SourceString name = const SourceString('hasNext');
Selector selector = new Selector.getter(name, work.element.getLibrary());
- if (interceptors.getStaticInterceptor(selector) != null) {
- compiler.internalError("hasNext getter must not be intercepted",
- node: node);
- }
bool hasGetter = compiler.world.hasAnyUserDefinedGetter(selector);
push(new HInvokeDynamicGetter(selector, null, iterator, !hasGetter));
return popBoolified();
diff --git a/sdk/lib/_internal/compiler/implementation/ssa/codegen.dart b/sdk/lib/_internal/compiler/implementation/ssa/codegen.dart
index 1cc242f..d51850f 100644
--- a/sdk/lib/_internal/compiler/implementation/ssa/codegen.dart
+++ b/sdk/lib/_internal/compiler/implementation/ssa/codegen.dart
@@ -65,16 +65,6 @@
CodeBuffer generateMethod(WorkItem work, HGraph graph) {
return measure(() {
- JavaScriptItemCompilationContext context = work.compilationContext;
- HTypeMap types = context.types;
- graph.exit.predecessors.forEach((block) {
- assert(block.last is HGoto || block.last is HReturn);
- if (block.last is HReturn) {
- backend.registerReturnType(work.element, types[block.last.inputs[0]]);
- } else {
- backend.registerReturnType(work.element, HType.NULL);
- }
- });
compiler.tracer.traceGraph("codegen", graph);
SsaOptimizedCodeGenerator codegen =
new SsaOptimizedCodeGenerator(backend, work);
@@ -382,6 +372,20 @@
allocator.visitGraph(graph);
variableNames = allocator.names;
shouldGroupVarDeclarations = allocator.names.numberOfVariables > 1;
+
+ // Don't register a return type for lazily initialized variables.
+ if (work.element is! FunctionElement) return;
+
+ // Register return types to the backend.
+ graph.exit.predecessors.forEach((HBasicBlock block) {
+ HInstruction last = block.last;
+ assert(last is HGoto || last is HReturn);
+ if (last is HReturn) {
+ backend.registerReturnType(work.element, types[last.inputs[0]]);
+ } else {
+ backend.registerReturnType(work.element, HType.NULL);
+ }
+ });
}
void handleDelayedVariableDeclarations() {
@@ -831,7 +835,7 @@
bool visitLoopInfo(HLoopBlockInformation info) {
HExpressionInformation condition = info.condition;
- bool isConditionExpression = condition == null || isJSCondition(condition);
+ bool isConditionExpression = isJSCondition(condition);
js.Loop loop;
@@ -943,18 +947,29 @@
}
break;
case HLoopBlockInformation.DO_WHILE_LOOP:
- // If there are phi copies after the condition, we cannot emit
- // a pretty do/while loop, se we fallback to the generic
- // emission of a loop.
- CopyHandler handler = variableNames.getCopyHandler(info.end);
- if (handler != null && !handler.isEmpty) return false;
if (info.initializer != null) {
generateStatements(info.initializer);
}
js.Block oldContainer = currentContainer;
- js.Statement body = new js.Block.empty();
+ js.Block body = new js.Block.empty();
+ // If there are phi copies in the block that jumps to the
+ // loop entry, we must emit the condition like this:
+ // do {
+ // body;
+ // if (condition) {
+ // phi updates;
+ // continue;
+ // } else {
+ // break;
+ // }
+ // } while (true);
+ HBasicBlock avoidEdge = info.end.successors[0];
+ js.Block updateBody = new js.Block.empty();
+ currentContainer = updateBody;
+ assignPhisOfSuccessors(avoidEdge);
+ bool hasPhiUpdates = !updateBody.statements.isEmpty;
currentContainer = body;
- if (!isConditionExpression || info.updates != null) {
+ if (hasPhiUpdates || !isConditionExpression || info.updates != null) {
wrapLoopBodyForContinue(info);
} else {
visitBodyIgnoreLabels(info);
@@ -962,18 +977,21 @@
if (info.updates != null) {
generateStatements(info.updates);
}
- if (condition == null) {
- push(newLiteralBool(false));
- } else if (isConditionExpression) {
+ if (isConditionExpression) {
push(generateExpression(condition));
} else {
generateStatements(condition);
use(condition.conditionExpression);
}
js.Expression jsCondition = pop();
+ if (hasPhiUpdates) {
+ updateBody.statements.add(new js.Continue(null));
+ body.statements.add(
+ new js.If(jsCondition, updateBody, new js.Break(null)));
+ jsCondition = newLiteralBool(true);
+ }
+ loop = new js.Do(unwrapStatement(body), jsCondition);
currentContainer = oldContainer;
- body = unwrapStatement(body);
- loop = new js.Do(body, jsCondition);
break;
default:
compiler.internalError(
@@ -1244,16 +1262,7 @@
}
instruction = instruction.next;
}
- if (instruction is HLoopBranch) {
- HLoopBranch branch = instruction;
- // If the loop is a do/while loop, the phi updates must happen
- // after the evaluation of the condition.
- if (!branch.isDoWhile()) {
- assignPhisOfSuccessors(node);
- }
- } else {
- assignPhisOfSuccessors(node);
- }
+ assignPhisOfSuccessors(node);
visit(instruction);
}
@@ -1520,14 +1529,15 @@
arguments);
}
- // TODO(ngeoffray): Once we remove the old interceptors, we can
- // start using HInvokeInterceptor to represent interceptor calls on
- // an Interceptor class. Currently we recognize if a call is a call
- // on an interceptor by checking if the arguments in the inputs list
- // is one more than the arguments in the selector. The extra
- // argument in an interceptor call is the actual receiver.
- bool isInterceptorCall(HInvokeDynamic node) {
- return node.inputs.length - 1 != node.selector.argumentCount;
+ void visitInterceptor(HInterceptor node) {
+ Element element = backend.getInterceptorMethod;
+ assert(element != null);
+ world.registerStaticUse(element);
+ js.VariableUse interceptor =
+ new js.VariableUse(backend.namer.isolateAccess(element));
+ use(node.receiver);
+ List<js.Expression> arguments = <js.Expression>[pop()];
+ push(new js.Call(interceptor, arguments), node);
}
visitInvokeDynamicMethod(HInvokeDynamicMethod node) {
@@ -1556,7 +1566,7 @@
// receiver (the first is the interceptor), the backend gets
// confused. We should pass a list of types instead of a node to
// [registerDynamicInvocation].
- if (!isInterceptorCall(node)) {
+ if (!node.isInterceptorCall) {
backend.registerDynamicInvocation(node, selector, types);
} else {
backend.addInterceptedSelector(selector);
@@ -1591,7 +1601,7 @@
// TODO(4434): For private members we need to use the untyped selector.
if (defaultSelector.name.isPrivate()) return defaultSelector;
// TODO(ngeoffray): Type intercepted calls.
- if (isInterceptorCall(node)) return defaultSelector;
+ if (node.isInterceptorCall) return defaultSelector;
// If [JSInvocationMirror.invokeOn] has been called, we must not create a
// typed selector based on the receiver type.
if (node.element == null && // Invocation is not exact.
@@ -1614,7 +1624,14 @@
push(jsPropertyCall(pop(), name, visitArguments(node.inputs)), node);
Selector selector = getOptimizedSelectorFor(node, setter);
world.registerDynamicSetter(setter.name, selector);
- backend.addedDynamicSetter(selector, types[node.inputs[1]]);
+ HType valueType;
+ if (node.isInterceptorCall) {
+ valueType = types[node.inputs[2]];
+ backend.addInterceptedSelector(setter);
+ } else {
+ valueType = types[node.inputs[1]];
+ }
+ backend.addedDynamicSetter(selector, valueType);
}
visitInvokeDynamicGetter(HInvokeDynamicGetter node) {
@@ -1624,7 +1641,7 @@
push(jsPropertyCall(pop(), name, visitArguments(node.inputs)), node);
world.registerDynamicGetter(
getter.name, getOptimizedSelectorFor(node, getter));
- if (isInterceptorCall(node)) {
+ if (node.isInterceptorCall) {
backend.addInterceptedSelector(getter);
}
}
@@ -1645,9 +1662,7 @@
}
visitInvokeStatic(HInvokeStatic node) {
- if (true &&
- (node.typeCode() == HInstruction.INVOKE_STATIC_TYPECODE ||
- node.typeCode() == HInstruction.INVOKE_INTERCEPTOR_TYPECODE)) {
+ if (node.typeCode() == HInstruction.INVOKE_STATIC_TYPECODE) {
// Register this invocation to collect the types used at all call sites.
backend.registerStaticInvocation(node, types);
}
@@ -1706,32 +1721,25 @@
}
visitFieldGet(HFieldGet node) {
- String name = backend.namer.getName(node.element);
use(node.receiver);
- push(new js.PropertyAccess.field(pop(), name), node);
- HType receiverHType = types[node.receiver];
- DartType type = receiverHType.computeType(compiler);
- if (type != null) {
- world.registerFieldGetter(
- node.element.name, node.element.getLibrary(), type);
+ if (node.element == backend.jsArrayLength
+ || node.element == backend.jsStringLength) {
+ // We're accessing a native JavaScript property called 'length'
+ // on a JS String or a JS array. Therefore, the name of that
+ // property should not be mangled.
+ push(new js.PropertyAccess.field(pop(), 'length'), node);
+ } else {
+ String name = backend.namer.getName(node.element);
+ push(new js.PropertyAccess.field(pop(), name), node);
+ HType receiverHType = types[node.receiver];
+ DartType type = receiverHType.computeType(compiler);
+ if (type != null) {
+ world.registerFieldGetter(
+ node.element.name, node.element.getLibrary(), type);
+ }
}
}
- // Determine if an instruction is a simple number computation
- // involving only things with guaranteed number types and a given
- // field.
- bool isSimpleFieldNumberComputation(HInstruction value, HFieldSet node) {
- if (value.guaranteedType.union(HType.NUMBER, compiler) == HType.NUMBER) {
- return true;
- }
- if (value is HBinaryArithmetic) {
- return (isSimpleFieldNumberComputation(value.left, node) &&
- isSimpleFieldNumberComputation(value.right, node));
- }
- if (value is HFieldGet) return value.element == node.element;
- return false;
- }
-
visitFieldSet(HFieldSet node) {
String name = backend.namer.getName(node.element);
DartType type = types[node.receiver].computeType(compiler);
@@ -1870,11 +1878,7 @@
HBasicBlock branchBlock = currentBlock;
handleLoopCondition(node);
List<HBasicBlock> dominated = currentBlock.dominatedBlocks;
- if (node.isDoWhile()) {
- // Now that the condition has been evaluated, we can update the
- // phis of a do/while loop.
- assignPhisOfSuccessors(node.block);
- } else {
+ if (!node.isDoWhile()) {
// For a do while loop, the body has already been visited.
visitBasicBlock(dominated[0]);
}
@@ -2193,64 +2197,6 @@
}
}
- String builtinJsName(HInvokeInterceptor interceptor) {
- // Don't count the target method or the receiver in the arity.
- int arity = interceptor.inputs.length - 2;
- HInstruction receiver = interceptor.inputs[1];
- bool isCall = interceptor.selector.isCall();
- SourceString name = interceptor.selector.name;
-
- if (interceptor.isLengthGetterOnStringOrArray(types)) {
- return 'length';
- } else if (interceptor.isPopCall(types)) {
- return 'pop';
- } else if (receiver.isExtendableArray(types) && isCall) {
- if (name == const SourceString('add') && arity == 1) {
- return 'push';
- }
- } else if (receiver.isString(types) && isCall) {
- if (name == const SourceString('concat') &&
- arity == 1 &&
- interceptor.inputs[2].isString(types)) {
- return '+';
- }
- if (name == const SourceString('split') &&
- arity == 1 &&
- interceptor.inputs[2].isString(types)) {
- return 'split';
- }
- }
-
- return null;
- }
-
- void visitInvokeInterceptor(HInvokeInterceptor node) {
- String builtin = builtinJsName(node);
- if (builtin != null) {
- if (builtin == '+') {
- use(node.inputs[1]);
- js.Expression left = pop();
- use(node.inputs[2]);
- push(new js.Binary("+", left, pop()), node);
- } else {
- use(node.inputs[1]);
- js.PropertyAccess access = new js.PropertyAccess.field(pop(), builtin);
- if (node.selector.isGetter()) {
- push(access, node);
- return;
- }
- List<js.Expression> arguments = <js.Expression>[];
- for (int i = 2; i < node.inputs.length; i++) {
- use(node.inputs[i]);
- arguments.add(pop());
- }
- push(new js.Call(access, arguments), node);
- }
- } else {
- return visitInvokeStatic(node);
- }
- }
-
void checkInt(HInstruction input, String cmp) {
use(input);
js.Expression left = pop();
@@ -2471,22 +2417,22 @@
if (node.hasTypeInfo()) {
InterfaceType interfaceType = type;
ClassElement cls = type.element;
- Link<DartType> arguments = interfaceType.arguments;
+ Link<DartType> arguments = interfaceType.typeArguments;
js.Expression result = pop();
for (TypeVariableType typeVariable in cls.typeVariables) {
use(node.typeInfoCall);
- // TODO(johnniwinther): Retrieve the type name properly and not through
- // [toString]. Note: Two cases below [typeVariable] and
- // [arguments.head].
- js.PropertyAccess field =
- new js.PropertyAccess.field(pop(), typeVariable.toString());
- js.Expression genericName = new js.LiteralString("'${arguments.head}'");
+ int index = RuntimeTypeInformation.getTypeVariableIndex(typeVariable);
+ js.PropertyAccess field = new js.PropertyAccess.indexed(pop(), index);
+ RuntimeTypeInformation rti = backend.rti;
+ String typeName = rti.getStringRepresentation(arguments.head);
+ js.Expression genericName = new js.LiteralString("'$typeName'");
js.Binary eqTest = new js.Binary('===', field, genericName);
// Also test for 'undefined' in case the object does not have
// any type variable.
js.Prefix undefinedTest = new js.Prefix('!', field);
result = new js.Binary(
'&&', result, new js.Binary('||', undefinedTest, eqTest));
+ arguments = arguments.tail;
}
push(result, node);
}
diff --git a/sdk/lib/_internal/compiler/implementation/ssa/nodes.dart b/sdk/lib/_internal/compiler/implementation/ssa/nodes.dart
index 346d80b..2878379 100644
--- a/sdk/lib/_internal/compiler/implementation/ssa/nodes.dart
+++ b/sdk/lib/_internal/compiler/implementation/ssa/nodes.dart
@@ -32,11 +32,11 @@
R visitIndex(HIndex node);
R visitIndexAssign(HIndexAssign node);
R visitIntegerCheck(HIntegerCheck node);
+ R visitInterceptor(HInterceptor node);
R visitInvokeClosure(HInvokeClosure node);
R visitInvokeDynamicGetter(HInvokeDynamicGetter node);
R visitInvokeDynamicMethod(HInvokeDynamicMethod node);
R visitInvokeDynamicSetter(HInvokeDynamicSetter node);
- R visitInvokeInterceptor(HInvokeInterceptor node);
R visitInvokeStatic(HInvokeStatic node);
R visitInvokeSuper(HInvokeSuper node);
R visitIs(HIs node);
@@ -292,6 +292,7 @@
visitIndex(HIndex node) => visitInvokeStatic(node);
visitIndexAssign(HIndexAssign node) => visitInvokeStatic(node);
visitIntegerCheck(HIntegerCheck node) => visitCheck(node);
+ visitInterceptor(HInterceptor node) => visitInstruction(node);
visitInvokeClosure(HInvokeClosure node)
=> visitInvokeDynamic(node);
visitInvokeDynamicMethod(HInvokeDynamicMethod node)
@@ -300,8 +301,6 @@
=> visitInvokeDynamicField(node);
visitInvokeDynamicSetter(HInvokeDynamicSetter node)
=> visitInvokeDynamicField(node);
- visitInvokeInterceptor(HInvokeInterceptor node)
- => visitInvokeStatic(node);
visitInvokeStatic(HInvokeStatic node) => visitInvoke(node);
visitInvokeSuper(HInvokeSuper node) => visitInvoke(node);
visitJump(HJump node) => visitControlFlow(node);
@@ -504,18 +503,6 @@
status = STATUS_CLOSED;
}
- // TODO(kasperl): I really don't want to pass the compiler into this
- // method. Maybe we need a better logging framework.
- void printToCompiler(Compiler compiler) {
- HInstruction instruction = first;
- while (instruction != null) {
- int instructionId = instruction.id;
- String inputsAsString = instruction.inputsToString();
- compiler.log('$instructionId: $instruction $inputsAsString');
- instruction = instruction.next;
- }
- }
-
void addAtEntry(HInstruction instruction) {
assert(instruction is !HPhi);
super.addBefore(first, instruction);
@@ -784,7 +771,7 @@
static const int TYPE_GUARD_TYPECODE = 1;
static const int BOUNDS_CHECK_TYPECODE = 2;
static const int INTEGER_CHECK_TYPECODE = 3;
- static const int INVOKE_INTERCEPTOR_TYPECODE = 4;
+ static const int INTERCEPTOR_TYPECODE = 4;
static const int ADD_TYPECODE = 5;
static const int DIVIDE_TYPECODE = 6;
static const int MODULO_TYPECODE = 7;
@@ -1118,11 +1105,13 @@
bool isJsStatement(HTypeMap types) => false;
bool dominates(HInstruction other) {
+ // An instruction does not dominates itself.
+ if (this == other) return false;
if (block != other.block) return block.dominates(other.block);
- HInstruction current = this;
+ HInstruction current = this.next;
while (current != null) {
- if (identical(current, other)) return true;
+ if (current == other) return true;
current = current.next;
}
return false;
@@ -1284,12 +1273,10 @@
HInstruction get condition => inputs[0];
HBasicBlock get trueBranch => block.successors[0];
HBasicBlock get falseBranch => block.successors[1];
- toString();
}
abstract class HControlFlow extends HInstruction {
HControlFlow(inputs) : super(inputs);
- toString();
void prepareGvn(HTypeMap types) {
// Control flow does not have side-effects.
}
@@ -1305,9 +1292,6 @@
*/
HInvoke(List<HInstruction> inputs) : super(inputs);
static const int ARGUMENTS_OFFSET = 1;
-
- // TODO(floitsch): make class abstract instead of adding an abstract method.
- accept(HVisitor visitor);
}
abstract class HInvokeDynamic extends HInvoke {
@@ -1319,8 +1303,12 @@
toString() => 'invoke dynamic: $selector';
HInstruction get receiver => inputs[0];
- // TODO(floitsch): make class abstract instead of adding an abstract method.
- accept(HVisitor visitor);
+ bool get isInterceptorCall {
+ // We know it's a selector call if it follows the interceptor
+ // calling convention, which adds the actual receiver as a
+ // parameter to the call.
+ return inputs.length - 2 == selector.argumentCount;
+ }
}
class HInvokeClosure extends HInvokeDynamic {
@@ -1343,9 +1331,6 @@
this.isSideEffectFree)
: super(selector, element, inputs);
toString() => 'invoke dynamic field: $selector';
-
- // TODO(floitsch): make class abstract instead of adding an abstract method.
- accept(HVisitor visitor);
}
class HInvokeDynamicGetter extends HInvokeDynamicField {
@@ -1426,83 +1411,6 @@
}
}
-class HInvokeInterceptor extends HInvokeStatic {
- final Selector selector;
- final bool isSideEffectFree;
-
- HInvokeInterceptor(this.selector,
- List<HInstruction> inputs,
- [bool this.isSideEffectFree = false])
- : super(inputs);
-
- toString() => 'invoke interceptor: ${element.name}';
- accept(HVisitor visitor) => visitor.visitInvokeInterceptor(this);
-
- bool isLengthGetter() {
- return selector.isGetter() &&
- selector.name == const SourceString('length');
- }
-
- bool isPopCall(HTypeMap types) {
- return selector.isCall()
- && inputs[1].isExtendableArray(types)
- && selector.name == const SourceString('removeLast')
- && selector.argumentCount == 0;
- }
-
- bool isLengthGetterOnStringOrArray(HTypeMap types) {
- return isLengthGetter() && inputs[1].isIndexablePrimitive(types);
- }
-
- HType computeLikelyType(HTypeMap types, Compiler compiler) {
- // In general a length getter or method returns an int.
- if (isLengthGetter()) return HType.INTEGER;
- return HType.UNKNOWN;
- }
-
- HType computeTypeFromInputTypes(HTypeMap types, Compiler compiler) {
- if (isLengthGetterOnStringOrArray(types)) return HType.INTEGER;
- return HType.UNKNOWN;
- }
-
- HType computeDesiredTypeForNonTargetInput(HInstruction input,
- HTypeMap types,
- Compiler compiler) {
- // If the first argument is a string or an array and we invoke methods
- // on it that mutate it, then we want to restrict the incoming type to be
- // a mutable array.
- if (input == inputs[1] && input.isIndexablePrimitive(types)) {
- // TODO(kasperl): Should we check that the selector is a call selector?
- if (selector.name == const SourceString('add')
- || selector.name == const SourceString('removeLast')) {
- return HType.MUTABLE_ARRAY;
- }
- }
- return HType.UNKNOWN;
- }
-
- void prepareGvn(HTypeMap types) {
- clearAllSideEffects();
- if (isLengthGetterOnStringOrArray(types)) {
- setUseGvn();
- // If the input is a string or a fixed length array, we know
- // the length cannot change.
- if (!inputs[1].isString(types) && !inputs[1].isFixedArray(types)) {
- setDependsOnInstancePropertyStore();
- }
- } else if (isSideEffectFree) {
- setUseGvn();
- setDependsOnSomething();
- } else {
- setAllSideEffects();
- }
- }
-
- int typeCode() => HInstruction.INVOKE_INTERCEPTOR_TYPECODE;
- bool typeEquals(other) => other is HInvokeInterceptor;
- bool dataEquals(HInvokeInterceptor other) => selector == other.selector;
-}
-
abstract class HFieldAccess extends HInstruction {
final Element element;
@@ -1827,9 +1735,6 @@
if (left.isTypeUnknown(types)) return HType.INTEGER;
return HType.UNKNOWN;
}
-
- // TODO(floitsch): make class abstract instead of adding an abstract method.
- accept(HVisitor visitor);
}
class HShiftLeft extends HBinaryBitOp {
@@ -2301,8 +2206,6 @@
bool isBuiltin(HTypeMap types)
=> left.isNumber(types) && right.isNumber(types);
- // TODO(1603): the class should be marked as abstract.
- BinaryOperation operation(ConstantSystem constantSystem);
}
class HEquals extends HRelational {
@@ -2311,7 +2214,7 @@
accept(HVisitor visitor) => visitor.visitEquals(this);
bool isBuiltin(HTypeMap types) {
- // All primitive types have === semantics.
+ // All primitive types have 'identical' semantics.
// Note that this includes all constants except the user-constructed
// objects.
return types[left].isPrimitiveOrNull() || right.isConstantNull();
@@ -2327,7 +2230,7 @@
Compiler compiler) {
HType propagatedType = types[this];
if (input == left && types[right].isUseful()) {
- // All our useful types have === semantics. But we don't want to
+ // All our useful types have 'identical' semantics. But we don't want to
// speculatively test for all possible types. Therefore we try to match
// the two types. That is, if we see x == 3, then we speculatively test
// if x is a number and bailout if it isn't.
@@ -2466,6 +2369,21 @@
bool isCodeMotionInvariant() => !element.isAssignable();
}
+class HInterceptor extends HInstruction {
+ final Set<ClassElement> interceptedClasses;
+ HInterceptor(this.interceptedClasses, HInstruction receiver)
+ : super(<HInstruction>[receiver]);
+ String toString() => 'interceptor on $interceptedClasses';
+ accept(HVisitor visitor) => visitor.visitInterceptor(this);
+ HInstruction get receiver => inputs[0];
+
+ void prepareGvn(HTypeMap types) {
+ clearAllSideEffects();
+ }
+
+ int typeCode() => HInstruction.INTERCEPTOR_TYPECODE;
+}
+
/** An [HLazyStatic] is a static that is initialized lazily at first read. */
class HLazyStatic extends HStatic {
HLazyStatic(Element element) : super(element);
diff --git a/sdk/lib/_internal/compiler/implementation/ssa/optimize.dart b/sdk/lib/_internal/compiler/implementation/ssa/optimize.dart
index 6333b0e..e0b8c41 100644
--- a/sdk/lib/_internal/compiler/implementation/ssa/optimize.dart
+++ b/sdk/lib/_internal/compiler/implementation/ssa/optimize.dart
@@ -44,6 +44,7 @@
new SsaRedundantPhiEliminator(),
new SsaDeadPhiEliminator(),
new SsaConstantFolder(constantSystem, backend, work, types),
+ new SsaTypePropagator(compiler, types),
new SsaGlobalValueNumberer(compiler, types),
new SsaCodeMotion(),
new SsaValueRangeAnalyzer(constantSystem, types, work),
@@ -204,61 +205,18 @@
return node;
}
- HInstruction visitInvokeInterceptor(HInvokeInterceptor node) {
- // Try to recognize the length interceptor with input [:new List(int):].
- if (node.isLengthGetter() && node.inputs[1] is HInvokeStatic) {
- HInvokeStatic call = node.inputs[1];
- if (isFixedSizeListConstructor(call)) {
- return call.inputs[1];
- }
- }
+ HInstruction handleInterceptorCall(HInvokeDynamic node) {
HInstruction input = node.inputs[1];
- if (node.isLengthGetter()) {
- if (input.isConstantString()) {
- HConstant constantInput = input;
- StringConstant constant = constantInput.constant;
- return graph.addConstantInt(constant.length, constantSystem);
- } else if (input.isConstantList()) {
- HConstant constantInput = input;
- ListConstant constant = constantInput.constant;
- return graph.addConstantInt(constant.length, constantSystem);
- } else if (input.isConstantMap()) {
- HConstant constantInput = input;
- MapConstant constant = constantInput.constant;
- return graph.addConstantInt(constant.length, constantSystem);
- }
- }
-
if (input.isString(types)
&& node.selector.name == const SourceString('toString')) {
return node.inputs[1];
}
-
- if (!input.canBePrimitive(types) && node.selector.isCall()) {
- bool transformToDynamicInvocation = true;
- if (input.canBeNull(types)) {
- // Check if the method exists on Null. If yes we must not transform
- // the static interceptor call to a dynamic invocation.
- // TODO(floitsch): get a list of methods that exist on 'null' and only
- // bail out on them.
- transformToDynamicInvocation = false;
- }
- if (transformToDynamicInvocation) {
- return fromInterceptorToDynamicInvocation(node, node.selector);
- }
- }
-
return node;
}
bool isFixedSizeListConstructor(HInvokeStatic node) {
Element element = node.target.element;
- DartType defaultClass = compiler.listClass.defaultClass;
- // TODO(ngeoffray): make sure that the only reason the List class is
- // not resolved is because it's not being used.
- return element.isConstructor()
- && defaultClass != null
- && element.enclosingElement.declaration == defaultClass.element
+ return element.getEnclosingClass() == compiler.listClass
&& node.inputs.length == 2
&& node.inputs[1].isInteger(types);
}
@@ -271,6 +229,7 @@
}
HInstruction visitInvokeDynamic(HInvokeDynamic node) {
+ if (node.isInterceptorCall) return handleInterceptorCall(node);
HType receiverType = types[node.receiver];
if (receiverType.isExact()) {
HBoundedType type = receiverType;
@@ -555,7 +514,7 @@
// TODO(karlklose): remove the hasTypeArguments check.
} else if (expressionType.isUseful()
&& !expressionType.canBeNull()
- && !compiler.codegenWorld.rti.hasTypeArguments(type)) {
+ && !RuntimeTypeInformation.hasTypeArguments(type)) {
DartType receiverType = expressionType.computeType(compiler);
if (receiverType != null) {
if (compiler.types.isSubtype(receiverType, type)) {
@@ -592,7 +551,59 @@
return compiler.world.locateSingleField(type, selector);
}
+ HInstruction visitFieldGet(HFieldGet node) {
+ if (node.element == backend.jsArrayLength) {
+ if (node.receiver is HInvokeStatic) {
+ // Try to recognize the length getter with input [:new List(int):].
+ HInvokeStatic call = node.receiver;
+ if (isFixedSizeListConstructor(call)) {
+ return call.inputs[1];
+ }
+ }
+ }
+ return node;
+ }
+
+ HInstruction optimizeLengthInterceptedCall(HInvokeDynamicGetter node) {
+ HInstruction actualReceiver = node.inputs[1];
+ if (actualReceiver.isIndexablePrimitive(types)) {
+ if (actualReceiver.isConstantString()) {
+ HConstant constantInput = actualReceiver;
+ StringConstant constant = constantInput.constant;
+ return graph.addConstantInt(constant.length, constantSystem);
+ } else if (actualReceiver.isConstantList()) {
+ HConstant constantInput = actualReceiver;
+ ListConstant constant = constantInput.constant;
+ return graph.addConstantInt(constant.length, constantSystem);
+ }
+ Element element;
+ bool isAssignable;
+ if (actualReceiver.isString(types)) {
+ element = backend.jsStringLength;
+ isAssignable = false;
+ } else {
+ element = backend.jsArrayLength;
+ isAssignable = !actualReceiver.isFixedArray(types);
+ }
+ HFieldGet result = new HFieldGet(
+ element, actualReceiver, isAssignable: isAssignable);
+ result.guaranteedType = HType.INTEGER;
+ types[result] = HType.INTEGER;
+ return result;
+ } else if (actualReceiver.isConstantMap()) {
+ HConstant constantInput = actualReceiver;
+ MapConstant constant = constantInput.constant;
+ return graph.addConstantInt(constant.length, constantSystem);
+ }
+ return node;
+ }
+
HInstruction visitInvokeDynamicGetter(HInvokeDynamicGetter node) {
+ if (node.selector.name == const SourceString('length')
+ && node.isInterceptorCall) {
+ return optimizeLengthInterceptedCall(node);
+ }
+
Element field =
findConcreteFieldForDynamicAccess(node.receiver, node.selector);
if (field == null) return node;
@@ -655,18 +666,13 @@
final String name = "SsaCheckInserter";
HGraph graph;
Element lengthInterceptor;
- Selector lengthSelector;
SsaCheckInserter(JavaScriptBackend backend,
this.work,
this.types,
this.boundsChecked)
: constantSystem = backend.constantSystem {
- SourceString lengthString = const SourceString('length');
- lengthSelector =
- new Selector.getter(lengthString, work.element.getLibrary());
- lengthInterceptor =
- backend.builder.interceptors.getStaticInterceptor(lengthSelector);
+ lengthInterceptor = backend.jsArrayLength;
}
void visitGraph(HGraph graph) {
@@ -686,10 +692,10 @@
HBoundsCheck insertBoundsCheck(HInstruction node,
HInstruction receiver,
HInstruction index) {
- HStatic interceptor = new HStatic(lengthInterceptor);
- node.block.addBefore(node, interceptor);
- HInvokeInterceptor length = new HInvokeInterceptor(
- lengthSelector, <HInstruction>[interceptor, receiver], true);
+ bool isAssignable = !receiver.isFixedArray(types);
+ HFieldGet length =
+ new HFieldGet(lengthInterceptor, receiver, isAssignable: isAssignable);
+ length.guaranteedType = HType.INTEGER;
types[length] = HType.INTEGER;
node.block.addBefore(node, length);
@@ -732,13 +738,6 @@
node.changeUse(node.index, index);
assert(node.isBuiltin(types));
}
-
- void visitInvokeInterceptor(HInvokeInterceptor node) {
- if (!node.isPopCall(types)) return;
- if (boundsChecked.contains(node)) return;
- HInstruction receiver = node.inputs[1];
- insertBoundsCheck(node, receiver, graph.addConstantInt(0, constantSystem));
- }
}
class SsaDeadCodeEliminator extends HGraphVisitor implements OptimizationPhase {
@@ -751,7 +750,7 @@
return !instruction.hasSideEffects(types)
&& instruction.usedBy.isEmpty
// A dynamic getter that has no side effect can still throw
- // a NoSuchMethodError or a NullPointerException.
+ // a NoSuchMethodError.
&& instruction is !HInvokeDynamicGetter
&& instruction is !HCheck
&& instruction is !HTypeGuard
diff --git a/sdk/lib/_internal/compiler/implementation/ssa/ssa.dart b/sdk/lib/_internal/compiler/implementation/ssa/ssa.dart
index 0e83a74..9675766 100644
--- a/sdk/lib/_internal/compiler/implementation/ssa/ssa.dart
+++ b/sdk/lib/_internal/compiler/implementation/ssa/ssa.dart
@@ -12,7 +12,6 @@
import '../elements/elements.dart';
import '../js_backend/js_backend.dart';
import '../native_handler.dart' as native;
-import '../runtime_types.dart';
import '../tree/tree.dart';
import '../types/types.dart';
import '../universe/universe.dart';
diff --git a/sdk/lib/_internal/compiler/implementation/ssa/tracer.dart b/sdk/lib/_internal/compiler/implementation/ssa/tracer.dart
index e38fe7c..e724bbb 100644
--- a/sdk/lib/_internal/compiler/implementation/ssa/tracer.dart
+++ b/sdk/lib/_internal/compiler/implementation/ssa/tracer.dart
@@ -314,6 +314,11 @@
return "Integer check: $value";
}
+ String visitInterceptor(HInterceptor node) {
+ String value = temporaryId(node.inputs[0]);
+ return "Intercept: $value";
+ }
+
String visitInvokeClosure(HInvokeClosure node)
=> visitInvokeDynamic(node, "closure");
@@ -334,9 +339,6 @@
String visitInvokeDynamicSetter(HInvokeDynamicSetter node)
=> visitInvokeDynamic(node, "set");
- String visitInvokeInterceptor(HInvokeInterceptor invoke)
- => visitInvokeStatic(invoke);
-
String visitInvokeStatic(HInvokeStatic invoke) {
String target = temporaryId(invoke.target);
int offset = HInvoke.ARGUMENTS_OFFSET;
diff --git a/sdk/lib/_internal/compiler/implementation/ssa/types_propagation.dart b/sdk/lib/_internal/compiler/implementation/ssa/types_propagation.dart
index b64d2f1..31d511a 100644
--- a/sdk/lib/_internal/compiler/implementation/ssa/types_propagation.dart
+++ b/sdk/lib/_internal/compiler/implementation/ssa/types_propagation.dart
@@ -68,17 +68,14 @@
visitBasicBlock(HBasicBlock block) {
if (block.isLoopHeader()) {
block.forEachPhi((HPhi phi) {
- HType propagatedType = types[phi];
- // Once the propagation has run once, the propagated type can already
- // be set. In this case we use that one for the first iteration of the
- // loop.
- if (propagatedType.isUnknown()) {
- // Set the initial type for the phi. In theory we would need to mark
- // the type of all other incoming edges as "unitialized" and take this
- // into account when doing the propagation inside the phis. Just
- // setting the propagated type is however easier.
- types[phi] = types[phi.inputs[0]];
- }
+ // Set the initial type for the phi. We're not using the type
+ // the phi thinks it has because new optimizations may imply
+ // changing it.
+ // In theory we would need to mark
+ // the type of all other incoming edges as "unitialized" and take this
+ // into account when doing the propagation inside the phis. Just
+ // setting the propagated type is however easier.
+ types[phi] = types[phi.inputs[0]];
addToWorkList(phi);
});
} else {
diff --git a/sdk/lib/_internal/compiler/implementation/ssa/value_range_analyzer.dart b/sdk/lib/_internal/compiler/implementation/ssa/value_range_analyzer.dart
index 6439c96..b6d892b 100644
--- a/sdk/lib/_internal/compiler/implementation/ssa/value_range_analyzer.dart
+++ b/sdk/lib/_internal/compiler/implementation/ssa/value_range_analyzer.dart
@@ -628,12 +628,12 @@
return info.newRange(value, value);
}
- Range visitInvokeInterceptor(HInvokeInterceptor interceptor) {
- if (!interceptor.isInteger(types)) return info.newUnboundRange();
- if (!interceptor.isLengthGetterOnStringOrArray(types)) {
- return visitInstruction(interceptor);
+ Range visitFieldGet(HFieldGet fieldGet) {
+ if (!fieldGet.isInteger(types)) return info.newUnboundRange();
+ if (!fieldGet.receiver.isIndexablePrimitive(types)) {
+ return visitInstruction(fieldGet);
}
- LengthValue value = info.newLengthValue(interceptor);
+ LengthValue value = info.newLengthValue(fieldGet);
// We know this range is above zero. To simplify the analysis, we
// put the zero value as the lower bound of this range. This
// allows to easily remove the second bound check in the following
diff --git a/sdk/lib/_internal/compiler/implementation/string_validator.dart b/sdk/lib/_internal/compiler/implementation/string_validator.dart
index a5f15e2..b3bcb61 100644
--- a/sdk/lib/_internal/compiler/implementation/string_validator.dart
+++ b/sdk/lib/_internal/compiler/implementation/string_validator.dart
@@ -49,7 +49,7 @@
bool raw = false;
int quoteLength = 1;
int quoteChar = source.next();
- if (quoteChar === $r) {
+ if (identical(quoteChar, $r)) {
raw = true;
quoteChar = source.next();
}
@@ -90,12 +90,15 @@
int startOffset,
SourceString string,
StringQuoting quoting) {
- // We only need to check for invalid x and u escapes, for line
+ // We need to check for invalid x and u escapes, for line
// terminators in non-multiline strings, and for invalid Unicode
- // scalar values (either directly or as u-escape values).
+ // scalar values (either directly or as u-escape values). We also check
+ // for unpaired UTF-16 surrogates.
int length = 0;
int index = startOffset;
bool containsEscape = false;
+ bool previousWasLeadSurrogate = false;
+ bool invalidUtf16 = false;
for(Iterator<int> iter = string.iterator(); iter.hasNext; length++) {
index++;
int code = iter.next();
@@ -168,15 +171,26 @@
code = value;
}
}
+ if (code >= 0x10000) length++;
// This handles both unescaped characters and the value of unicode
// escapes.
- if (!isUnicodeScalarValue(code)) {
- stringParseError(
- "Invalid Unicode scalar value U+${code.toRadixString(16)}",
- token, index);
- return null;
+ if (previousWasLeadSurrogate) {
+ if (!isUtf16TrailSurrogate(code)) {
+ invalidUtf16 = true;
+ break;
+ }
+ previousWasLeadSurrogate = false;
+ } else if (isUtf16LeadSurrogate(code)) {
+ previousWasLeadSurrogate = true;
+ } else if (!isUnicodeScalarValue(code)) {
+ invalidUtf16 = true;
+ break;
}
}
+ if (previousWasLeadSurrogate || invalidUtf16) {
+ stringParseError("Invalid Utf16 surrogate", token, index);
+ return null;
+ }
// String literal successfully validated.
if (quoting.raw || !containsEscape) {
// A string without escapes could just as well have been raw.
diff --git a/sdk/lib/_internal/compiler/implementation/tree/nodes.dart b/sdk/lib/_internal/compiler/implementation/tree/nodes.dart
index d8e5473..6515a32 100644
--- a/sdk/lib/_internal/compiler/implementation/tree/nodes.dart
+++ b/sdk/lib/_internal/compiler/implementation/tree/nodes.dart
@@ -1684,7 +1684,7 @@
* Combinators filter away some identifiers from the other library.
*/
abstract class LibraryDependency extends LibraryTag {
- final LiteralString uri;
+ final StringNode uri;
final NodeList combinators;
LibraryDependency(this.uri, this.combinators);
@@ -1701,7 +1701,7 @@
final Identifier prefix;
final Token importKeyword;
- Import(this.importKeyword, LiteralString uri,
+ Import(this.importKeyword, StringNode uri,
this.prefix, NodeList combinators)
: super(uri, combinators);
@@ -1761,7 +1761,7 @@
}
class Part extends LibraryTag {
- final LiteralString uri;
+ final StringNode uri;
final Token partKeyword;
diff --git a/sdk/lib/_internal/compiler/implementation/typechecker.dart b/sdk/lib/_internal/compiler/implementation/typechecker.dart
index d4889b6..b192c23 100644
--- a/sdk/lib/_internal/compiler/implementation/typechecker.dart
+++ b/sdk/lib/_internal/compiler/implementation/typechecker.dart
@@ -36,6 +36,7 @@
static const TypeKind STATEMENT = const TypeKind('statement');
static const TypeKind TYPEDEF = const TypeKind('typedef');
static const TypeKind TYPE_VARIABLE = const TypeKind('type variable');
+ static const TypeKind MALFORMED_TYPE = const TypeKind('malformed');
static const TypeKind VOID = const TypeKind('void');
String toString() => id;
@@ -60,6 +61,19 @@
Element get element;
/**
+ * Performs the substitution [: [arguments[i]/parameters[i]]this :].
+ *
+ * The notation is known from this lambda calculus rule:
+ *
+ * (lambda x.e0)e1 -> [e1/x]e0.
+ *
+ * See [TypeVariableType] for a motivation for this method.
+ *
+ * Invariant: There must be the same number of [arguments] and [parameters].
+ */
+ DartType subst(Link<DartType> arguments, Link<DartType> parameters);
+
+ /**
* Returns the unaliased type of this type.
*
* The unaliased type of a typedef'd type is the unaliased type to which its
@@ -76,6 +90,28 @@
DartType asRaw() => this;
}
+/**
+ * Represents a type variable, that is the type parameters of a class type.
+ *
+ * For example, in [: class Array<E> { ... } :], E is a type variable.
+ *
+ * Each class should have its own unique type variables, one for each type
+ * parameter. A class with type parameters is said to be parameterized or
+ * generic.
+ *
+ * Non-static members, constructors, and factories of generic
+ * class/interface can refer to type variables of the current class
+ * (not of supertypes).
+ *
+ * When using a generic type, also known as an application or
+ * instantiation of the type, the actual type arguments should be
+ * substituted for the type variables in the class declaration.
+ *
+ * For example, given a box, [: class Box<T> { T value; } :], the
+ * type of the expression [: new Box<String>().value :] is
+ * [: String :] because we must substitute [: String :] for the
+ * the type variable [: T :].
+ */
class TypeVariableType extends DartType {
final TypeVariableElement element;
@@ -85,6 +121,29 @@
SourceString get name => element.name;
+ DartType subst(Link<DartType> arguments, Link<DartType> parameters) {
+ if (parameters.isEmpty) {
+ assert(arguments.isEmpty);
+ // Return fast on empty substitutions.
+ return this;
+ }
+ Link<DartType> parameterLink = parameters;
+ Link<DartType> argumentLink = arguments;
+ while (!argumentLink.isEmpty && !parameterLink.isEmpty) {
+ TypeVariableType parameter = parameterLink.head;
+ DartType argument = argumentLink.head;
+ if (parameter == this) {
+ assert(argumentLink.tail.isEmpty == parameterLink.tail.isEmpty);
+ return argument;
+ }
+ parameterLink = parameterLink.tail;
+ argumentLink = argumentLink.tail;
+ }
+ assert(argumentLink.isEmpty && parameterLink.isEmpty);
+ // The type variable was not substituted.
+ return this;
+ }
+
DartType unalias(Compiler compiler) => this;
int get hashCode => 17 * element.hashCode;
@@ -120,6 +179,11 @@
return (identical(this, other)) ? this : MAYBE_RETURNING;
}
+ DartType subst(Link<DartType> arguments, Link<DartType> parameters) {
+ // Statement types are not substitutable.
+ return this;
+ }
+
DartType unalias(Compiler compiler) => this;
int get hashCode => 17 * stringName.hashCode;
@@ -141,6 +205,11 @@
final VoidElement element;
+ DartType subst(Link<DartType> arguments, Link<DartType> parameters) {
+ // Void cannot be substituted.
+ return this;
+ }
+
DartType unalias(Compiler compiler) => this;
int get hashCode => 1729;
@@ -150,25 +219,90 @@
String toString() => name.slowToString();
}
+/**
+ * Helper method for performing substitution of a linked list of types.
+ *
+ * If no types are changed by the substitution, the [types] is returned instead
+ * of a newly created linked list.
+ */
+Link<DartType> substTypes(Link<DartType> types,
+ Link<DartType> arguments, Link<DartType> parameters) {
+ bool changed = false;
+ var builder = new LinkBuilder<DartType>();
+ Link<DartType> typeLink = types;
+ while (!typeLink.isEmpty) {
+ var argument = typeLink.head.subst(arguments, parameters);
+ if (!changed && !identical(argument, typeLink.head)) {
+ changed = true;
+ }
+ builder.addLast(argument);
+ typeLink = typeLink.tail;
+ }
+ if (changed) {
+ // Create a new link only if necessary.
+ return builder.toLink();
+ }
+ return types;
+}
+
+class MalformedType extends DartType {
+ const MalformedType(this.element);
+
+ TypeKind get kind => TypeKind.MALFORMED_TYPE;
+
+ SourceString get name => element.name;
+
+ final MalformedTypeElement element;
+
+ DartType unalias(Compiler compiler) => this;
+
+ int get hashCode => 1733;
+
+ bool operator ==(other) => other is MalformedType;
+
+ String toString() => name.slowToString();
+}
+
class InterfaceType extends DartType {
final Element element;
- final Link<DartType> arguments;
+ final Link<DartType> typeArguments;
- const InterfaceType(this.element,
- [this.arguments = const Link<DartType>()]);
+ InterfaceType(this.element,
+ [this.typeArguments = const Link<DartType>()]) {
+ assert(invariant(element, element.isDeclaration));
+ }
TypeKind get kind => TypeKind.INTERFACE;
SourceString get name => element.name;
+ DartType subst(Link<DartType> arguments, Link<DartType> parameters) {
+ if (typeArguments.isEmpty) {
+ // Return fast on non-generic types.
+ return this;
+ }
+ if (parameters.isEmpty) {
+ assert(arguments.isEmpty);
+ // Return fast on empty substitutions.
+ return this;
+ }
+ Link<DartType> newTypeArguments =
+ substTypes(typeArguments, arguments, parameters);
+ if (!identical(typeArguments, newTypeArguments)) {
+ // Create a new type only if necessary.
+ return new InterfaceType(element, newTypeArguments);
+ }
+ return this;
+ }
+
DartType unalias(Compiler compiler) => this;
String toString() {
StringBuffer sb = new StringBuffer();
sb.add(name.slowToString());
- if (!arguments.isEmpty) {
+ if (!typeArguments.isEmpty) {
sb.add('<');
- arguments.printOn(sb, ', ');
+ typeArguments.printOn(sb, ', ');
sb.add('>');
}
return sb.toString();
@@ -176,7 +310,7 @@
int get hashCode {
int hash = element.hashCode;
- for (Link<DartType> arguments = this.arguments;
+ for (Link<DartType> arguments = this.typeArguments;
!arguments.isEmpty;
arguments = arguments.tail) {
int argumentHash = arguments.head != null ? arguments.head.hashCode : 0;
@@ -188,11 +322,11 @@
bool operator ==(other) {
if (other is !InterfaceType) return false;
if (!identical(element, other.element)) return false;
- return arguments == other.arguments;
+ return typeArguments == other.typeArguments;
}
InterfaceType asRaw() {
- if (arguments.isEmpty) return this;
+ if (typeArguments.isEmpty) return this;
return new InterfaceType(element);
}
}
@@ -209,6 +343,25 @@
TypeKind get kind => TypeKind.FUNCTION;
+ DartType subst(Link<DartType> arguments, Link<DartType> parameters) {
+ if (parameters.isEmpty) {
+ assert(arguments.isEmpty);
+ // Return fast on empty substitutions.
+ return this;
+ }
+ var newReturnType = returnType.subst(arguments, parameters);
+ bool changed = !identical(newReturnType, returnType);
+ var newParameterTypes = substTypes(parameterTypes, arguments, parameters);
+ if (!changed && !identical(parameterTypes, newParameterTypes)) {
+ changed = true;
+ }
+ if (changed) {
+ // Create a new type only if necessary.
+ return new FunctionType(newReturnType, newParameterTypes, element);
+ }
+ return this;
+ }
+
DartType unalias(Compiler compiler) => this;
String toString() {
@@ -257,15 +410,35 @@
final Link<DartType> typeArguments;
const TypedefType(this.element,
- [this.typeArguments = const Link<DartType>()]);
+ [this.typeArguments = const Link<DartType>()]);
TypeKind get kind => TypeKind.TYPEDEF;
SourceString get name => element.name;
+ DartType subst(Link<DartType> arguments, Link<DartType> parameters) {
+ if (typeArguments.isEmpty) {
+ // Return fast on non-generic typedefs.
+ return this;
+ }
+ if (parameters.isEmpty) {
+ assert(arguments.isEmpty);
+ // Return fast on empty substitutions.
+ return this;
+ }
+ Link<DartType> newTypeArguments =
+ substTypes(typeArguments, arguments, parameters);
+ if (!identical(typeArguments, newTypeArguments)) {
+ // Create a new type only if necessary.
+ return new TypedefType(element, newTypeArguments);
+ }
+ return this;
+ }
+
DartType unalias(Compiler compiler) {
// TODO(ahe): This should be [ensureResolved].
compiler.resolveTypedef(element);
+ // TODO(johnniwinther): Perform substitution on the unaliased type.
return element.alias.unalias(compiler);
}
@@ -289,21 +462,34 @@
}
}
+/**
+ * Special type to hold the [dynamic] type. Used for correctly returning
+ * 'dynamic' on [toString].
+ */
+class DynamicType extends InterfaceType {
+ DynamicType(ClassElement element) : super(element);
+
+ String toString() => 'dynamic';
+}
+
+
class Types {
final Compiler compiler;
// TODO(karlklose): should we have a class Void?
final VoidType voidType;
final InterfaceType dynamicType;
- Types(Compiler compiler, Element dynamicElement)
+ Types(Compiler compiler, ClassElement dynamicElement)
: this.with(compiler, dynamicElement,
new LibraryElement(new Script(null, null)));
Types.with(Compiler this.compiler,
- Element dynamicElement,
+ ClassElement dynamicElement,
LibraryElement library)
: voidType = new VoidType(new VoidElement(library)),
- dynamicType = new InterfaceType(dynamicElement);
+ dynamicType = new DynamicType(dynamicElement) {
+ dynamicElement.type = dynamicType;
+ }
/** Returns true if t is a subtype of s */
bool isSubtype(DartType t, DartType s) {
@@ -319,6 +505,8 @@
if (t is VoidType) {
return false;
+ } else if (t is MalformedType) {
+ return false;
} else if (t is InterfaceType) {
if (s is !InterfaceType) return false;
ClassElement tc = t.element;
diff --git a/sdk/lib/_internal/compiler/implementation/universe/universe.dart b/sdk/lib/_internal/compiler/implementation/universe/universe.dart
index ced6600..57f445d 100644
--- a/sdk/lib/_internal/compiler/implementation/universe/universe.dart
+++ b/sdk/lib/_internal/compiler/implementation/universe/universe.dart
@@ -7,7 +7,6 @@
import '../closure.dart';
import '../elements/elements.dart';
import '../dart2jslib.dart';
-import '../runtime_types.dart';
import '../tree/tree.dart';
import '../util/util.dart';
@@ -49,7 +48,6 @@
final Map<SourceString, Set<Selector>> fieldGetters;
final Map<SourceString, Set<Selector>> fieldSetters;
final Set<DartType> isChecks;
- final RuntimeTypeInformation rti;
Universe() : generatedCode = new Map<Element, CodeBuffer>(),
generatedBailoutCode = new Map<Element, CodeBuffer>(),
@@ -60,8 +58,7 @@
invokedSetters = new Map<SourceString, Set<Selector>>(),
fieldGetters = new Map<SourceString, Set<Selector>>(),
fieldSetters = new Map<SourceString, Set<Selector>>(),
- isChecks = new Set<DartType>(),
- rti = new RuntimeTypeInformation();
+ isChecks = new Set<DartType>();
void addGeneratedCode(WorkItem work, CodeBuffer codeBuffer) {
assert(invariant(work.element, work.element.isDeclaration));
@@ -438,7 +435,8 @@
// If [self] is a subclass of [other], it inherits the
// implementation of [element].
- if (self.isSubclassOf(other)) {
+ ClassElement cls = self;
+ if (cls.isSubclassOf(other)) {
// Resolve an invocation of [element.name] on [self]. If it
// is found, this selector is a candidate.
return hasElementIn(self, element) && appliesUntyped(element, compiler);
diff --git a/sdk/lib/_internal/compiler/implementation/util/characters.dart b/sdk/lib/_internal/compiler/implementation/util/characters.dart
index 064efe7..5961d07 100644
--- a/sdk/lib/_internal/compiler/implementation/util/characters.dart
+++ b/sdk/lib/_internal/compiler/implementation/util/characters.dart
@@ -133,3 +133,11 @@
return value < $FIRST_SURROGATE ||
(value > $LAST_SURROGATE && value <= $LAST_CODE_POINT);
}
+
+bool isUtf16LeadSurrogate(int value) {
+ return value >= 0xd800 && value <= 0xdbff;
+}
+
+bool isUtf16TrailSurrogate(int value) {
+ return value >= 0xdc00 && value <= 0xdfff;
+}
diff --git a/sdk/lib/_internal/compiler/implementation/util/link.dart b/sdk/lib/_internal/compiler/implementation/util/link.dart
index b4ad7da..fe8ac30 100644
--- a/sdk/lib/_internal/compiler/implementation/util/link.dart
+++ b/sdk/lib/_internal/compiler/implementation/util/link.dart
@@ -59,8 +59,8 @@
String toString() => "[]";
}
-interface LinkBuilder<T> default LinkBuilderImplementation<T> {
- LinkBuilder();
+abstract class LinkBuilder<T> {
+ factory LinkBuilder() = LinkBuilderImplementation;
Link<T> toLink();
void addLast(T t);
diff --git a/sdk/lib/_internal/compiler/implementation/util/util.dart b/sdk/lib/_internal/compiler/implementation/util/util.dart
index 64194ea..70c1eaf 100644
--- a/sdk/lib/_internal/compiler/implementation/util/util.dart
+++ b/sdk/lib/_internal/compiler/implementation/util/util.dart
@@ -24,52 +24,75 @@
String toString() => 'Compiler crashed: $message.';
}
-/// Writes the characters of [iterator] on [buffer]. The characters
+/// Writes the characters of [string] on [buffer]. The characters
/// are escaped as suitable for JavaScript and JSON. [buffer] is
/// anything which supports [:add:] and [:addCharCode:], for example,
-/// [StringBuffer].
-void writeJsonEscapedCharsOn(Iterator<int> iterator, buffer, onError(code)) {
- while (iterator.hasNext) {
- int code = iterator.next();
- if (identical(code, $SQ)) {
- buffer.add(r"\'");
- } else if (identical(code, $LF)) {
- buffer.add(r'\n');
- } else if (identical(code, $CR)) {
- buffer.add(r'\r');
- } else if (identical(code, $LS)) {
- // This Unicode line terminator and $PS are invalid in JS string
- // literals.
- buffer.add(r'\u2028');
- } else if (identical(code, $PS)) {
- buffer.add(r'\u2029');
- } else if (identical(code, $BACKSLASH)) {
- buffer.add(r'\\');
- } else {
- if (code > 0xffff) {
- if (onError != null) onError(code);
- throw 'Unhandled non-BMP character: ${code.toRadixString(16)}';
- }
- // TODO(lrn): Consider whether all codes above 0x7f really need to
- // be escaped. We build a Dart string here, so it should be a literal
- // stage that converts it to, e.g., UTF-8 for a JS interpreter.
- if (code < 0x20) {
- buffer.add(r'\x');
- if (code < 0x10) buffer.add('0');
- buffer.add(code.toRadixString(16));
- } else if (code >= 0x80) {
- if (code < 0x100) {
- buffer.add(r'\x');
- } else {
- buffer.add(r'\u');
- if (code < 0x1000) {
- buffer.add('0');
- }
+/// [StringBuffer]. Note that JS supports \xnn and \unnnn whereas JSON only
+/// supports the \unnnn notation. Therefore we use the \unnnn notation.
+void writeJsonEscapedCharsOn(String string, buffer) {
+ void addCodeUnitEscaped(var buffer, int code) {
+ assert(code < 0x10000);
+ buffer.add(r'\u');
+ if (code < 0x1000) {
+ buffer.add('0');
+ if (code < 0x100) {
+ buffer.add('0');
+ if (code < 0x10) {
+ buffer.add('0');
}
- buffer.add(code.toRadixString(16));
+ }
+ }
+ buffer.add(code.toRadixString(16));
+ }
+
+ void writeEscapedOn(String string, var buffer) {
+ for (int i = 0; i < string.length; i++) {
+ int code = string.charCodeAt(i);
+ if (code == $DQ) {
+ buffer.add(r'\"');
+ } else if (code == $TAB) {
+ buffer.add(r'\t');
+ } else if (code == $LF) {
+ buffer.add(r'\n');
+ } else if (code == $CR) {
+ buffer.add(r'\r');
+ } else if (code == $DEL) {
+ addCodeUnitEscaped(buffer, $DEL);
+ } else if (code == $LS) {
+ // This Unicode line terminator and $PS are invalid in JS string
+ // literals.
+ addCodeUnitEscaped(buffer, $LS); // 0x2028.
+ } else if (code == $PS) {
+ addCodeUnitEscaped(buffer, $PS); // 0x2029.
+ } else if (code == $BACKSLASH) {
+ buffer.add(r'\\');
} else {
- buffer.addCharCode(code);
+ if (code < 0x20) {
+ addCodeUnitEscaped(buffer, code);
+ // We emit DEL (ASCII 0x7f) as an escape because it would be confusing
+ // to have it unescaped in a string literal. We also escape
+ // everything above 0x7f because that means we don't have to worry
+ // about whether the web server serves it up as Latin1 or UTF-8.
+ } else if (code < 0x7f) {
+ buffer.addCharCode(code);
+ } else {
+ // This will output surrogate pairs in the form \udxxx\udyyy, rather
+ // than the more logical \u{zzzzzz}. This should work in JavaScript
+ // (especially old UCS-2 based implementations) and is the only
+ // format that is allowed in JSON.
+ addCodeUnitEscaped(buffer, code);
+ }
}
}
}
+
+ for (int i = 0; i < string.length; i++) {
+ int code = string.charCodeAt(i);
+ if (code < 0x20 || code == $DEL || code == $DQ || code == $LS ||
+ code == $PS || code == $BACKSLASH || code >= 0x80) {
+ writeEscapedOn(string, buffer);
+ return;
+ }
+ }
+ buffer.add(string);
}
diff --git a/sdk/lib/_internal/compiler/implementation/world.dart b/sdk/lib/_internal/compiler/implementation/world.dart
index bea9547..9116478 100644
--- a/sdk/lib/_internal/compiler/implementation/world.dart
+++ b/sdk/lib/_internal/compiler/implementation/world.dart
@@ -76,7 +76,7 @@
compiler.resolverWorld.isChecks.forEach((DartType type) {
if (type is InterfaceType) {
InterfaceType itf = type;
- if (!itf.arguments.isEmpty) {
+ if (!itf.typeArguments.isEmpty) {
potentiallyAddForRti(itf.element, null);
}
}
@@ -126,10 +126,9 @@
// Returns whether a subclass of [superclass] implements [type].
bool hasAnySubclassThatImplements(ClassElement superclass, DartType type) {
- Set<ClassElement> typesImplementedBySubclasses =
- typesImplementedBySubclasses[superclass];
- if (typesImplementedBySubclasses == null) return false;
- return typesImplementedBySubclasses.contains(type.element);
+ Set<ClassElement> subclasses= typesImplementedBySubclasses[superclass];
+ if (subclasses == null) return false;
+ return subclasses.contains(type.element);
}
bool hasNoOverridingMember(Element element) {
diff --git a/sdk/lib/_internal/dartdoc/lib/src/dartdoc/comment_map.dart b/sdk/lib/_internal/dartdoc/lib/src/dartdoc/comment_map.dart
index 77b7e07..14f17bd 100644
--- a/sdk/lib/_internal/dartdoc/lib/src/dartdoc/comment_map.dart
+++ b/sdk/lib/_internal/dartdoc/lib/src/dartdoc/comment_map.dart
@@ -78,7 +78,7 @@
if (lastComment == null) {
lastComment = line;
} else {
- lastComment = '$lastComment$line';
+ lastComment = '$lastComment\n$line';
}
}
} else if (token.kind == dart2js.HASH_TOKEN) {
diff --git a/sdk/lib/_internal/dartdoc/test/comment_map_test.dart b/sdk/lib/_internal/dartdoc/test/comment_map_test.dart
new file mode 100644
index 0000000..3d6c4c9
--- /dev/null
+++ b/sdk/lib/_internal/dartdoc/test/comment_map_test.dart
@@ -0,0 +1,38 @@
+// Copyright (c) 2012, 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.
+
+/// Unit tests for comment map.
+library commentMapTests;
+
+import 'dart:uri';
+import 'dart:mirrors';
+
+import '../../compiler/implementation/scanner/scannerlib.dart' as dart2js;
+
+// TODO(rnystrom): Better path to unittest.
+import '../../../../../pkg/unittest/lib/unittest.dart';
+
+// TODO(rnystrom): Use "package:" URL (#4968).
+part '../lib/src/dartdoc/comment_map.dart';
+
+class FakeSourceLocation implements SourceLocation {
+ Uri get sourceUri => new Uri('file:///tmp/test.dart');
+ int get offset => 69;
+ String get sourceText => """
+ /// Testing
+ /// var testing = 'this is source code';
+ get foo => 'bar';
+ """;
+}
+
+main() {
+ test('triple slashed comments retain newlines', () {
+ Commentmap cm = new CommentMap();
+ var comment = cm.find(new FakeSourceLocation());
+ expect(
+ comment,
+ equals("Testing\n var testing = 'this is source code';")
+ );
+ });
+}
diff --git a/sdk/lib/core/comparable.dart b/sdk/lib/core/comparable.dart
index 3b38f25..92df742 100644
--- a/sdk/lib/core/comparable.dart
+++ b/sdk/lib/core/comparable.dart
@@ -31,7 +31,7 @@
* May throw an [ArgumentError] if [other] is of a type that
* is not comparable to [:this:].
*/
- abstract int compareTo(Comparable other);
+ int compareTo(Comparable other);
/**
* Compare one comparable to another.
diff --git a/sdk/lib/core/double.dart b/sdk/lib/core/double.dart
index d2eb73e..2f8b529 100644
--- a/sdk/lib/core/double.dart
+++ b/sdk/lib/core/double.dart
@@ -22,22 +22,22 @@
static const double MAX_FINITE = 1.7976931348623157e+308;
/** Return the remainder from dividing this [double] by [other]. */
- abstract double remainder(num other);
+ double remainder(num other);
/** Addition operator. */
- abstract double operator +(num other);
+ double operator +(num other);
/** Subtraction operator. */
- abstract double operator -(num other);
+ double operator -(num other);
/** Multiplication operator. */
- abstract double operator *(num other);
+ double operator *(num other);
/** Euclidean modulo operator. */
- abstract double operator %(num other);
+ double operator %(num other);
/** Division operator. */
- abstract double operator /(num other);
+ double operator /(num other);
/**
* Truncating division operator.
@@ -45,13 +45,13 @@
* The result of the truncating division [:a ~/ b:] is equivalent to
* [:(a / b).truncate():].
*/
- abstract double operator ~/(num other);
+ double operator ~/(num other);
/** Negate operator. */
- abstract double operator -();
+ double operator -();
/** Returns the absolute value of this [double]. */
- abstract double abs();
+ double abs();
/**
* Returns the integer value closest to this [double].
@@ -59,19 +59,19 @@
* Rounds away from zero when there is no closest integer:
* [:(3.5).round() == 4:] and [:(-3.5).round() == -4:].
*/
- abstract double round();
+ double round();
/** Returns the greatest integer value no greater than this [double]. */
- abstract double floor();
+ double floor();
/** Returns the least integer value that is no smaller than this [double]. */
- abstract double ceil();
+ double ceil();
/**
* Returns the integer value obtained by discarding any fractional
* digits from this [double].
*/
- abstract double truncate();
+ double truncate();
/**
* Provide a representation of this [double] value.
@@ -86,7 +86,7 @@
* It should always be the case that if [:d:] is a [double], then
* [:d == double.parse(d.toString()):].
*/
- abstract String toString();
+ String toString();
/**
* Parse [source] as an double literal and return its value.
diff --git a/sdk/lib/core/errors.dart b/sdk/lib/core/errors.dart
index 7ce8628..eeb0c04 100644
--- a/sdk/lib/core/errors.dart
+++ b/sdk/lib/core/errors.dart
@@ -4,6 +4,31 @@
class Error {
const Error();
+
+ /**
+ * Safely convert a value to a [String] description.
+ *
+ * The conversion is guaranteed to not throw, so it won't use the object's
+ * toString method.
+ */
+ static String safeToString(Object object) {
+ if (object is int || object is double || object is bool || null == object) {
+ return object.toString();
+ }
+ if (object is String) {
+ // TODO(ahe): Remove backslash when http://dartbug.com/4995 is fixed.
+ const backslash = '\\';
+ String escaped = object
+ .replaceAll('$backslash', '$backslash$backslash')
+ .replaceAll('\n', '${backslash}n')
+ .replaceAll('\r', '${backslash}r')
+ .replaceAll('"', '$backslash"');
+ return '"$escaped"';
+ }
+ return _objectToString(object);
+ }
+
+ external static String _objectToString(Object object);
}
/**
@@ -25,13 +50,21 @@
}
/**
+ * Error thrown when attempting to throw [:null:].
+ */
+class NullThrownError implements Error {
+ const NullThrownError();
+ String toString() => "Throw of null.";
+}
+
+/**
* Error thrown when a function is passed an unacceptable argument.
*/
class ArgumentError implements Error {
final message;
/** The [message] describes the erroneous argument. */
- const ArgumentError([this.message]);
+ ArgumentError([this.message]);
String toString() {
if (message != null) {
@@ -120,7 +153,7 @@
if (i > 0) {
sb.add(", ");
}
- sb.add(safeToString(_arguments[i]));
+ sb.add(Error.safeToString(_arguments[i]));
}
}
if (_namedArguments != null) {
@@ -130,13 +163,13 @@
}
sb.add(key);
sb.add(": ");
- sb.add(safeToString(value));
+ sb.add(Error.safeToString(value));
i++;
});
}
if (_existingArgumentNames == null) {
return "NoSuchMethodError : method not found: '$_memberName'\n"
- "Receiver: ${safeToString(_receiver)}\n"
+ "Receiver: ${Error.safeToString(_receiver)}\n"
"Arguments: [$sb]";
} else {
String actualParameters = sb.toString();
@@ -150,30 +183,11 @@
String formalParameters = sb.toString();
return "NoSuchMethodError: incorrect number of arguments passed to "
"method named '$_memberName'\n"
- "Receiver: ${safeToString(_receiver)}\n"
+ "Receiver: ${Error.safeToString(_receiver)}\n"
"Tried calling: $_memberName($actualParameters)\n"
"Found: $_memberName($formalParameters)";
}
}
-
- static String safeToString(Object object) {
- if (object is int || object is double || object is bool || null == object) {
- return object.toString();
- }
- if (object is String) {
- // TODO(ahe): Remove backslash when http://dartbug.com/4995 is fixed.
- const backslash = '\\';
- String escaped = object
- .replaceAll('$backslash', '$backslash$backslash')
- .replaceAll('\n', '${backslash}n')
- .replaceAll('\r', '${backslash}r')
- .replaceAll('"', '$backslash"');
- return '"$escaped"';
- }
- return _objectToString(object);
- }
-
- external static String _objectToString(Object object);
}
diff --git a/sdk/lib/core/exceptions.dart b/sdk/lib/core/exceptions.dart
index 61f3f89..afe3285 100644
--- a/sdk/lib/core/exceptions.dart
+++ b/sdk/lib/core/exceptions.dart
@@ -5,19 +5,31 @@
// Exceptions are thrown either by the VM or from Dart code.
/**
- * Interface implemented by all core library exceptions.
- * Defaults to an implementation that only carries a simple message.
+ * A marker interface implemented by all core library exceptions.
+ *
+ * An [Exception] is intended to convey information to the user about a failure,
+ * so that the error can be addressed programmatically. It is intended to be
+ * caught, and it should contain useful data fields.
+ *
+ * Creating instances of [Exception] directly with [:new Exception("message"):]
+ * is discouraged, and only included as a temporary measure during development,
+ * until the actual exceptions used by a library are done.
*/
abstract class Exception {
- const factory Exception([var message]) = _ExceptionImplementation;
+ factory Exception([var message]) => new _ExceptionImplementation(message);
}
/** Default implementation of [Exception] which carries a message. */
class _ExceptionImplementation implements Exception {
final message;
- const _ExceptionImplementation([this.message]);
- String toString() => (message == null) ? "Exception" : "Exception: $message";
+
+ _ExceptionImplementation([this.message]);
+
+ String toString() {
+ if (message == null) return "Exception";
+ return "Exception: $message";
+ }
}
@@ -40,25 +52,6 @@
}
-class NullPointerException implements Exception {
- const NullPointerException([this.functionName, this.arguments = const []]);
- String toString() {
- if (functionName == null) {
- return exceptionName;
- } else {
- return "$exceptionName : method: '$functionName'\n"
- "Receiver: null\n"
- "Arguments: $arguments";
- }
- }
-
- String get exceptionName => "NullPointerException";
-
- final String functionName;
- final List arguments;
-}
-
-
class IllegalJSRegExpException implements Exception {
const IllegalJSRegExpException(String this._pattern, String this._errmsg);
String toString() => "IllegalJSRegExpException: '$_pattern' '$_errmsg'";
diff --git a/sdk/lib/core/future_impl.dart b/sdk/lib/core/future_impl.dart
index bbae82d..2c22e46 100644
--- a/sdk/lib/core/future_impl.dart
+++ b/sdk/lib/core/future_impl.dart
@@ -27,6 +27,11 @@
bool _exceptionHandled = false;
/**
+ * true if an exception in this future should be thrown to the top level.
+ */
+ bool _throwOnException = false;
+
+ /**
* Listeners waiting to receive the value of this future.
*/
final List<Function> _successListeners;
@@ -88,12 +93,21 @@
if (hasValue) {
onSuccess(value);
} else if (!isComplete) {
+ _throwOnException = true;
_successListeners.add(onSuccess);
} else if (!_exceptionHandled) {
throw new FutureUnhandledException(_exception, stackTrace);
}
}
+ void _handleSuccess(void onSuccess(T value)) {
+ if (hasValue) {
+ onSuccess(value);
+ } else if (!isComplete) {
+ _successListeners.add(onSuccess);
+ }
+ }
+
void handleException(bool onException(Object exception)) {
if (_exceptionHandled) return;
if (_isComplete) {
@@ -135,7 +149,7 @@
listener(value);
}
} else {
- if (!_exceptionHandled && _successListeners.length > 0) {
+ if (!_exceptionHandled && _throwOnException) {
throw new FutureUnhandledException(_exception, stackTrace);
}
}
@@ -174,7 +188,7 @@
_forwardException(this, completer);
- then((v) {
+ _handleSuccess((v) {
var transformed = null;
try {
transformed = transformation(v);
@@ -192,7 +206,7 @@
final completer = new Completer();
_forwardException(this, completer);
- then((v) {
+ _handleSuccess((v) {
var future = null;
try {
future = transformation(v);
@@ -223,10 +237,10 @@
} catch (innerException, stackTrace) {
completer.completeException(innerException, stackTrace);
}
- return true;
+ return false;
});
- then(completer.complete);
+ _handleSuccess(completer.complete);
return completer.future;
}
@@ -236,7 +250,7 @@
*/
_forward(Future future, Completer completer) {
_forwardException(future, completer);
- future.then(completer.complete);
+ future._handleSuccess(completer.complete);
}
/**
@@ -245,7 +259,7 @@
_forwardException(Future future, Completer completer) {
future.handleException((e) {
completer.completeException(e, future.stackTrace);
- return true;
+ return false;
});
}
}
diff --git a/sdk/lib/core/hashable.dart b/sdk/lib/core/hashable.dart
index aaf345b..b0361d0 100644
--- a/sdk/lib/core/hashable.dart
+++ b/sdk/lib/core/hashable.dart
@@ -13,5 +13,5 @@
*/
abstract class Hashable {
// TODO(lrn): http://darbug.com/5522
- abstract int get hashCode;
+ int get hashCode;
}
diff --git a/sdk/lib/core/list.dart b/sdk/lib/core/list.dart
index b4948a3..43a9887 100644
--- a/sdk/lib/core/list.dart
+++ b/sdk/lib/core/list.dart
@@ -6,8 +6,7 @@
* A [List] is an indexable collection with a length. It can be of
* fixed size or extendable.
*/
-interface List<E> extends Collection<E>, Sequence<E>
- default _ListImpl<E> {
+abstract class List<E> implements Collection<E>, Sequence<E> {
/**
* Creates a list of the given [length].
*
@@ -17,13 +16,19 @@
* If a [length] argument is supplied, a fixed size list of that
* length is created.
*/
- List([int length]);
+ external factory List([int length]);
/**
* Creates a list with the elements of [other]. The order in
* the list will be the order provided by the iterator of [other].
*/
- List.from(Iterable<E> other);
+ factory List.from(Iterable<E> other) {
+ var list = new List<E>();
+ for (var e in other) {
+ list.add(e);
+ }
+ return list;
+ }
/**
* Returns the element at the given [index] in the list or throws
@@ -123,6 +128,12 @@
E removeLast();
/**
+ * Returns the first element of the list, or throws an out of bounds
+ * exception if the list is empty.
+ */
+ E get first;
+
+ /**
* Returns the last element of the list, or throws an out of bounds
* exception if the list is empty.
*/
@@ -174,20 +185,3 @@
*/
void insertRange(int start, int length, [E initialValue]);
}
-
-class _ListImpl<E> {
- /**
- * Factory implementation of List().
- *
- * Creates a list of the given [length].
- */
- external factory List([int length]);
-
- /**
- * Factory implementation of List.from().
- *
- * Creates a list with the elements of [other]. The order in
- * the list will be the order provided by the iterator of [other].
- */
- external factory List.from(Iterable<E> other);
-}
diff --git a/sdk/lib/core/map.dart b/sdk/lib/core/map.dart
index 58c9bf2..e9b52b6 100644
--- a/sdk/lib/core/map.dart
+++ b/sdk/lib/core/map.dart
@@ -189,7 +189,7 @@
}
int _probeForAdding(K key) {
- if (key == null) throw const NullPointerException();
+ if (key == null) throw new ArgumentError(null);
int hash = _firstProbe(key.hashCode, _keys.length);
int numberOfProbes = 1;
int initialHash = hash;
@@ -224,7 +224,7 @@
}
int _probeForLookup(K key) {
- if (key == null) throw const NullPointerException();
+ if (key == null) throw new ArgumentError(null);
int hash = _firstProbe(key.hashCode, _keys.length);
int numberOfProbes = 1;
int initialHash = hash;
diff --git a/sdk/lib/core/sequences.dart b/sdk/lib/core/sequences.dart
index fcf8225a..d671cb5 100644
--- a/sdk/lib/core/sequences.dart
+++ b/sdk/lib/core/sequences.dart
@@ -117,6 +117,7 @@
return -1;
}
+ E get first => sequence[0];
E get last => sequence[sequence.length - 1];
List<E> getRange(int start, int length) {
diff --git a/sdk/lib/core/string.dart b/sdk/lib/core/string.dart
index f2d0e61..19b472e 100644
--- a/sdk/lib/core/string.dart
+++ b/sdk/lib/core/string.dart
@@ -76,10 +76,13 @@
String substring(int startIndex, [int endIndex]);
/**
- * Removes leading and trailing whitespace from a string. If the
- * string contains leading or trailing whitespace a new string with
- * no leading and no trailing whitespace is returned. Otherwise, the
- * string itself is returned.
+ * Removes leading and trailing whitespace from a string. If the string
+ * contains leading or trailing whitespace a new string with no leading and
+ * no trailing whitespace is returned. Otherwise, the string itself is
+ * returned. Whitespace is defined as every Unicode character in the Zs, Zl
+ * and Zp categories (this includes no-break space), the spacing control
+ * characters from 9 to 13 (tab, lf, vtab, ff and cr), and 0xfeff the BOM
+ * character.
*/
String trim();
diff --git a/sdk/lib/crypto/crypto.dart b/sdk/lib/crypto/crypto.dart
index 1064ca0..078b21d 100644
--- a/sdk/lib/crypto/crypto.dart
+++ b/sdk/lib/crypto/crypto.dart
@@ -44,7 +44,10 @@
Hash newInstance();
/**
- * Block size of the hash in bytes.
+ * Internal block size of the hash in bytes.
+ *
+ * This is exposed for use by the HMAC class which needs to know the
+ * block size for the [Hash] it is using.
*/
int get blockSize;
}
@@ -95,6 +98,18 @@
* as a list of bytes.
*/
List<int> digest();
+
+ /**
+ * Verify that the HMAC computed for the data so far matches the
+ * given message digest.
+ *
+ * This method should be used instead of memcmp-style comparisons
+ * to avoid leaking information via timing.
+ *
+ * Throws an exception if the given digest does not have the same
+ * size as the digest computed by this HMAC instance.
+ */
+ bool verify(List<int> digest);
}
/**
diff --git a/sdk/lib/crypto/hmac.dart b/sdk/lib/crypto/hmac.dart
index c73bd8f..d7e3d98 100644
--- a/sdk/lib/crypto/hmac.dart
+++ b/sdk/lib/crypto/hmac.dart
@@ -49,6 +49,20 @@
return _hash.update(padding).update(innerHash).digest();
}
+ bool verify(List<int> digest) {
+ var computedDigest = this.digest();
+ if (digest.length != computedDigest.length) {
+ throw new ArgumentError(
+ 'Invalid digest size: ${digest.length} in HMAC.verify. '
+ 'Expected: ${_hash.blockSize}.');
+ }
+ int result = 0;
+ for (var i = 0; i < digest.length; i++) {
+ result |= digest[i] ^ computedDigest[i];
+ }
+ return result == 0;
+ }
+
// HMAC internal state.
Hash _hash;
List<int> _key;
diff --git a/sdk/lib/html/dart2js/html_dart2js.dart b/sdk/lib/html/dart2js/html_dart2js.dart
index 1fa9db2..f9891b3 100644
--- a/sdk/lib/html/dart2js/html_dart2js.dart
+++ b/sdk/lib/html/dart2js/html_dart2js.dart
@@ -48,22 +48,20 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName AbstractWorker
+/// @domName AbstractWorker; @docsEditable true
class AbstractWorker extends EventTarget native "*AbstractWorker" {
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
AbstractWorkerEvents get on =>
new AbstractWorkerEvents(this);
- /** @domName AbstractWorker.addEventListener */
+ /// @domName AbstractWorker.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName AbstractWorker.dispatchEvent */
+ /// @domName AbstractWorker.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event evt) native "dispatchEvent";
- /** @domName AbstractWorker.removeEventListener */
+ /// @domName AbstractWorker.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
}
@@ -77,31 +75,31 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName AnalyserNode
+/// @domName AnalyserNode; @docsEditable true
class AnalyserNode extends AudioNode native "*AnalyserNode" {
- /** @domName AnalyserNode.fftSize */
+ /// @domName AnalyserNode.fftSize; @docsEditable true
int fftSize;
- /** @domName AnalyserNode.frequencyBinCount */
+ /// @domName AnalyserNode.frequencyBinCount; @docsEditable true
final int frequencyBinCount;
- /** @domName AnalyserNode.maxDecibels */
+ /// @domName AnalyserNode.maxDecibels; @docsEditable true
num maxDecibels;
- /** @domName AnalyserNode.minDecibels */
+ /// @domName AnalyserNode.minDecibels; @docsEditable true
num minDecibels;
- /** @domName AnalyserNode.smoothingTimeConstant */
+ /// @domName AnalyserNode.smoothingTimeConstant; @docsEditable true
num smoothingTimeConstant;
- /** @domName AnalyserNode.getByteFrequencyData */
+ /// @domName AnalyserNode.getByteFrequencyData; @docsEditable true
void getByteFrequencyData(Uint8Array array) native;
- /** @domName AnalyserNode.getByteTimeDomainData */
+ /// @domName AnalyserNode.getByteTimeDomainData; @docsEditable true
void getByteTimeDomainData(Uint8Array array) native;
- /** @domName AnalyserNode.getFloatFrequencyData */
+ /// @domName AnalyserNode.getFloatFrequencyData; @docsEditable true
void getFloatFrequencyData(Float32Array array) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -109,77 +107,76 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLAnchorElement
+/// @domName HTMLAnchorElement; @docsEditable true
class AnchorElement extends Element implements Element native "*HTMLAnchorElement" {
factory AnchorElement({String href}) {
- if (!?href) {
- return _Elements.createAnchorElement();
- }
- return _Elements.createAnchorElement(href);
+ var e = document.$dom_createElement("a");
+ if (href != null) e.href = href;
+ return e;
}
- /** @domName HTMLAnchorElement.charset */
+ /// @domName HTMLAnchorElement.charset; @docsEditable true
String charset;
- /** @domName HTMLAnchorElement.coords */
+ /// @domName HTMLAnchorElement.coords; @docsEditable true
String coords;
- /** @domName HTMLAnchorElement.download */
+ /// @domName HTMLAnchorElement.download; @docsEditable true
String download;
- /** @domName HTMLAnchorElement.hash */
+ /// @domName HTMLAnchorElement.hash; @docsEditable true
String hash;
- /** @domName HTMLAnchorElement.host */
+ /// @domName HTMLAnchorElement.host; @docsEditable true
String host;
- /** @domName HTMLAnchorElement.hostname */
+ /// @domName HTMLAnchorElement.hostname; @docsEditable true
String hostname;
- /** @domName HTMLAnchorElement.href */
+ /// @domName HTMLAnchorElement.href; @docsEditable true
String href;
- /** @domName HTMLAnchorElement.hreflang */
+ /// @domName HTMLAnchorElement.hreflang; @docsEditable true
String hreflang;
- /** @domName HTMLAnchorElement.name */
+ /// @domName HTMLAnchorElement.name; @docsEditable true
String name;
- /** @domName HTMLAnchorElement.origin */
+ /// @domName HTMLAnchorElement.origin; @docsEditable true
final String origin;
- /** @domName HTMLAnchorElement.pathname */
+ /// @domName HTMLAnchorElement.pathname; @docsEditable true
String pathname;
- /** @domName HTMLAnchorElement.ping */
+ /// @domName HTMLAnchorElement.ping; @docsEditable true
String ping;
- /** @domName HTMLAnchorElement.port */
+ /// @domName HTMLAnchorElement.port; @docsEditable true
String port;
- /** @domName HTMLAnchorElement.protocol */
+ /// @domName HTMLAnchorElement.protocol; @docsEditable true
String protocol;
- /** @domName HTMLAnchorElement.rel */
+ /// @domName HTMLAnchorElement.rel; @docsEditable true
String rel;
- /** @domName HTMLAnchorElement.rev */
+ /// @domName HTMLAnchorElement.rev; @docsEditable true
String rev;
- /** @domName HTMLAnchorElement.search */
+ /// @domName HTMLAnchorElement.search; @docsEditable true
String search;
- /** @domName HTMLAnchorElement.shape */
+ /// @domName HTMLAnchorElement.shape; @docsEditable true
String shape;
- /** @domName HTMLAnchorElement.target */
+ /// @domName HTMLAnchorElement.target; @docsEditable true
String target;
- /** @domName HTMLAnchorElement.type */
+ /// @domName HTMLAnchorElement.type; @docsEditable true
String type;
- /** @domName HTMLAnchorElement.toString */
+ /// @domName HTMLAnchorElement.toString; @docsEditable true
String toString() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -187,7 +184,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebKitAnimation
+/// @domName WebKitAnimation; @docsEditable true
class Animation native "*WebKitAnimation" {
static const int DIRECTION_ALTERNATE = 1;
@@ -202,37 +199,37 @@
static const int FILL_NONE = 0;
- /** @domName WebKitAnimation.delay */
+ /// @domName WebKitAnimation.delay; @docsEditable true
final num delay;
- /** @domName WebKitAnimation.direction */
+ /// @domName WebKitAnimation.direction; @docsEditable true
final int direction;
- /** @domName WebKitAnimation.duration */
+ /// @domName WebKitAnimation.duration; @docsEditable true
final num duration;
- /** @domName WebKitAnimation.elapsedTime */
+ /// @domName WebKitAnimation.elapsedTime; @docsEditable true
num elapsedTime;
- /** @domName WebKitAnimation.ended */
+ /// @domName WebKitAnimation.ended; @docsEditable true
final bool ended;
- /** @domName WebKitAnimation.fillMode */
+ /// @domName WebKitAnimation.fillMode; @docsEditable true
final int fillMode;
- /** @domName WebKitAnimation.iterationCount */
+ /// @domName WebKitAnimation.iterationCount; @docsEditable true
final int iterationCount;
- /** @domName WebKitAnimation.name */
+ /// @domName WebKitAnimation.name; @docsEditable true
final String name;
- /** @domName WebKitAnimation.paused */
+ /// @domName WebKitAnimation.paused; @docsEditable true
final bool paused;
- /** @domName WebKitAnimation.pause */
+ /// @domName WebKitAnimation.pause; @docsEditable true
void pause() native;
- /** @domName WebKitAnimation.play */
+ /// @domName WebKitAnimation.play; @docsEditable true
void play() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -240,13 +237,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebKitAnimationEvent
+/// @domName WebKitAnimationEvent; @docsEditable true
class AnimationEvent extends Event native "*WebKitAnimationEvent" {
- /** @domName WebKitAnimationEvent.animationName */
+ /// @domName WebKitAnimationEvent.animationName; @docsEditable true
final String animationName;
- /** @domName WebKitAnimationEvent.elapsedTime */
+ /// @domName WebKitAnimationEvent.elapsedTime; @docsEditable true
final num elapsedTime;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -254,40 +251,40 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLAppletElement
+/// @domName HTMLAppletElement; @docsEditable true
class AppletElement extends Element implements Element native "*HTMLAppletElement" {
- /** @domName HTMLAppletElement.align */
+ /// @domName HTMLAppletElement.align; @docsEditable true
String align;
- /** @domName HTMLAppletElement.alt */
+ /// @domName HTMLAppletElement.alt; @docsEditable true
String alt;
- /** @domName HTMLAppletElement.archive */
+ /// @domName HTMLAppletElement.archive; @docsEditable true
String archive;
- /** @domName HTMLAppletElement.code */
+ /// @domName HTMLAppletElement.code; @docsEditable true
String code;
- /** @domName HTMLAppletElement.codeBase */
+ /// @domName HTMLAppletElement.codeBase; @docsEditable true
String codeBase;
- /** @domName HTMLAppletElement.height */
+ /// @domName HTMLAppletElement.height; @docsEditable true
String height;
- /** @domName HTMLAppletElement.hspace */
+ /// @domName HTMLAppletElement.hspace; @docsEditable true
String hspace;
- /** @domName HTMLAppletElement.name */
+ /// @domName HTMLAppletElement.name; @docsEditable true
String name;
- /** @domName HTMLAppletElement.object */
+ /// @domName HTMLAppletElement.object; @docsEditable true
String object;
- /** @domName HTMLAppletElement.vspace */
+ /// @domName HTMLAppletElement.vspace; @docsEditable true
String vspace;
- /** @domName HTMLAppletElement.width */
+ /// @domName HTMLAppletElement.width; @docsEditable true
String width;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -295,51 +292,51 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLAreaElement
+/// @domName HTMLAreaElement; @docsEditable true
class AreaElement extends Element implements Element native "*HTMLAreaElement" {
- factory AreaElement() => _Elements.createAreaElement();
+ factory AreaElement() => document.$dom_createElement("area");
- /** @domName HTMLAreaElement.alt */
+ /// @domName HTMLAreaElement.alt; @docsEditable true
String alt;
- /** @domName HTMLAreaElement.coords */
+ /// @domName HTMLAreaElement.coords; @docsEditable true
String coords;
- /** @domName HTMLAreaElement.hash */
+ /// @domName HTMLAreaElement.hash; @docsEditable true
final String hash;
- /** @domName HTMLAreaElement.host */
+ /// @domName HTMLAreaElement.host; @docsEditable true
final String host;
- /** @domName HTMLAreaElement.hostname */
+ /// @domName HTMLAreaElement.hostname; @docsEditable true
final String hostname;
- /** @domName HTMLAreaElement.href */
+ /// @domName HTMLAreaElement.href; @docsEditable true
String href;
- /** @domName HTMLAreaElement.noHref */
+ /// @domName HTMLAreaElement.noHref; @docsEditable true
bool noHref;
- /** @domName HTMLAreaElement.pathname */
+ /// @domName HTMLAreaElement.pathname; @docsEditable true
final String pathname;
- /** @domName HTMLAreaElement.ping */
+ /// @domName HTMLAreaElement.ping; @docsEditable true
String ping;
- /** @domName HTMLAreaElement.port */
+ /// @domName HTMLAreaElement.port; @docsEditable true
final String port;
- /** @domName HTMLAreaElement.protocol */
+ /// @domName HTMLAreaElement.protocol; @docsEditable true
final String protocol;
- /** @domName HTMLAreaElement.search */
+ /// @domName HTMLAreaElement.search; @docsEditable true
final String search;
- /** @domName HTMLAreaElement.shape */
+ /// @domName HTMLAreaElement.shape; @docsEditable true
String shape;
- /** @domName HTMLAreaElement.target */
+ /// @domName HTMLAreaElement.target; @docsEditable true
String target;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -347,15 +344,15 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName ArrayBuffer
+/// @domName ArrayBuffer; @docsEditable true
class ArrayBuffer native "*ArrayBuffer" {
factory ArrayBuffer(int length) => _ArrayBufferFactoryProvider.createArrayBuffer(length);
- /** @domName ArrayBuffer.byteLength */
+ /// @domName ArrayBuffer.byteLength; @docsEditable true
final int byteLength;
- /** @domName ArrayBuffer.slice */
+ /// @domName ArrayBuffer.slice; @docsEditable true
ArrayBuffer slice(int begin, [int end]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -363,16 +360,16 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName ArrayBufferView
+/// @domName ArrayBufferView; @docsEditable true
class ArrayBufferView native "*ArrayBufferView" {
- /** @domName ArrayBufferView.buffer */
+ /// @domName ArrayBufferView.buffer; @docsEditable true
final ArrayBuffer buffer;
- /** @domName ArrayBufferView.byteLength */
+ /// @domName ArrayBufferView.byteLength; @docsEditable true
final int byteLength;
- /** @domName ArrayBufferView.byteOffset */
+ /// @domName ArrayBufferView.byteOffset; @docsEditable true
final int byteOffset;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -380,22 +377,22 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Attr
+/// @domName Attr; @docsEditable true
class Attr extends Node native "*Attr" {
- /** @domName Attr.isId */
+ /// @domName Attr.isId; @docsEditable true
final bool isId;
- /** @domName Attr.name */
+ /// @domName Attr.name; @docsEditable true
final String name;
- /** @domName Attr.ownerElement */
+ /// @domName Attr.ownerElement; @docsEditable true
final Element ownerElement;
- /** @domName Attr.specified */
+ /// @domName Attr.specified; @docsEditable true
final bool specified;
- /** @domName Attr.value */
+ /// @domName Attr.value; @docsEditable true
String value;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -403,25 +400,25 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName AudioBuffer
+/// @domName AudioBuffer; @docsEditable true
class AudioBuffer native "*AudioBuffer" {
- /** @domName AudioBuffer.duration */
+ /// @domName AudioBuffer.duration; @docsEditable true
final num duration;
- /** @domName AudioBuffer.gain */
+ /// @domName AudioBuffer.gain; @docsEditable true
num gain;
- /** @domName AudioBuffer.length */
+ /// @domName AudioBuffer.length; @docsEditable true
final int length;
- /** @domName AudioBuffer.numberOfChannels */
+ /// @domName AudioBuffer.numberOfChannels; @docsEditable true
final int numberOfChannels;
- /** @domName AudioBuffer.sampleRate */
+ /// @domName AudioBuffer.sampleRate; @docsEditable true
final num sampleRate;
- /** @domName AudioBuffer.getChannelData */
+ /// @domName AudioBuffer.getChannelData; @docsEditable true
Float32Array getChannelData(int channelIndex) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -477,25 +474,25 @@
static const int UNSCHEDULED_STATE = 0;
- /** @domName AudioBufferSourceNode.buffer */
+ /// @domName AudioBufferSourceNode.buffer; @docsEditable true
AudioBuffer buffer;
- /** @domName AudioBufferSourceNode.gain */
+ /// @domName AudioBufferSourceNode.gain; @docsEditable true
final AudioGain gain;
- /** @domName AudioBufferSourceNode.loop */
+ /// @domName AudioBufferSourceNode.loop; @docsEditable true
bool loop;
- /** @domName AudioBufferSourceNode.loopEnd */
+ /// @domName AudioBufferSourceNode.loopEnd; @docsEditable true
num loopEnd;
- /** @domName AudioBufferSourceNode.loopStart */
+ /// @domName AudioBufferSourceNode.loopStart; @docsEditable true
num loopStart;
- /** @domName AudioBufferSourceNode.playbackRate */
+ /// @domName AudioBufferSourceNode.playbackRate; @docsEditable true
final AudioParam playbackRate;
- /** @domName AudioBufferSourceNode.playbackState */
+ /// @domName AudioBufferSourceNode.playbackState; @docsEditable true
final int playbackState;
}
@@ -507,76 +504,74 @@
class AudioContext extends EventTarget native "*AudioContext" {
factory AudioContext() => _AudioContextFactoryProvider.createAudioContext();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
AudioContextEvents get on =>
new AudioContextEvents(this);
- /** @domName AudioContext.activeSourceCount */
+ /// @domName AudioContext.activeSourceCount; @docsEditable true
final int activeSourceCount;
- /** @domName AudioContext.currentTime */
+ /// @domName AudioContext.currentTime; @docsEditable true
final num currentTime;
- /** @domName AudioContext.destination */
+ /// @domName AudioContext.destination; @docsEditable true
final AudioDestinationNode destination;
- /** @domName AudioContext.listener */
+ /// @domName AudioContext.listener; @docsEditable true
final AudioListener listener;
- /** @domName AudioContext.sampleRate */
+ /// @domName AudioContext.sampleRate; @docsEditable true
final num sampleRate;
- /** @domName AudioContext.createAnalyser */
+ /// @domName AudioContext.createAnalyser; @docsEditable true
AnalyserNode createAnalyser() native;
- /** @domName AudioContext.createBiquadFilter */
+ /// @domName AudioContext.createBiquadFilter; @docsEditable true
BiquadFilterNode createBiquadFilter() native;
- /** @domName AudioContext.createBuffer */
+ /// @domName AudioContext.createBuffer; @docsEditable true
AudioBuffer createBuffer(buffer_OR_numberOfChannels, mixToMono_OR_numberOfFrames, [num sampleRate]) native;
- /** @domName AudioContext.createBufferSource */
+ /// @domName AudioContext.createBufferSource; @docsEditable true
AudioBufferSourceNode createBufferSource() native;
- /** @domName AudioContext.createChannelMerger */
+ /// @domName AudioContext.createChannelMerger; @docsEditable true
ChannelMergerNode createChannelMerger([int numberOfInputs]) native;
- /** @domName AudioContext.createChannelSplitter */
+ /// @domName AudioContext.createChannelSplitter; @docsEditable true
ChannelSplitterNode createChannelSplitter([int numberOfOutputs]) native;
- /** @domName AudioContext.createConvolver */
+ /// @domName AudioContext.createConvolver; @docsEditable true
ConvolverNode createConvolver() native;
- /** @domName AudioContext.createDelay */
+ /// @domName AudioContext.createDelay; @docsEditable true
DelayNode createDelay([num maxDelayTime]) native;
- /** @domName AudioContext.createDynamicsCompressor */
+ /// @domName AudioContext.createDynamicsCompressor; @docsEditable true
DynamicsCompressorNode createDynamicsCompressor() native;
- /** @domName AudioContext.createMediaElementSource */
+ /// @domName AudioContext.createMediaElementSource; @docsEditable true
MediaElementAudioSourceNode createMediaElementSource(MediaElement mediaElement) native;
- /** @domName AudioContext.createMediaStreamSource */
+ /// @domName AudioContext.createMediaStreamSource; @docsEditable true
MediaStreamAudioSourceNode createMediaStreamSource(MediaStream mediaStream) native;
- /** @domName AudioContext.createOscillator */
+ /// @domName AudioContext.createOscillator; @docsEditable true
OscillatorNode createOscillator() native;
- /** @domName AudioContext.createPanner */
+ /// @domName AudioContext.createPanner; @docsEditable true
PannerNode createPanner() native;
- /** @domName AudioContext.createWaveShaper */
+ /// @domName AudioContext.createWaveShaper; @docsEditable true
WaveShaperNode createWaveShaper() native;
- /** @domName AudioContext.createWaveTable */
+ /// @domName AudioContext.createWaveTable; @docsEditable true
WaveTable createWaveTable(Float32Array real, Float32Array imag) native;
- /** @domName AudioContext.decodeAudioData */
+ /// @domName AudioContext.decodeAudioData; @docsEditable true
void decodeAudioData(ArrayBuffer audioData, AudioBufferCallback successCallback, [AudioBufferCallback errorCallback]) native;
- /** @domName AudioContext.startRendering */
+ /// @domName AudioContext.startRendering; @docsEditable true
void startRendering() native;
GainNode createGain() {
@@ -614,10 +609,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName AudioDestinationNode
+/// @domName AudioDestinationNode; @docsEditable true
class AudioDestinationNode extends AudioNode native "*AudioDestinationNode" {
- /** @domName AudioDestinationNode.numberOfChannels */
+ /// @domName AudioDestinationNode.numberOfChannels; @docsEditable true
final int numberOfChannels;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -625,7 +620,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLAudioElement
+/// @domName HTMLAudioElement; @docsEditable true
class AudioElement extends MediaElement native "*HTMLAudioElement" {
factory AudioElement([String src]) {
@@ -640,7 +635,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName AudioGain
+/// @domName AudioGain; @docsEditable true
class AudioGain extends AudioParam native "*AudioGain" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -648,22 +643,22 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName AudioListener
+/// @domName AudioListener; @docsEditable true
class AudioListener native "*AudioListener" {
- /** @domName AudioListener.dopplerFactor */
+ /// @domName AudioListener.dopplerFactor; @docsEditable true
num dopplerFactor;
- /** @domName AudioListener.speedOfSound */
+ /// @domName AudioListener.speedOfSound; @docsEditable true
num speedOfSound;
- /** @domName AudioListener.setOrientation */
+ /// @domName AudioListener.setOrientation; @docsEditable true
void setOrientation(num x, num y, num z, num xUp, num yUp, num zUp) native;
- /** @domName AudioListener.setPosition */
+ /// @domName AudioListener.setPosition; @docsEditable true
void setPosition(num x, num y, num z) native;
- /** @domName AudioListener.setVelocity */
+ /// @domName AudioListener.setVelocity; @docsEditable true
void setVelocity(num x, num y, num z) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -671,22 +666,22 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName AudioNode
+/// @domName AudioNode; @docsEditable true
class AudioNode native "*AudioNode" {
- /** @domName AudioNode.context */
+ /// @domName AudioNode.context; @docsEditable true
final AudioContext context;
- /** @domName AudioNode.numberOfInputs */
+ /// @domName AudioNode.numberOfInputs; @docsEditable true
final int numberOfInputs;
- /** @domName AudioNode.numberOfOutputs */
+ /// @domName AudioNode.numberOfOutputs; @docsEditable true
final int numberOfOutputs;
- /** @domName AudioNode.connect */
+ /// @domName AudioNode.connect; @docsEditable true
void connect(destination, int output, [int input]) native;
- /** @domName AudioNode.disconnect */
+ /// @domName AudioNode.disconnect; @docsEditable true
void disconnect(int output) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -694,43 +689,43 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName AudioParam
+/// @domName AudioParam; @docsEditable true
class AudioParam native "*AudioParam" {
- /** @domName AudioParam.defaultValue */
+ /// @domName AudioParam.defaultValue; @docsEditable true
final num defaultValue;
- /** @domName AudioParam.maxValue */
+ /// @domName AudioParam.maxValue; @docsEditable true
final num maxValue;
- /** @domName AudioParam.minValue */
+ /// @domName AudioParam.minValue; @docsEditable true
final num minValue;
- /** @domName AudioParam.name */
+ /// @domName AudioParam.name; @docsEditable true
final String name;
- /** @domName AudioParam.units */
+ /// @domName AudioParam.units; @docsEditable true
final int units;
- /** @domName AudioParam.value */
+ /// @domName AudioParam.value; @docsEditable true
num value;
- /** @domName AudioParam.cancelScheduledValues */
+ /// @domName AudioParam.cancelScheduledValues; @docsEditable true
void cancelScheduledValues(num startTime) native;
- /** @domName AudioParam.exponentialRampToValueAtTime */
+ /// @domName AudioParam.exponentialRampToValueAtTime; @docsEditable true
void exponentialRampToValueAtTime(num value, num time) native;
- /** @domName AudioParam.linearRampToValueAtTime */
+ /// @domName AudioParam.linearRampToValueAtTime; @docsEditable true
void linearRampToValueAtTime(num value, num time) native;
- /** @domName AudioParam.setTargetAtTime */
+ /// @domName AudioParam.setTargetAtTime; @docsEditable true
void setTargetAtTime(num target, num time, num timeConstant) native;
- /** @domName AudioParam.setValueAtTime */
+ /// @domName AudioParam.setValueAtTime; @docsEditable true
void setValueAtTime(num value, num time) native;
- /** @domName AudioParam.setValueCurveAtTime */
+ /// @domName AudioParam.setValueCurveAtTime; @docsEditable true
void setValueCurveAtTime(Float32Array values, num time, num duration) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -738,13 +733,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName AudioProcessingEvent
+/// @domName AudioProcessingEvent; @docsEditable true
class AudioProcessingEvent extends Event native "*AudioProcessingEvent" {
- /** @domName AudioProcessingEvent.inputBuffer */
+ /// @domName AudioProcessingEvent.inputBuffer; @docsEditable true
final AudioBuffer inputBuffer;
- /** @domName AudioProcessingEvent.outputBuffer */
+ /// @domName AudioProcessingEvent.outputBuffer; @docsEditable true
final AudioBuffer outputBuffer;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -752,7 +747,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName AudioSourceNode
+/// @domName AudioSourceNode; @docsEditable true
class AudioSourceNode extends AudioNode native "*AudioSourceNode" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -760,12 +755,12 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLBRElement
+/// @domName HTMLBRElement; @docsEditable true
class BRElement extends Element implements Element native "*HTMLBRElement" {
- factory BRElement() => _Elements.createBRElement();
+ factory BRElement() => document.$dom_createElement("br");
- /** @domName HTMLBRElement.clear */
+ /// @domName HTMLBRElement.clear; @docsEditable true
String clear;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -773,10 +768,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName BarInfo
+/// @domName BarInfo; @docsEditable true
class BarInfo native "*BarInfo" {
- /** @domName BarInfo.visible */
+ /// @domName BarInfo.visible; @docsEditable true
final bool visible;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -784,15 +779,15 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLBaseElement
+/// @domName HTMLBaseElement; @docsEditable true
class BaseElement extends Element implements Element native "*HTMLBaseElement" {
- factory BaseElement() => _Elements.createBaseElement();
+ factory BaseElement() => document.$dom_createElement("base");
- /** @domName HTMLBaseElement.href */
+ /// @domName HTMLBaseElement.href; @docsEditable true
String href;
- /** @domName HTMLBaseElement.target */
+ /// @domName HTMLBaseElement.target; @docsEditable true
String target;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -800,16 +795,16 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLBaseFontElement
+/// @domName HTMLBaseFontElement; @docsEditable true
class BaseFontElement extends Element implements Element native "*HTMLBaseFontElement" {
- /** @domName HTMLBaseFontElement.color */
+ /// @domName HTMLBaseFontElement.color; @docsEditable true
String color;
- /** @domName HTMLBaseFontElement.face */
+ /// @domName HTMLBaseFontElement.face; @docsEditable true
String face;
- /** @domName HTMLBaseFontElement.size */
+ /// @domName HTMLBaseFontElement.size; @docsEditable true
int size;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -817,34 +812,32 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName BatteryManager
+/// @domName BatteryManager; @docsEditable true
class BatteryManager extends EventTarget native "*BatteryManager" {
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
BatteryManagerEvents get on =>
new BatteryManagerEvents(this);
- /** @domName BatteryManager.charging */
+ /// @domName BatteryManager.charging; @docsEditable true
final bool charging;
- /** @domName BatteryManager.chargingTime */
+ /// @domName BatteryManager.chargingTime; @docsEditable true
final num chargingTime;
- /** @domName BatteryManager.dischargingTime */
+ /// @domName BatteryManager.dischargingTime; @docsEditable true
final num dischargingTime;
- /** @domName BatteryManager.level */
+ /// @domName BatteryManager.level; @docsEditable true
final num level;
- /** @domName BatteryManager.addEventListener */
+ /// @domName BatteryManager.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName BatteryManager.dispatchEvent */
+ /// @domName BatteryManager.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event event) native "dispatchEvent";
- /** @domName BatteryManager.removeEventListener */
+ /// @domName BatteryManager.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
}
@@ -864,10 +857,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName BeforeLoadEvent
+/// @domName BeforeLoadEvent; @docsEditable true
class BeforeLoadEvent extends Event native "*BeforeLoadEvent" {
- /** @domName BeforeLoadEvent.url */
+ /// @domName BeforeLoadEvent.url; @docsEditable true
final String url;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -875,7 +868,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName BiquadFilterNode
+/// @domName BiquadFilterNode; @docsEditable true
class BiquadFilterNode extends AudioNode native "*BiquadFilterNode" {
static const int ALLPASS = 7;
@@ -894,19 +887,19 @@
static const int PEAKING = 5;
- /** @domName BiquadFilterNode.Q */
+ /// @domName BiquadFilterNode.Q; @docsEditable true
final AudioParam Q;
- /** @domName BiquadFilterNode.frequency */
+ /// @domName BiquadFilterNode.frequency; @docsEditable true
final AudioParam frequency;
- /** @domName BiquadFilterNode.gain */
+ /// @domName BiquadFilterNode.gain; @docsEditable true
final AudioParam gain;
- /** @domName BiquadFilterNode.type */
+ /// @domName BiquadFilterNode.type; @docsEditable true
int type;
- /** @domName BiquadFilterNode.getFrequencyResponse */
+ /// @domName BiquadFilterNode.getFrequencyResponse; @docsEditable true
void getFrequencyResponse(Float32Array frequencyHz, Float32Array magResponse, Float32Array phaseResponse) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -914,7 +907,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Blob
+/// @domName Blob; @docsEditable true
class Blob native "*Blob" {
factory Blob(List blobParts, [String type, String endings]) {
@@ -927,13 +920,13 @@
return _BlobFactoryProvider.createBlob(blobParts, type, endings);
}
- /** @domName Blob.size */
+ /// @domName Blob.size; @docsEditable true
final int size;
- /** @domName Blob.type */
+ /// @domName Blob.type; @docsEditable true
final String type;
- /** @domName Blob.slice */
+ /// @domName Blob.slice; @docsEditable true
Blob slice([int start, int end, String contentType]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -941,30 +934,28 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLBodyElement
+/// @domName HTMLBodyElement; @docsEditable true
class BodyElement extends Element implements Element native "*HTMLBodyElement" {
- factory BodyElement() => _Elements.createBodyElement();
+ factory BodyElement() => document.$dom_createElement("body");
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
BodyElementEvents get on =>
new BodyElementEvents(this);
- /** @domName HTMLBodyElement.aLink */
+ /// @domName HTMLBodyElement.aLink; @docsEditable true
String aLink;
- /** @domName HTMLBodyElement.background */
+ /// @domName HTMLBodyElement.background; @docsEditable true
String background;
- /** @domName HTMLBodyElement.bgColor */
+ /// @domName HTMLBodyElement.bgColor; @docsEditable true
String bgColor;
- /** @domName HTMLBodyElement.link */
+ /// @domName HTMLBodyElement.link; @docsEditable true
String link;
- /** @domName HTMLBodyElement.vLink */
+ /// @domName HTMLBodyElement.vLink; @docsEditable true
String vLink;
}
@@ -1002,60 +993,61 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLButtonElement
+/// @domName HTMLButtonElement; @docsEditable true
class ButtonElement extends Element implements Element native "*HTMLButtonElement" {
- factory ButtonElement() => _Elements.createButtonElement();
+ factory ButtonElement() => document.$dom_createElement("button");
- /** @domName HTMLButtonElement.autofocus */
+ /// @domName HTMLButtonElement.autofocus; @docsEditable true
bool autofocus;
- /** @domName HTMLButtonElement.disabled */
+ /// @domName HTMLButtonElement.disabled; @docsEditable true
bool disabled;
- /** @domName HTMLButtonElement.form */
+ /// @domName HTMLButtonElement.form; @docsEditable true
final FormElement form;
- /** @domName HTMLButtonElement.formAction */
+ /// @domName HTMLButtonElement.formAction; @docsEditable true
String formAction;
- /** @domName HTMLButtonElement.formEnctype */
+ /// @domName HTMLButtonElement.formEnctype; @docsEditable true
String formEnctype;
- /** @domName HTMLButtonElement.formMethod */
+ /// @domName HTMLButtonElement.formMethod; @docsEditable true
String formMethod;
- /** @domName HTMLButtonElement.formNoValidate */
+ /// @domName HTMLButtonElement.formNoValidate; @docsEditable true
bool formNoValidate;
- /** @domName HTMLButtonElement.formTarget */
+ /// @domName HTMLButtonElement.formTarget; @docsEditable true
String formTarget;
- /** @domName HTMLButtonElement.labels */
+ /// @domName HTMLButtonElement.labels; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
final List<Node> labels;
- /** @domName HTMLButtonElement.name */
+ /// @domName HTMLButtonElement.name; @docsEditable true
String name;
- /** @domName HTMLButtonElement.type */
+ /// @domName HTMLButtonElement.type; @docsEditable true
String type;
- /** @domName HTMLButtonElement.validationMessage */
+ /// @domName HTMLButtonElement.validationMessage; @docsEditable true
final String validationMessage;
- /** @domName HTMLButtonElement.validity */
+ /// @domName HTMLButtonElement.validity; @docsEditable true
final ValidityState validity;
- /** @domName HTMLButtonElement.value */
+ /// @domName HTMLButtonElement.value; @docsEditable true
String value;
- /** @domName HTMLButtonElement.willValidate */
+ /// @domName HTMLButtonElement.willValidate; @docsEditable true
final bool willValidate;
- /** @domName HTMLButtonElement.checkValidity */
+ /// @domName HTMLButtonElement.checkValidity; @docsEditable true
bool checkValidity() native;
- /** @domName HTMLButtonElement.setCustomValidity */
+ /// @domName HTMLButtonElement.setCustomValidity; @docsEditable true
void setCustomValidity(String error) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1063,7 +1055,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName CDATASection
+/// @domName CDATASection; @docsEditable true
class CDATASection extends Text native "*CDATASection" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1071,10 +1063,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName CSSCharsetRule
+/// @domName CSSCharsetRule; @docsEditable true
class CSSCharsetRule extends CSSRule native "*CSSCharsetRule" {
- /** @domName CSSCharsetRule.encoding */
+ /// @domName CSSCharsetRule.encoding; @docsEditable true
String encoding;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1082,10 +1074,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName CSSFontFaceRule
+/// @domName CSSFontFaceRule; @docsEditable true
class CSSFontFaceRule extends CSSRule native "*CSSFontFaceRule" {
- /** @domName CSSFontFaceRule.style */
+ /// @domName CSSFontFaceRule.style; @docsEditable true
final CSSStyleDeclaration style;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1093,16 +1085,16 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName CSSImportRule
+/// @domName CSSImportRule; @docsEditable true
class CSSImportRule extends CSSRule native "*CSSImportRule" {
- /** @domName CSSImportRule.href */
+ /// @domName CSSImportRule.href; @docsEditable true
final String href;
- /** @domName CSSImportRule.media */
+ /// @domName CSSImportRule.media; @docsEditable true
final MediaList media;
- /** @domName CSSImportRule.styleSheet */
+ /// @domName CSSImportRule.styleSheet; @docsEditable true
final CSSStyleSheet styleSheet;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1110,13 +1102,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebKitCSSKeyframeRule
+/// @domName WebKitCSSKeyframeRule; @docsEditable true
class CSSKeyframeRule extends CSSRule native "*WebKitCSSKeyframeRule" {
- /** @domName WebKitCSSKeyframeRule.keyText */
+ /// @domName WebKitCSSKeyframeRule.keyText; @docsEditable true
String keyText;
- /** @domName WebKitCSSKeyframeRule.style */
+ /// @domName WebKitCSSKeyframeRule.style; @docsEditable true
final CSSStyleDeclaration style;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1124,22 +1116,23 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebKitCSSKeyframesRule
+/// @domName WebKitCSSKeyframesRule; @docsEditable true
class CSSKeyframesRule extends CSSRule native "*WebKitCSSKeyframesRule" {
- /** @domName WebKitCSSKeyframesRule.cssRules */
+ /// @domName WebKitCSSKeyframesRule.cssRules; @docsEditable true
+ @Returns('_CSSRuleList') @Creates('_CSSRuleList')
final List<CSSRule> cssRules;
- /** @domName WebKitCSSKeyframesRule.name */
+ /// @domName WebKitCSSKeyframesRule.name; @docsEditable true
String name;
- /** @domName WebKitCSSKeyframesRule.deleteRule */
+ /// @domName WebKitCSSKeyframesRule.deleteRule; @docsEditable true
void deleteRule(String key) native;
- /** @domName WebKitCSSKeyframesRule.findRule */
+ /// @domName WebKitCSSKeyframesRule.findRule; @docsEditable true
CSSKeyframeRule findRule(String key) native;
- /** @domName WebKitCSSKeyframesRule.insertRule */
+ /// @domName WebKitCSSKeyframesRule.insertRule; @docsEditable true
void insertRule(String rule) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1147,7 +1140,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebKitCSSMatrix
+/// @domName WebKitCSSMatrix; @docsEditable true
class CSSMatrix native "*WebKitCSSMatrix" {
factory CSSMatrix([String cssValue]) {
@@ -1157,100 +1150,100 @@
return _CSSMatrixFactoryProvider.createCSSMatrix(cssValue);
}
- /** @domName WebKitCSSMatrix.a */
+ /// @domName WebKitCSSMatrix.a; @docsEditable true
num a;
- /** @domName WebKitCSSMatrix.b */
+ /// @domName WebKitCSSMatrix.b; @docsEditable true
num b;
- /** @domName WebKitCSSMatrix.c */
+ /// @domName WebKitCSSMatrix.c; @docsEditable true
num c;
- /** @domName WebKitCSSMatrix.d */
+ /// @domName WebKitCSSMatrix.d; @docsEditable true
num d;
- /** @domName WebKitCSSMatrix.e */
+ /// @domName WebKitCSSMatrix.e; @docsEditable true
num e;
- /** @domName WebKitCSSMatrix.f */
+ /// @domName WebKitCSSMatrix.f; @docsEditable true
num f;
- /** @domName WebKitCSSMatrix.m11 */
+ /// @domName WebKitCSSMatrix.m11; @docsEditable true
num m11;
- /** @domName WebKitCSSMatrix.m12 */
+ /// @domName WebKitCSSMatrix.m12; @docsEditable true
num m12;
- /** @domName WebKitCSSMatrix.m13 */
+ /// @domName WebKitCSSMatrix.m13; @docsEditable true
num m13;
- /** @domName WebKitCSSMatrix.m14 */
+ /// @domName WebKitCSSMatrix.m14; @docsEditable true
num m14;
- /** @domName WebKitCSSMatrix.m21 */
+ /// @domName WebKitCSSMatrix.m21; @docsEditable true
num m21;
- /** @domName WebKitCSSMatrix.m22 */
+ /// @domName WebKitCSSMatrix.m22; @docsEditable true
num m22;
- /** @domName WebKitCSSMatrix.m23 */
+ /// @domName WebKitCSSMatrix.m23; @docsEditable true
num m23;
- /** @domName WebKitCSSMatrix.m24 */
+ /// @domName WebKitCSSMatrix.m24; @docsEditable true
num m24;
- /** @domName WebKitCSSMatrix.m31 */
+ /// @domName WebKitCSSMatrix.m31; @docsEditable true
num m31;
- /** @domName WebKitCSSMatrix.m32 */
+ /// @domName WebKitCSSMatrix.m32; @docsEditable true
num m32;
- /** @domName WebKitCSSMatrix.m33 */
+ /// @domName WebKitCSSMatrix.m33; @docsEditable true
num m33;
- /** @domName WebKitCSSMatrix.m34 */
+ /// @domName WebKitCSSMatrix.m34; @docsEditable true
num m34;
- /** @domName WebKitCSSMatrix.m41 */
+ /// @domName WebKitCSSMatrix.m41; @docsEditable true
num m41;
- /** @domName WebKitCSSMatrix.m42 */
+ /// @domName WebKitCSSMatrix.m42; @docsEditable true
num m42;
- /** @domName WebKitCSSMatrix.m43 */
+ /// @domName WebKitCSSMatrix.m43; @docsEditable true
num m43;
- /** @domName WebKitCSSMatrix.m44 */
+ /// @domName WebKitCSSMatrix.m44; @docsEditable true
num m44;
- /** @domName WebKitCSSMatrix.inverse */
+ /// @domName WebKitCSSMatrix.inverse; @docsEditable true
CSSMatrix inverse() native;
- /** @domName WebKitCSSMatrix.multiply */
+ /// @domName WebKitCSSMatrix.multiply; @docsEditable true
CSSMatrix multiply(CSSMatrix secondMatrix) native;
- /** @domName WebKitCSSMatrix.rotate */
+ /// @domName WebKitCSSMatrix.rotate; @docsEditable true
CSSMatrix rotate(num rotX, num rotY, num rotZ) native;
- /** @domName WebKitCSSMatrix.rotateAxisAngle */
+ /// @domName WebKitCSSMatrix.rotateAxisAngle; @docsEditable true
CSSMatrix rotateAxisAngle(num x, num y, num z, num angle) native;
- /** @domName WebKitCSSMatrix.scale */
+ /// @domName WebKitCSSMatrix.scale; @docsEditable true
CSSMatrix scale(num scaleX, num scaleY, num scaleZ) native;
- /** @domName WebKitCSSMatrix.setMatrixValue */
+ /// @domName WebKitCSSMatrix.setMatrixValue; @docsEditable true
void setMatrixValue(String string) native;
- /** @domName WebKitCSSMatrix.skewX */
+ /// @domName WebKitCSSMatrix.skewX; @docsEditable true
CSSMatrix skewX(num angle) native;
- /** @domName WebKitCSSMatrix.skewY */
+ /// @domName WebKitCSSMatrix.skewY; @docsEditable true
CSSMatrix skewY(num angle) native;
- /** @domName WebKitCSSMatrix.toString */
+ /// @domName WebKitCSSMatrix.toString; @docsEditable true
String toString() native;
- /** @domName WebKitCSSMatrix.translate */
+ /// @domName WebKitCSSMatrix.translate; @docsEditable true
CSSMatrix translate(num x, num y, num z) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1258,19 +1251,20 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName CSSMediaRule
+/// @domName CSSMediaRule; @docsEditable true
class CSSMediaRule extends CSSRule native "*CSSMediaRule" {
- /** @domName CSSMediaRule.cssRules */
+ /// @domName CSSMediaRule.cssRules; @docsEditable true
+ @Returns('_CSSRuleList') @Creates('_CSSRuleList')
final List<CSSRule> cssRules;
- /** @domName CSSMediaRule.media */
+ /// @domName CSSMediaRule.media; @docsEditable true
final MediaList media;
- /** @domName CSSMediaRule.deleteRule */
+ /// @domName CSSMediaRule.deleteRule; @docsEditable true
void deleteRule(int index) native;
- /** @domName CSSMediaRule.insertRule */
+ /// @domName CSSMediaRule.insertRule; @docsEditable true
int insertRule(String rule, int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1278,13 +1272,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName CSSPageRule
+/// @domName CSSPageRule; @docsEditable true
class CSSPageRule extends CSSRule native "*CSSPageRule" {
- /** @domName CSSPageRule.selectorText */
+ /// @domName CSSPageRule.selectorText; @docsEditable true
String selectorText;
- /** @domName CSSPageRule.style */
+ /// @domName CSSPageRule.style; @docsEditable true
final CSSStyleDeclaration style;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1292,7 +1286,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName CSSPrimitiveValue
+/// @domName CSSPrimitiveValue; @docsEditable true
class CSSPrimitiveValue extends CSSValue native "*CSSPrimitiveValue" {
static const int CSS_ATTR = 22;
@@ -1353,28 +1347,28 @@
static const int CSS_VW = 26;
- /** @domName CSSPrimitiveValue.primitiveType */
+ /// @domName CSSPrimitiveValue.primitiveType; @docsEditable true
final int primitiveType;
- /** @domName CSSPrimitiveValue.getCounterValue */
+ /// @domName CSSPrimitiveValue.getCounterValue; @docsEditable true
Counter getCounterValue() native;
- /** @domName CSSPrimitiveValue.getFloatValue */
+ /// @domName CSSPrimitiveValue.getFloatValue; @docsEditable true
num getFloatValue(int unitType) native;
- /** @domName CSSPrimitiveValue.getRGBColorValue */
+ /// @domName CSSPrimitiveValue.getRGBColorValue; @docsEditable true
RGBColor getRGBColorValue() native;
- /** @domName CSSPrimitiveValue.getRectValue */
+ /// @domName CSSPrimitiveValue.getRectValue; @docsEditable true
Rect getRectValue() native;
- /** @domName CSSPrimitiveValue.getStringValue */
+ /// @domName CSSPrimitiveValue.getStringValue; @docsEditable true
String getStringValue() native;
- /** @domName CSSPrimitiveValue.setFloatValue */
+ /// @domName CSSPrimitiveValue.setFloatValue; @docsEditable true
void setFloatValue(int unitType, num floatValue) native;
- /** @domName CSSPrimitiveValue.setStringValue */
+ /// @domName CSSPrimitiveValue.setStringValue; @docsEditable true
void setStringValue(int stringType, String stringValue) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1382,7 +1376,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName CSSRule
+/// @domName CSSRule; @docsEditable true
class CSSRule native "*CSSRule" {
static const int CHARSET_RULE = 2;
@@ -1403,16 +1397,16 @@
static const int WEBKIT_KEYFRAME_RULE = 8;
- /** @domName CSSRule.cssText */
+ /// @domName CSSRule.cssText; @docsEditable true
String cssText;
- /** @domName CSSRule.parentRule */
+ /// @domName CSSRule.parentRule; @docsEditable true
final CSSRule parentRule;
- /** @domName CSSRule.parentStyleSheet */
+ /// @domName CSSRule.parentStyleSheet; @docsEditable true
final CSSStyleSheet parentStyleSheet;
- /** @domName CSSRule.type */
+ /// @domName CSSRule.type; @docsEditable true
final int type;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1443,34 +1437,34 @@
_CSSStyleDeclarationFactoryProvider.createCSSStyleDeclaration_css(css);
- /** @domName CSSStyleDeclaration.cssText */
+ /// @domName CSSStyleDeclaration.cssText; @docsEditable true
String cssText;
- /** @domName CSSStyleDeclaration.length */
+ /// @domName CSSStyleDeclaration.length; @docsEditable true
final int length;
- /** @domName CSSStyleDeclaration.parentRule */
+ /// @domName CSSStyleDeclaration.parentRule; @docsEditable true
final CSSRule parentRule;
- /** @domName CSSStyleDeclaration.getPropertyCSSValue */
+ /// @domName CSSStyleDeclaration.getPropertyCSSValue; @docsEditable true
CSSValue getPropertyCSSValue(String propertyName) native;
- /** @domName CSSStyleDeclaration.getPropertyPriority */
+ /// @domName CSSStyleDeclaration.getPropertyPriority; @docsEditable true
String getPropertyPriority(String propertyName) native;
- /** @domName CSSStyleDeclaration.getPropertyShorthand */
+ /// @domName CSSStyleDeclaration.getPropertyShorthand; @docsEditable true
String getPropertyShorthand(String propertyName) native;
- /** @domName CSSStyleDeclaration._getPropertyValue */
+ /// @domName CSSStyleDeclaration._getPropertyValue; @docsEditable true
String _getPropertyValue(String propertyName) native "getPropertyValue";
- /** @domName CSSStyleDeclaration.isPropertyImplicit */
+ /// @domName CSSStyleDeclaration.isPropertyImplicit; @docsEditable true
bool isPropertyImplicit(String propertyName) native;
- /** @domName CSSStyleDeclaration.item */
+ /// @domName CSSStyleDeclaration.item; @docsEditable true
String item(int index) native;
- /** @domName CSSStyleDeclaration.removeProperty */
+ /// @domName CSSStyleDeclaration.removeProperty; @docsEditable true
String removeProperty(String propertyName) native;
@@ -1488,12 +1482,39 @@
}
// TODO(jacobr): generate this list of properties using the existing script.
- /** Gets the value of "animation" */
+ /** Gets the value of "align-content" */
+ String get alignContent =>
+ getPropertyValue('${_browserPrefix}align-content');
+
+ /** Sets the value of "align-content" */
+ void set alignContent(String value) {
+ setProperty('${_browserPrefix}align-content', value, '');
+ }
+
+ /** Gets the value of "align-items" */
+ String get alignItems =>
+ getPropertyValue('${_browserPrefix}align-items');
+
+ /** Sets the value of "align-items" */
+ void set alignItems(String value) {
+ setProperty('${_browserPrefix}align-items', value, '');
+ }
+
+ /** Gets the value of "align-self" */
+ String get alignSelf =>
+ getPropertyValue('${_browserPrefix}align-self');
+
+ /** Sets the value of "align-self" */
+ void set alignSelf(String value) {
+ setProperty('${_browserPrefix}align-self', value, '');
+ }
+
+ /** Gets the value of "animation" */
String get animation =>
getPropertyValue('${_browserPrefix}animation');
/** Sets the value of "animation" */
- void set animation(var value) {
+ void set animation(String value) {
setProperty('${_browserPrefix}animation', value, '');
}
@@ -1502,7 +1523,7 @@
getPropertyValue('${_browserPrefix}animation-delay');
/** Sets the value of "animation-delay" */
- void set animationDelay(var value) {
+ void set animationDelay(String value) {
setProperty('${_browserPrefix}animation-delay', value, '');
}
@@ -1511,7 +1532,7 @@
getPropertyValue('${_browserPrefix}animation-direction');
/** Sets the value of "animation-direction" */
- void set animationDirection(var value) {
+ void set animationDirection(String value) {
setProperty('${_browserPrefix}animation-direction', value, '');
}
@@ -1520,7 +1541,7 @@
getPropertyValue('${_browserPrefix}animation-duration');
/** Sets the value of "animation-duration" */
- void set animationDuration(var value) {
+ void set animationDuration(String value) {
setProperty('${_browserPrefix}animation-duration', value, '');
}
@@ -1529,7 +1550,7 @@
getPropertyValue('${_browserPrefix}animation-fill-mode');
/** Sets the value of "animation-fill-mode" */
- void set animationFillMode(var value) {
+ void set animationFillMode(String value) {
setProperty('${_browserPrefix}animation-fill-mode', value, '');
}
@@ -1538,7 +1559,7 @@
getPropertyValue('${_browserPrefix}animation-iteration-count');
/** Sets the value of "animation-iteration-count" */
- void set animationIterationCount(var value) {
+ void set animationIterationCount(String value) {
setProperty('${_browserPrefix}animation-iteration-count', value, '');
}
@@ -1547,7 +1568,7 @@
getPropertyValue('${_browserPrefix}animation-name');
/** Sets the value of "animation-name" */
- void set animationName(var value) {
+ void set animationName(String value) {
setProperty('${_browserPrefix}animation-name', value, '');
}
@@ -1556,7 +1577,7 @@
getPropertyValue('${_browserPrefix}animation-play-state');
/** Sets the value of "animation-play-state" */
- void set animationPlayState(var value) {
+ void set animationPlayState(String value) {
setProperty('${_browserPrefix}animation-play-state', value, '');
}
@@ -1565,25 +1586,43 @@
getPropertyValue('${_browserPrefix}animation-timing-function');
/** Sets the value of "animation-timing-function" */
- void set animationTimingFunction(var value) {
+ void set animationTimingFunction(String value) {
setProperty('${_browserPrefix}animation-timing-function', value, '');
}
+ /** Gets the value of "app-region" */
+ String get appRegion =>
+ getPropertyValue('${_browserPrefix}app-region');
+
+ /** Sets the value of "app-region" */
+ void set appRegion(String value) {
+ setProperty('${_browserPrefix}app-region', value, '');
+ }
+
/** Gets the value of "appearance" */
String get appearance =>
getPropertyValue('${_browserPrefix}appearance');
/** Sets the value of "appearance" */
- void set appearance(var value) {
+ void set appearance(String value) {
setProperty('${_browserPrefix}appearance', value, '');
}
+ /** Gets the value of "aspect-ratio" */
+ String get aspectRatio =>
+ getPropertyValue('${_browserPrefix}aspect-ratio');
+
+ /** Sets the value of "aspect-ratio" */
+ void set aspectRatio(String value) {
+ setProperty('${_browserPrefix}aspect-ratio', value, '');
+ }
+
/** Gets the value of "backface-visibility" */
String get backfaceVisibility =>
getPropertyValue('${_browserPrefix}backface-visibility');
/** Sets the value of "backface-visibility" */
- void set backfaceVisibility(var value) {
+ void set backfaceVisibility(String value) {
setProperty('${_browserPrefix}backface-visibility', value, '');
}
@@ -1592,7 +1631,7 @@
getPropertyValue('background');
/** Sets the value of "background" */
- void set background(var value) {
+ void set background(String value) {
setProperty('background', value, '');
}
@@ -1601,7 +1640,7 @@
getPropertyValue('background-attachment');
/** Sets the value of "background-attachment" */
- void set backgroundAttachment(var value) {
+ void set backgroundAttachment(String value) {
setProperty('background-attachment', value, '');
}
@@ -1610,7 +1649,7 @@
getPropertyValue('background-clip');
/** Sets the value of "background-clip" */
- void set backgroundClip(var value) {
+ void set backgroundClip(String value) {
setProperty('background-clip', value, '');
}
@@ -1619,7 +1658,7 @@
getPropertyValue('background-color');
/** Sets the value of "background-color" */
- void set backgroundColor(var value) {
+ void set backgroundColor(String value) {
setProperty('background-color', value, '');
}
@@ -1628,7 +1667,7 @@
getPropertyValue('${_browserPrefix}background-composite');
/** Sets the value of "background-composite" */
- void set backgroundComposite(var value) {
+ void set backgroundComposite(String value) {
setProperty('${_browserPrefix}background-composite', value, '');
}
@@ -1637,7 +1676,7 @@
getPropertyValue('background-image');
/** Sets the value of "background-image" */
- void set backgroundImage(var value) {
+ void set backgroundImage(String value) {
setProperty('background-image', value, '');
}
@@ -1646,7 +1685,7 @@
getPropertyValue('background-origin');
/** Sets the value of "background-origin" */
- void set backgroundOrigin(var value) {
+ void set backgroundOrigin(String value) {
setProperty('background-origin', value, '');
}
@@ -1655,7 +1694,7 @@
getPropertyValue('background-position');
/** Sets the value of "background-position" */
- void set backgroundPosition(var value) {
+ void set backgroundPosition(String value) {
setProperty('background-position', value, '');
}
@@ -1664,7 +1703,7 @@
getPropertyValue('background-position-x');
/** Sets the value of "background-position-x" */
- void set backgroundPositionX(var value) {
+ void set backgroundPositionX(String value) {
setProperty('background-position-x', value, '');
}
@@ -1673,7 +1712,7 @@
getPropertyValue('background-position-y');
/** Sets the value of "background-position-y" */
- void set backgroundPositionY(var value) {
+ void set backgroundPositionY(String value) {
setProperty('background-position-y', value, '');
}
@@ -1682,7 +1721,7 @@
getPropertyValue('background-repeat');
/** Sets the value of "background-repeat" */
- void set backgroundRepeat(var value) {
+ void set backgroundRepeat(String value) {
setProperty('background-repeat', value, '');
}
@@ -1691,7 +1730,7 @@
getPropertyValue('background-repeat-x');
/** Sets the value of "background-repeat-x" */
- void set backgroundRepeatX(var value) {
+ void set backgroundRepeatX(String value) {
setProperty('background-repeat-x', value, '');
}
@@ -1700,7 +1739,7 @@
getPropertyValue('background-repeat-y');
/** Sets the value of "background-repeat-y" */
- void set backgroundRepeatY(var value) {
+ void set backgroundRepeatY(String value) {
setProperty('background-repeat-y', value, '');
}
@@ -1709,16 +1748,25 @@
getPropertyValue('background-size');
/** Sets the value of "background-size" */
- void set backgroundSize(var value) {
+ void set backgroundSize(String value) {
setProperty('background-size', value, '');
}
+ /** Gets the value of "blend-mode" */
+ String get blendMode =>
+ getPropertyValue('${_browserPrefix}blend-mode');
+
+ /** Sets the value of "blend-mode" */
+ void set blendMode(String value) {
+ setProperty('${_browserPrefix}blend-mode', value, '');
+ }
+
/** Gets the value of "border" */
String get border =>
getPropertyValue('border');
/** Sets the value of "border" */
- void set border(var value) {
+ void set border(String value) {
setProperty('border', value, '');
}
@@ -1727,7 +1775,7 @@
getPropertyValue('${_browserPrefix}border-after');
/** Sets the value of "border-after" */
- void set borderAfter(var value) {
+ void set borderAfter(String value) {
setProperty('${_browserPrefix}border-after', value, '');
}
@@ -1736,7 +1784,7 @@
getPropertyValue('${_browserPrefix}border-after-color');
/** Sets the value of "border-after-color" */
- void set borderAfterColor(var value) {
+ void set borderAfterColor(String value) {
setProperty('${_browserPrefix}border-after-color', value, '');
}
@@ -1745,7 +1793,7 @@
getPropertyValue('${_browserPrefix}border-after-style');
/** Sets the value of "border-after-style" */
- void set borderAfterStyle(var value) {
+ void set borderAfterStyle(String value) {
setProperty('${_browserPrefix}border-after-style', value, '');
}
@@ -1754,7 +1802,7 @@
getPropertyValue('${_browserPrefix}border-after-width');
/** Sets the value of "border-after-width" */
- void set borderAfterWidth(var value) {
+ void set borderAfterWidth(String value) {
setProperty('${_browserPrefix}border-after-width', value, '');
}
@@ -1763,7 +1811,7 @@
getPropertyValue('${_browserPrefix}border-before');
/** Sets the value of "border-before" */
- void set borderBefore(var value) {
+ void set borderBefore(String value) {
setProperty('${_browserPrefix}border-before', value, '');
}
@@ -1772,7 +1820,7 @@
getPropertyValue('${_browserPrefix}border-before-color');
/** Sets the value of "border-before-color" */
- void set borderBeforeColor(var value) {
+ void set borderBeforeColor(String value) {
setProperty('${_browserPrefix}border-before-color', value, '');
}
@@ -1781,7 +1829,7 @@
getPropertyValue('${_browserPrefix}border-before-style');
/** Sets the value of "border-before-style" */
- void set borderBeforeStyle(var value) {
+ void set borderBeforeStyle(String value) {
setProperty('${_browserPrefix}border-before-style', value, '');
}
@@ -1790,7 +1838,7 @@
getPropertyValue('${_browserPrefix}border-before-width');
/** Sets the value of "border-before-width" */
- void set borderBeforeWidth(var value) {
+ void set borderBeforeWidth(String value) {
setProperty('${_browserPrefix}border-before-width', value, '');
}
@@ -1799,7 +1847,7 @@
getPropertyValue('border-bottom');
/** Sets the value of "border-bottom" */
- void set borderBottom(var value) {
+ void set borderBottom(String value) {
setProperty('border-bottom', value, '');
}
@@ -1808,7 +1856,7 @@
getPropertyValue('border-bottom-color');
/** Sets the value of "border-bottom-color" */
- void set borderBottomColor(var value) {
+ void set borderBottomColor(String value) {
setProperty('border-bottom-color', value, '');
}
@@ -1817,7 +1865,7 @@
getPropertyValue('border-bottom-left-radius');
/** Sets the value of "border-bottom-left-radius" */
- void set borderBottomLeftRadius(var value) {
+ void set borderBottomLeftRadius(String value) {
setProperty('border-bottom-left-radius', value, '');
}
@@ -1826,7 +1874,7 @@
getPropertyValue('border-bottom-right-radius');
/** Sets the value of "border-bottom-right-radius" */
- void set borderBottomRightRadius(var value) {
+ void set borderBottomRightRadius(String value) {
setProperty('border-bottom-right-radius', value, '');
}
@@ -1835,7 +1883,7 @@
getPropertyValue('border-bottom-style');
/** Sets the value of "border-bottom-style" */
- void set borderBottomStyle(var value) {
+ void set borderBottomStyle(String value) {
setProperty('border-bottom-style', value, '');
}
@@ -1844,7 +1892,7 @@
getPropertyValue('border-bottom-width');
/** Sets the value of "border-bottom-width" */
- void set borderBottomWidth(var value) {
+ void set borderBottomWidth(String value) {
setProperty('border-bottom-width', value, '');
}
@@ -1853,7 +1901,7 @@
getPropertyValue('border-collapse');
/** Sets the value of "border-collapse" */
- void set borderCollapse(var value) {
+ void set borderCollapse(String value) {
setProperty('border-collapse', value, '');
}
@@ -1862,7 +1910,7 @@
getPropertyValue('border-color');
/** Sets the value of "border-color" */
- void set borderColor(var value) {
+ void set borderColor(String value) {
setProperty('border-color', value, '');
}
@@ -1871,7 +1919,7 @@
getPropertyValue('${_browserPrefix}border-end');
/** Sets the value of "border-end" */
- void set borderEnd(var value) {
+ void set borderEnd(String value) {
setProperty('${_browserPrefix}border-end', value, '');
}
@@ -1880,7 +1928,7 @@
getPropertyValue('${_browserPrefix}border-end-color');
/** Sets the value of "border-end-color" */
- void set borderEndColor(var value) {
+ void set borderEndColor(String value) {
setProperty('${_browserPrefix}border-end-color', value, '');
}
@@ -1889,7 +1937,7 @@
getPropertyValue('${_browserPrefix}border-end-style');
/** Sets the value of "border-end-style" */
- void set borderEndStyle(var value) {
+ void set borderEndStyle(String value) {
setProperty('${_browserPrefix}border-end-style', value, '');
}
@@ -1898,7 +1946,7 @@
getPropertyValue('${_browserPrefix}border-end-width');
/** Sets the value of "border-end-width" */
- void set borderEndWidth(var value) {
+ void set borderEndWidth(String value) {
setProperty('${_browserPrefix}border-end-width', value, '');
}
@@ -1907,7 +1955,7 @@
getPropertyValue('${_browserPrefix}border-fit');
/** Sets the value of "border-fit" */
- void set borderFit(var value) {
+ void set borderFit(String value) {
setProperty('${_browserPrefix}border-fit', value, '');
}
@@ -1916,7 +1964,7 @@
getPropertyValue('${_browserPrefix}border-horizontal-spacing');
/** Sets the value of "border-horizontal-spacing" */
- void set borderHorizontalSpacing(var value) {
+ void set borderHorizontalSpacing(String value) {
setProperty('${_browserPrefix}border-horizontal-spacing', value, '');
}
@@ -1925,7 +1973,7 @@
getPropertyValue('border-image');
/** Sets the value of "border-image" */
- void set borderImage(var value) {
+ void set borderImage(String value) {
setProperty('border-image', value, '');
}
@@ -1934,7 +1982,7 @@
getPropertyValue('border-image-outset');
/** Sets the value of "border-image-outset" */
- void set borderImageOutset(var value) {
+ void set borderImageOutset(String value) {
setProperty('border-image-outset', value, '');
}
@@ -1943,7 +1991,7 @@
getPropertyValue('border-image-repeat');
/** Sets the value of "border-image-repeat" */
- void set borderImageRepeat(var value) {
+ void set borderImageRepeat(String value) {
setProperty('border-image-repeat', value, '');
}
@@ -1952,7 +2000,7 @@
getPropertyValue('border-image-slice');
/** Sets the value of "border-image-slice" */
- void set borderImageSlice(var value) {
+ void set borderImageSlice(String value) {
setProperty('border-image-slice', value, '');
}
@@ -1961,7 +2009,7 @@
getPropertyValue('border-image-source');
/** Sets the value of "border-image-source" */
- void set borderImageSource(var value) {
+ void set borderImageSource(String value) {
setProperty('border-image-source', value, '');
}
@@ -1970,7 +2018,7 @@
getPropertyValue('border-image-width');
/** Sets the value of "border-image-width" */
- void set borderImageWidth(var value) {
+ void set borderImageWidth(String value) {
setProperty('border-image-width', value, '');
}
@@ -1979,7 +2027,7 @@
getPropertyValue('border-left');
/** Sets the value of "border-left" */
- void set borderLeft(var value) {
+ void set borderLeft(String value) {
setProperty('border-left', value, '');
}
@@ -1988,7 +2036,7 @@
getPropertyValue('border-left-color');
/** Sets the value of "border-left-color" */
- void set borderLeftColor(var value) {
+ void set borderLeftColor(String value) {
setProperty('border-left-color', value, '');
}
@@ -1997,7 +2045,7 @@
getPropertyValue('border-left-style');
/** Sets the value of "border-left-style" */
- void set borderLeftStyle(var value) {
+ void set borderLeftStyle(String value) {
setProperty('border-left-style', value, '');
}
@@ -2006,7 +2054,7 @@
getPropertyValue('border-left-width');
/** Sets the value of "border-left-width" */
- void set borderLeftWidth(var value) {
+ void set borderLeftWidth(String value) {
setProperty('border-left-width', value, '');
}
@@ -2015,7 +2063,7 @@
getPropertyValue('border-radius');
/** Sets the value of "border-radius" */
- void set borderRadius(var value) {
+ void set borderRadius(String value) {
setProperty('border-radius', value, '');
}
@@ -2024,7 +2072,7 @@
getPropertyValue('border-right');
/** Sets the value of "border-right" */
- void set borderRight(var value) {
+ void set borderRight(String value) {
setProperty('border-right', value, '');
}
@@ -2033,7 +2081,7 @@
getPropertyValue('border-right-color');
/** Sets the value of "border-right-color" */
- void set borderRightColor(var value) {
+ void set borderRightColor(String value) {
setProperty('border-right-color', value, '');
}
@@ -2042,7 +2090,7 @@
getPropertyValue('border-right-style');
/** Sets the value of "border-right-style" */
- void set borderRightStyle(var value) {
+ void set borderRightStyle(String value) {
setProperty('border-right-style', value, '');
}
@@ -2051,7 +2099,7 @@
getPropertyValue('border-right-width');
/** Sets the value of "border-right-width" */
- void set borderRightWidth(var value) {
+ void set borderRightWidth(String value) {
setProperty('border-right-width', value, '');
}
@@ -2060,7 +2108,7 @@
getPropertyValue('border-spacing');
/** Sets the value of "border-spacing" */
- void set borderSpacing(var value) {
+ void set borderSpacing(String value) {
setProperty('border-spacing', value, '');
}
@@ -2069,7 +2117,7 @@
getPropertyValue('${_browserPrefix}border-start');
/** Sets the value of "border-start" */
- void set borderStart(var value) {
+ void set borderStart(String value) {
setProperty('${_browserPrefix}border-start', value, '');
}
@@ -2078,7 +2126,7 @@
getPropertyValue('${_browserPrefix}border-start-color');
/** Sets the value of "border-start-color" */
- void set borderStartColor(var value) {
+ void set borderStartColor(String value) {
setProperty('${_browserPrefix}border-start-color', value, '');
}
@@ -2087,7 +2135,7 @@
getPropertyValue('${_browserPrefix}border-start-style');
/** Sets the value of "border-start-style" */
- void set borderStartStyle(var value) {
+ void set borderStartStyle(String value) {
setProperty('${_browserPrefix}border-start-style', value, '');
}
@@ -2096,7 +2144,7 @@
getPropertyValue('${_browserPrefix}border-start-width');
/** Sets the value of "border-start-width" */
- void set borderStartWidth(var value) {
+ void set borderStartWidth(String value) {
setProperty('${_browserPrefix}border-start-width', value, '');
}
@@ -2105,7 +2153,7 @@
getPropertyValue('border-style');
/** Sets the value of "border-style" */
- void set borderStyle(var value) {
+ void set borderStyle(String value) {
setProperty('border-style', value, '');
}
@@ -2114,7 +2162,7 @@
getPropertyValue('border-top');
/** Sets the value of "border-top" */
- void set borderTop(var value) {
+ void set borderTop(String value) {
setProperty('border-top', value, '');
}
@@ -2123,7 +2171,7 @@
getPropertyValue('border-top-color');
/** Sets the value of "border-top-color" */
- void set borderTopColor(var value) {
+ void set borderTopColor(String value) {
setProperty('border-top-color', value, '');
}
@@ -2132,7 +2180,7 @@
getPropertyValue('border-top-left-radius');
/** Sets the value of "border-top-left-radius" */
- void set borderTopLeftRadius(var value) {
+ void set borderTopLeftRadius(String value) {
setProperty('border-top-left-radius', value, '');
}
@@ -2141,7 +2189,7 @@
getPropertyValue('border-top-right-radius');
/** Sets the value of "border-top-right-radius" */
- void set borderTopRightRadius(var value) {
+ void set borderTopRightRadius(String value) {
setProperty('border-top-right-radius', value, '');
}
@@ -2150,7 +2198,7 @@
getPropertyValue('border-top-style');
/** Sets the value of "border-top-style" */
- void set borderTopStyle(var value) {
+ void set borderTopStyle(String value) {
setProperty('border-top-style', value, '');
}
@@ -2159,7 +2207,7 @@
getPropertyValue('border-top-width');
/** Sets the value of "border-top-width" */
- void set borderTopWidth(var value) {
+ void set borderTopWidth(String value) {
setProperty('border-top-width', value, '');
}
@@ -2168,7 +2216,7 @@
getPropertyValue('${_browserPrefix}border-vertical-spacing');
/** Sets the value of "border-vertical-spacing" */
- void set borderVerticalSpacing(var value) {
+ void set borderVerticalSpacing(String value) {
setProperty('${_browserPrefix}border-vertical-spacing', value, '');
}
@@ -2177,7 +2225,7 @@
getPropertyValue('border-width');
/** Sets the value of "border-width" */
- void set borderWidth(var value) {
+ void set borderWidth(String value) {
setProperty('border-width', value, '');
}
@@ -2186,7 +2234,7 @@
getPropertyValue('bottom');
/** Sets the value of "bottom" */
- void set bottom(var value) {
+ void set bottom(String value) {
setProperty('bottom', value, '');
}
@@ -2195,16 +2243,25 @@
getPropertyValue('${_browserPrefix}box-align');
/** Sets the value of "box-align" */
- void set boxAlign(var value) {
+ void set boxAlign(String value) {
setProperty('${_browserPrefix}box-align', value, '');
}
+ /** Gets the value of "box-decoration-break" */
+ String get boxDecorationBreak =>
+ getPropertyValue('${_browserPrefix}box-decoration-break');
+
+ /** Sets the value of "box-decoration-break" */
+ void set boxDecorationBreak(String value) {
+ setProperty('${_browserPrefix}box-decoration-break', value, '');
+ }
+
/** Gets the value of "box-direction" */
String get boxDirection =>
getPropertyValue('${_browserPrefix}box-direction');
/** Sets the value of "box-direction" */
- void set boxDirection(var value) {
+ void set boxDirection(String value) {
setProperty('${_browserPrefix}box-direction', value, '');
}
@@ -2213,7 +2270,7 @@
getPropertyValue('${_browserPrefix}box-flex');
/** Sets the value of "box-flex" */
- void set boxFlex(var value) {
+ void set boxFlex(String value) {
setProperty('${_browserPrefix}box-flex', value, '');
}
@@ -2222,7 +2279,7 @@
getPropertyValue('${_browserPrefix}box-flex-group');
/** Sets the value of "box-flex-group" */
- void set boxFlexGroup(var value) {
+ void set boxFlexGroup(String value) {
setProperty('${_browserPrefix}box-flex-group', value, '');
}
@@ -2231,7 +2288,7 @@
getPropertyValue('${_browserPrefix}box-lines');
/** Sets the value of "box-lines" */
- void set boxLines(var value) {
+ void set boxLines(String value) {
setProperty('${_browserPrefix}box-lines', value, '');
}
@@ -2240,7 +2297,7 @@
getPropertyValue('${_browserPrefix}box-ordinal-group');
/** Sets the value of "box-ordinal-group" */
- void set boxOrdinalGroup(var value) {
+ void set boxOrdinalGroup(String value) {
setProperty('${_browserPrefix}box-ordinal-group', value, '');
}
@@ -2249,7 +2306,7 @@
getPropertyValue('${_browserPrefix}box-orient');
/** Sets the value of "box-orient" */
- void set boxOrient(var value) {
+ void set boxOrient(String value) {
setProperty('${_browserPrefix}box-orient', value, '');
}
@@ -2258,7 +2315,7 @@
getPropertyValue('${_browserPrefix}box-pack');
/** Sets the value of "box-pack" */
- void set boxPack(var value) {
+ void set boxPack(String value) {
setProperty('${_browserPrefix}box-pack', value, '');
}
@@ -2267,7 +2324,7 @@
getPropertyValue('${_browserPrefix}box-reflect');
/** Sets the value of "box-reflect" */
- void set boxReflect(var value) {
+ void set boxReflect(String value) {
setProperty('${_browserPrefix}box-reflect', value, '');
}
@@ -2276,7 +2333,7 @@
getPropertyValue('box-shadow');
/** Sets the value of "box-shadow" */
- void set boxShadow(var value) {
+ void set boxShadow(String value) {
setProperty('box-shadow', value, '');
}
@@ -2285,7 +2342,7 @@
getPropertyValue('box-sizing');
/** Sets the value of "box-sizing" */
- void set boxSizing(var value) {
+ void set boxSizing(String value) {
setProperty('box-sizing', value, '');
}
@@ -2294,7 +2351,7 @@
getPropertyValue('caption-side');
/** Sets the value of "caption-side" */
- void set captionSide(var value) {
+ void set captionSide(String value) {
setProperty('caption-side', value, '');
}
@@ -2303,7 +2360,7 @@
getPropertyValue('clear');
/** Sets the value of "clear" */
- void set clear(var value) {
+ void set clear(String value) {
setProperty('clear', value, '');
}
@@ -2312,16 +2369,25 @@
getPropertyValue('clip');
/** Sets the value of "clip" */
- void set clip(var value) {
+ void set clip(String value) {
setProperty('clip', value, '');
}
+ /** Gets the value of "clip-path" */
+ String get clipPath =>
+ getPropertyValue('${_browserPrefix}clip-path');
+
+ /** Sets the value of "clip-path" */
+ void set clipPath(String value) {
+ setProperty('${_browserPrefix}clip-path', value, '');
+ }
+
/** Gets the value of "color" */
String get color =>
getPropertyValue('color');
/** Sets the value of "color" */
- void set color(var value) {
+ void set color(String value) {
setProperty('color', value, '');
}
@@ -2330,16 +2396,25 @@
getPropertyValue('${_browserPrefix}color-correction');
/** Sets the value of "color-correction" */
- void set colorCorrection(var value) {
+ void set colorCorrection(String value) {
setProperty('${_browserPrefix}color-correction', value, '');
}
+ /** Gets the value of "column-axis" */
+ String get columnAxis =>
+ getPropertyValue('${_browserPrefix}column-axis');
+
+ /** Sets the value of "column-axis" */
+ void set columnAxis(String value) {
+ setProperty('${_browserPrefix}column-axis', value, '');
+ }
+
/** Gets the value of "column-break-after" */
String get columnBreakAfter =>
getPropertyValue('${_browserPrefix}column-break-after');
/** Sets the value of "column-break-after" */
- void set columnBreakAfter(var value) {
+ void set columnBreakAfter(String value) {
setProperty('${_browserPrefix}column-break-after', value, '');
}
@@ -2348,7 +2423,7 @@
getPropertyValue('${_browserPrefix}column-break-before');
/** Sets the value of "column-break-before" */
- void set columnBreakBefore(var value) {
+ void set columnBreakBefore(String value) {
setProperty('${_browserPrefix}column-break-before', value, '');
}
@@ -2357,7 +2432,7 @@
getPropertyValue('${_browserPrefix}column-break-inside');
/** Sets the value of "column-break-inside" */
- void set columnBreakInside(var value) {
+ void set columnBreakInside(String value) {
setProperty('${_browserPrefix}column-break-inside', value, '');
}
@@ -2366,7 +2441,7 @@
getPropertyValue('${_browserPrefix}column-count');
/** Sets the value of "column-count" */
- void set columnCount(var value) {
+ void set columnCount(String value) {
setProperty('${_browserPrefix}column-count', value, '');
}
@@ -2375,16 +2450,25 @@
getPropertyValue('${_browserPrefix}column-gap');
/** Sets the value of "column-gap" */
- void set columnGap(var value) {
+ void set columnGap(String value) {
setProperty('${_browserPrefix}column-gap', value, '');
}
+ /** Gets the value of "column-progression" */
+ String get columnProgression =>
+ getPropertyValue('${_browserPrefix}column-progression');
+
+ /** Sets the value of "column-progression" */
+ void set columnProgression(String value) {
+ setProperty('${_browserPrefix}column-progression', value, '');
+ }
+
/** Gets the value of "column-rule" */
String get columnRule =>
getPropertyValue('${_browserPrefix}column-rule');
/** Sets the value of "column-rule" */
- void set columnRule(var value) {
+ void set columnRule(String value) {
setProperty('${_browserPrefix}column-rule', value, '');
}
@@ -2393,7 +2477,7 @@
getPropertyValue('${_browserPrefix}column-rule-color');
/** Sets the value of "column-rule-color" */
- void set columnRuleColor(var value) {
+ void set columnRuleColor(String value) {
setProperty('${_browserPrefix}column-rule-color', value, '');
}
@@ -2402,7 +2486,7 @@
getPropertyValue('${_browserPrefix}column-rule-style');
/** Sets the value of "column-rule-style" */
- void set columnRuleStyle(var value) {
+ void set columnRuleStyle(String value) {
setProperty('${_browserPrefix}column-rule-style', value, '');
}
@@ -2411,7 +2495,7 @@
getPropertyValue('${_browserPrefix}column-rule-width');
/** Sets the value of "column-rule-width" */
- void set columnRuleWidth(var value) {
+ void set columnRuleWidth(String value) {
setProperty('${_browserPrefix}column-rule-width', value, '');
}
@@ -2420,7 +2504,7 @@
getPropertyValue('${_browserPrefix}column-span');
/** Sets the value of "column-span" */
- void set columnSpan(var value) {
+ void set columnSpan(String value) {
setProperty('${_browserPrefix}column-span', value, '');
}
@@ -2429,7 +2513,7 @@
getPropertyValue('${_browserPrefix}column-width');
/** Sets the value of "column-width" */
- void set columnWidth(var value) {
+ void set columnWidth(String value) {
setProperty('${_browserPrefix}column-width', value, '');
}
@@ -2438,7 +2522,7 @@
getPropertyValue('${_browserPrefix}columns');
/** Sets the value of "columns" */
- void set columns(var value) {
+ void set columns(String value) {
setProperty('${_browserPrefix}columns', value, '');
}
@@ -2447,7 +2531,7 @@
getPropertyValue('content');
/** Sets the value of "content" */
- void set content(var value) {
+ void set content(String value) {
setProperty('content', value, '');
}
@@ -2456,7 +2540,7 @@
getPropertyValue('counter-increment');
/** Sets the value of "counter-increment" */
- void set counterIncrement(var value) {
+ void set counterIncrement(String value) {
setProperty('counter-increment', value, '');
}
@@ -2465,7 +2549,7 @@
getPropertyValue('counter-reset');
/** Sets the value of "counter-reset" */
- void set counterReset(var value) {
+ void set counterReset(String value) {
setProperty('counter-reset', value, '');
}
@@ -2474,16 +2558,25 @@
getPropertyValue('cursor');
/** Sets the value of "cursor" */
- void set cursor(var value) {
+ void set cursor(String value) {
setProperty('cursor', value, '');
}
+ /** Gets the value of "dashboard-region" */
+ String get dashboardRegion =>
+ getPropertyValue('${_browserPrefix}dashboard-region');
+
+ /** Sets the value of "dashboard-region" */
+ void set dashboardRegion(String value) {
+ setProperty('${_browserPrefix}dashboard-region', value, '');
+ }
+
/** Gets the value of "direction" */
String get direction =>
getPropertyValue('direction');
/** Sets the value of "direction" */
- void set direction(var value) {
+ void set direction(String value) {
setProperty('direction', value, '');
}
@@ -2492,7 +2585,7 @@
getPropertyValue('display');
/** Sets the value of "display" */
- void set display(var value) {
+ void set display(String value) {
setProperty('display', value, '');
}
@@ -2501,7 +2594,7 @@
getPropertyValue('empty-cells');
/** Sets the value of "empty-cells" */
- void set emptyCells(var value) {
+ void set emptyCells(String value) {
setProperty('empty-cells', value, '');
}
@@ -2510,17 +2603,35 @@
getPropertyValue('${_browserPrefix}filter');
/** Sets the value of "filter" */
- void set filter(var value) {
+ void set filter(String value) {
setProperty('${_browserPrefix}filter', value, '');
}
- /** Gets the value of "flex-align" */
- String get flexAlign =>
- getPropertyValue('${_browserPrefix}flex-align');
+ /** Gets the value of "flex" */
+ String get flex =>
+ getPropertyValue('${_browserPrefix}flex');
- /** Sets the value of "flex-align" */
- void set flexAlign(var value) {
- setProperty('${_browserPrefix}flex-align', value, '');
+ /** Sets the value of "flex" */
+ void set flex(String value) {
+ setProperty('${_browserPrefix}flex', value, '');
+ }
+
+ /** Gets the value of "flex-basis" */
+ String get flexBasis =>
+ getPropertyValue('${_browserPrefix}flex-basis');
+
+ /** Sets the value of "flex-basis" */
+ void set flexBasis(String value) {
+ setProperty('${_browserPrefix}flex-basis', value, '');
+ }
+
+ /** Gets the value of "flex-direction" */
+ String get flexDirection =>
+ getPropertyValue('${_browserPrefix}flex-direction');
+
+ /** Sets the value of "flex-direction" */
+ void set flexDirection(String value) {
+ setProperty('${_browserPrefix}flex-direction', value, '');
}
/** Gets the value of "flex-flow" */
@@ -2528,26 +2639,35 @@
getPropertyValue('${_browserPrefix}flex-flow');
/** Sets the value of "flex-flow" */
- void set flexFlow(var value) {
+ void set flexFlow(String value) {
setProperty('${_browserPrefix}flex-flow', value, '');
}
- /** Gets the value of "flex-order" */
- String get flexOrder =>
- getPropertyValue('${_browserPrefix}flex-order');
+ /** Gets the value of "flex-grow" */
+ String get flexGrow =>
+ getPropertyValue('${_browserPrefix}flex-grow');
- /** Sets the value of "flex-order" */
- void set flexOrder(var value) {
- setProperty('${_browserPrefix}flex-order', value, '');
+ /** Sets the value of "flex-grow" */
+ void set flexGrow(String value) {
+ setProperty('${_browserPrefix}flex-grow', value, '');
}
- /** Gets the value of "flex-pack" */
- String get flexPack =>
- getPropertyValue('${_browserPrefix}flex-pack');
+ /** Gets the value of "flex-shrink" */
+ String get flexShrink =>
+ getPropertyValue('${_browserPrefix}flex-shrink');
- /** Sets the value of "flex-pack" */
- void set flexPack(var value) {
- setProperty('${_browserPrefix}flex-pack', value, '');
+ /** Sets the value of "flex-shrink" */
+ void set flexShrink(String value) {
+ setProperty('${_browserPrefix}flex-shrink', value, '');
+ }
+
+ /** Gets the value of "flex-wrap" */
+ String get flexWrap =>
+ getPropertyValue('${_browserPrefix}flex-wrap');
+
+ /** Sets the value of "flex-wrap" */
+ void set flexWrap(String value) {
+ setProperty('${_browserPrefix}flex-wrap', value, '');
}
/** Gets the value of "float" */
@@ -2555,7 +2675,7 @@
getPropertyValue('float');
/** Sets the value of "float" */
- void set float(var value) {
+ void set float(String value) {
setProperty('float', value, '');
}
@@ -2564,7 +2684,7 @@
getPropertyValue('${_browserPrefix}flow-from');
/** Sets the value of "flow-from" */
- void set flowFrom(var value) {
+ void set flowFrom(String value) {
setProperty('${_browserPrefix}flow-from', value, '');
}
@@ -2573,7 +2693,7 @@
getPropertyValue('${_browserPrefix}flow-into');
/** Sets the value of "flow-into" */
- void set flowInto(var value) {
+ void set flowInto(String value) {
setProperty('${_browserPrefix}flow-into', value, '');
}
@@ -2582,7 +2702,7 @@
getPropertyValue('font');
/** Sets the value of "font" */
- void set font(var value) {
+ void set font(String value) {
setProperty('font', value, '');
}
@@ -2591,7 +2711,7 @@
getPropertyValue('font-family');
/** Sets the value of "font-family" */
- void set fontFamily(var value) {
+ void set fontFamily(String value) {
setProperty('font-family', value, '');
}
@@ -2600,16 +2720,25 @@
getPropertyValue('${_browserPrefix}font-feature-settings');
/** Sets the value of "font-feature-settings" */
- void set fontFeatureSettings(var value) {
+ void set fontFeatureSettings(String value) {
setProperty('${_browserPrefix}font-feature-settings', value, '');
}
+ /** Gets the value of "font-kerning" */
+ String get fontKerning =>
+ getPropertyValue('${_browserPrefix}font-kerning');
+
+ /** Sets the value of "font-kerning" */
+ void set fontKerning(String value) {
+ setProperty('${_browserPrefix}font-kerning', value, '');
+ }
+
/** Gets the value of "font-size" */
String get fontSize =>
getPropertyValue('font-size');
/** Sets the value of "font-size" */
- void set fontSize(var value) {
+ void set fontSize(String value) {
setProperty('font-size', value, '');
}
@@ -2618,7 +2747,7 @@
getPropertyValue('${_browserPrefix}font-size-delta');
/** Sets the value of "font-size-delta" */
- void set fontSizeDelta(var value) {
+ void set fontSizeDelta(String value) {
setProperty('${_browserPrefix}font-size-delta', value, '');
}
@@ -2627,7 +2756,7 @@
getPropertyValue('${_browserPrefix}font-smoothing');
/** Sets the value of "font-smoothing" */
- void set fontSmoothing(var value) {
+ void set fontSmoothing(String value) {
setProperty('${_browserPrefix}font-smoothing', value, '');
}
@@ -2636,7 +2765,7 @@
getPropertyValue('font-stretch');
/** Sets the value of "font-stretch" */
- void set fontStretch(var value) {
+ void set fontStretch(String value) {
setProperty('font-stretch', value, '');
}
@@ -2645,7 +2774,7 @@
getPropertyValue('font-style');
/** Sets the value of "font-style" */
- void set fontStyle(var value) {
+ void set fontStyle(String value) {
setProperty('font-style', value, '');
}
@@ -2654,25 +2783,70 @@
getPropertyValue('font-variant');
/** Sets the value of "font-variant" */
- void set fontVariant(var value) {
+ void set fontVariant(String value) {
setProperty('font-variant', value, '');
}
+ /** Gets the value of "font-variant-ligatures" */
+ String get fontVariantLigatures =>
+ getPropertyValue('${_browserPrefix}font-variant-ligatures');
+
+ /** Sets the value of "font-variant-ligatures" */
+ void set fontVariantLigatures(String value) {
+ setProperty('${_browserPrefix}font-variant-ligatures', value, '');
+ }
+
/** Gets the value of "font-weight" */
String get fontWeight =>
getPropertyValue('font-weight');
/** Sets the value of "font-weight" */
- void set fontWeight(var value) {
+ void set fontWeight(String value) {
setProperty('font-weight', value, '');
}
+ /** Gets the value of "grid-column" */
+ String get gridColumn =>
+ getPropertyValue('${_browserPrefix}grid-column');
+
+ /** Sets the value of "grid-column" */
+ void set gridColumn(String value) {
+ setProperty('${_browserPrefix}grid-column', value, '');
+ }
+
+ /** Gets the value of "grid-columns" */
+ String get gridColumns =>
+ getPropertyValue('${_browserPrefix}grid-columns');
+
+ /** Sets the value of "grid-columns" */
+ void set gridColumns(String value) {
+ setProperty('${_browserPrefix}grid-columns', value, '');
+ }
+
+ /** Gets the value of "grid-row" */
+ String get gridRow =>
+ getPropertyValue('${_browserPrefix}grid-row');
+
+ /** Sets the value of "grid-row" */
+ void set gridRow(String value) {
+ setProperty('${_browserPrefix}grid-row', value, '');
+ }
+
+ /** Gets the value of "grid-rows" */
+ String get gridRows =>
+ getPropertyValue('${_browserPrefix}grid-rows');
+
+ /** Sets the value of "grid-rows" */
+ void set gridRows(String value) {
+ setProperty('${_browserPrefix}grid-rows', value, '');
+ }
+
/** Gets the value of "height" */
String get height =>
getPropertyValue('height');
/** Sets the value of "height" */
- void set height(var value) {
+ void set height(String value) {
setProperty('height', value, '');
}
@@ -2681,7 +2855,7 @@
getPropertyValue('${_browserPrefix}highlight');
/** Sets the value of "highlight" */
- void set highlight(var value) {
+ void set highlight(String value) {
setProperty('${_browserPrefix}highlight', value, '');
}
@@ -2690,7 +2864,7 @@
getPropertyValue('${_browserPrefix}hyphenate-character');
/** Sets the value of "hyphenate-character" */
- void set hyphenateCharacter(var value) {
+ void set hyphenateCharacter(String value) {
setProperty('${_browserPrefix}hyphenate-character', value, '');
}
@@ -2699,7 +2873,7 @@
getPropertyValue('${_browserPrefix}hyphenate-limit-after');
/** Sets the value of "hyphenate-limit-after" */
- void set hyphenateLimitAfter(var value) {
+ void set hyphenateLimitAfter(String value) {
setProperty('${_browserPrefix}hyphenate-limit-after', value, '');
}
@@ -2708,7 +2882,7 @@
getPropertyValue('${_browserPrefix}hyphenate-limit-before');
/** Sets the value of "hyphenate-limit-before" */
- void set hyphenateLimitBefore(var value) {
+ void set hyphenateLimitBefore(String value) {
setProperty('${_browserPrefix}hyphenate-limit-before', value, '');
}
@@ -2717,7 +2891,7 @@
getPropertyValue('${_browserPrefix}hyphenate-limit-lines');
/** Sets the value of "hyphenate-limit-lines" */
- void set hyphenateLimitLines(var value) {
+ void set hyphenateLimitLines(String value) {
setProperty('${_browserPrefix}hyphenate-limit-lines', value, '');
}
@@ -2726,25 +2900,52 @@
getPropertyValue('${_browserPrefix}hyphens');
/** Sets the value of "hyphens" */
- void set hyphens(var value) {
+ void set hyphens(String value) {
setProperty('${_browserPrefix}hyphens', value, '');
}
+ /** Gets the value of "image-orientation" */
+ String get imageOrientation =>
+ getPropertyValue('image-orientation');
+
+ /** Sets the value of "image-orientation" */
+ void set imageOrientation(String value) {
+ setProperty('image-orientation', value, '');
+ }
+
/** Gets the value of "image-rendering" */
String get imageRendering =>
getPropertyValue('image-rendering');
/** Sets the value of "image-rendering" */
- void set imageRendering(var value) {
+ void set imageRendering(String value) {
setProperty('image-rendering', value, '');
}
+ /** Gets the value of "image-resolution" */
+ String get imageResolution =>
+ getPropertyValue('image-resolution');
+
+ /** Sets the value of "image-resolution" */
+ void set imageResolution(String value) {
+ setProperty('image-resolution', value, '');
+ }
+
+ /** Gets the value of "justify-content" */
+ String get justifyContent =>
+ getPropertyValue('${_browserPrefix}justify-content');
+
+ /** Sets the value of "justify-content" */
+ void set justifyContent(String value) {
+ setProperty('${_browserPrefix}justify-content', value, '');
+ }
+
/** Gets the value of "left" */
String get left =>
getPropertyValue('left');
/** Sets the value of "left" */
- void set left(var value) {
+ void set left(String value) {
setProperty('left', value, '');
}
@@ -2753,16 +2954,25 @@
getPropertyValue('letter-spacing');
/** Sets the value of "letter-spacing" */
- void set letterSpacing(var value) {
+ void set letterSpacing(String value) {
setProperty('letter-spacing', value, '');
}
+ /** Gets the value of "line-align" */
+ String get lineAlign =>
+ getPropertyValue('${_browserPrefix}line-align');
+
+ /** Sets the value of "line-align" */
+ void set lineAlign(String value) {
+ setProperty('${_browserPrefix}line-align', value, '');
+ }
+
/** Gets the value of "line-box-contain" */
String get lineBoxContain =>
getPropertyValue('${_browserPrefix}line-box-contain');
/** Sets the value of "line-box-contain" */
- void set lineBoxContain(var value) {
+ void set lineBoxContain(String value) {
setProperty('${_browserPrefix}line-box-contain', value, '');
}
@@ -2771,7 +2981,7 @@
getPropertyValue('${_browserPrefix}line-break');
/** Sets the value of "line-break" */
- void set lineBreak(var value) {
+ void set lineBreak(String value) {
setProperty('${_browserPrefix}line-break', value, '');
}
@@ -2780,25 +2990,43 @@
getPropertyValue('${_browserPrefix}line-clamp');
/** Sets the value of "line-clamp" */
- void set lineClamp(var value) {
+ void set lineClamp(String value) {
setProperty('${_browserPrefix}line-clamp', value, '');
}
+ /** Gets the value of "line-grid" */
+ String get lineGrid =>
+ getPropertyValue('${_browserPrefix}line-grid');
+
+ /** Sets the value of "line-grid" */
+ void set lineGrid(String value) {
+ setProperty('${_browserPrefix}line-grid', value, '');
+ }
+
/** Gets the value of "line-height" */
String get lineHeight =>
getPropertyValue('line-height');
/** Sets the value of "line-height" */
- void set lineHeight(var value) {
+ void set lineHeight(String value) {
setProperty('line-height', value, '');
}
+ /** Gets the value of "line-snap" */
+ String get lineSnap =>
+ getPropertyValue('${_browserPrefix}line-snap');
+
+ /** Sets the value of "line-snap" */
+ void set lineSnap(String value) {
+ setProperty('${_browserPrefix}line-snap', value, '');
+ }
+
/** Gets the value of "list-style" */
String get listStyle =>
getPropertyValue('list-style');
/** Sets the value of "list-style" */
- void set listStyle(var value) {
+ void set listStyle(String value) {
setProperty('list-style', value, '');
}
@@ -2807,7 +3035,7 @@
getPropertyValue('list-style-image');
/** Sets the value of "list-style-image" */
- void set listStyleImage(var value) {
+ void set listStyleImage(String value) {
setProperty('list-style-image', value, '');
}
@@ -2816,7 +3044,7 @@
getPropertyValue('list-style-position');
/** Sets the value of "list-style-position" */
- void set listStylePosition(var value) {
+ void set listStylePosition(String value) {
setProperty('list-style-position', value, '');
}
@@ -2825,7 +3053,7 @@
getPropertyValue('list-style-type');
/** Sets the value of "list-style-type" */
- void set listStyleType(var value) {
+ void set listStyleType(String value) {
setProperty('list-style-type', value, '');
}
@@ -2834,7 +3062,7 @@
getPropertyValue('${_browserPrefix}locale');
/** Sets the value of "locale" */
- void set locale(var value) {
+ void set locale(String value) {
setProperty('${_browserPrefix}locale', value, '');
}
@@ -2843,7 +3071,7 @@
getPropertyValue('${_browserPrefix}logical-height');
/** Sets the value of "logical-height" */
- void set logicalHeight(var value) {
+ void set logicalHeight(String value) {
setProperty('${_browserPrefix}logical-height', value, '');
}
@@ -2852,7 +3080,7 @@
getPropertyValue('${_browserPrefix}logical-width');
/** Sets the value of "logical-width" */
- void set logicalWidth(var value) {
+ void set logicalWidth(String value) {
setProperty('${_browserPrefix}logical-width', value, '');
}
@@ -2861,7 +3089,7 @@
getPropertyValue('margin');
/** Sets the value of "margin" */
- void set margin(var value) {
+ void set margin(String value) {
setProperty('margin', value, '');
}
@@ -2870,7 +3098,7 @@
getPropertyValue('${_browserPrefix}margin-after');
/** Sets the value of "margin-after" */
- void set marginAfter(var value) {
+ void set marginAfter(String value) {
setProperty('${_browserPrefix}margin-after', value, '');
}
@@ -2879,7 +3107,7 @@
getPropertyValue('${_browserPrefix}margin-after-collapse');
/** Sets the value of "margin-after-collapse" */
- void set marginAfterCollapse(var value) {
+ void set marginAfterCollapse(String value) {
setProperty('${_browserPrefix}margin-after-collapse', value, '');
}
@@ -2888,7 +3116,7 @@
getPropertyValue('${_browserPrefix}margin-before');
/** Sets the value of "margin-before" */
- void set marginBefore(var value) {
+ void set marginBefore(String value) {
setProperty('${_browserPrefix}margin-before', value, '');
}
@@ -2897,7 +3125,7 @@
getPropertyValue('${_browserPrefix}margin-before-collapse');
/** Sets the value of "margin-before-collapse" */
- void set marginBeforeCollapse(var value) {
+ void set marginBeforeCollapse(String value) {
setProperty('${_browserPrefix}margin-before-collapse', value, '');
}
@@ -2906,7 +3134,7 @@
getPropertyValue('margin-bottom');
/** Sets the value of "margin-bottom" */
- void set marginBottom(var value) {
+ void set marginBottom(String value) {
setProperty('margin-bottom', value, '');
}
@@ -2915,7 +3143,7 @@
getPropertyValue('${_browserPrefix}margin-bottom-collapse');
/** Sets the value of "margin-bottom-collapse" */
- void set marginBottomCollapse(var value) {
+ void set marginBottomCollapse(String value) {
setProperty('${_browserPrefix}margin-bottom-collapse', value, '');
}
@@ -2924,7 +3152,7 @@
getPropertyValue('${_browserPrefix}margin-collapse');
/** Sets the value of "margin-collapse" */
- void set marginCollapse(var value) {
+ void set marginCollapse(String value) {
setProperty('${_browserPrefix}margin-collapse', value, '');
}
@@ -2933,7 +3161,7 @@
getPropertyValue('${_browserPrefix}margin-end');
/** Sets the value of "margin-end" */
- void set marginEnd(var value) {
+ void set marginEnd(String value) {
setProperty('${_browserPrefix}margin-end', value, '');
}
@@ -2942,7 +3170,7 @@
getPropertyValue('margin-left');
/** Sets the value of "margin-left" */
- void set marginLeft(var value) {
+ void set marginLeft(String value) {
setProperty('margin-left', value, '');
}
@@ -2951,7 +3179,7 @@
getPropertyValue('margin-right');
/** Sets the value of "margin-right" */
- void set marginRight(var value) {
+ void set marginRight(String value) {
setProperty('margin-right', value, '');
}
@@ -2960,7 +3188,7 @@
getPropertyValue('${_browserPrefix}margin-start');
/** Sets the value of "margin-start" */
- void set marginStart(var value) {
+ void set marginStart(String value) {
setProperty('${_browserPrefix}margin-start', value, '');
}
@@ -2969,7 +3197,7 @@
getPropertyValue('margin-top');
/** Sets the value of "margin-top" */
- void set marginTop(var value) {
+ void set marginTop(String value) {
setProperty('margin-top', value, '');
}
@@ -2978,7 +3206,7 @@
getPropertyValue('${_browserPrefix}margin-top-collapse');
/** Sets the value of "margin-top-collapse" */
- void set marginTopCollapse(var value) {
+ void set marginTopCollapse(String value) {
setProperty('${_browserPrefix}margin-top-collapse', value, '');
}
@@ -2987,7 +3215,7 @@
getPropertyValue('${_browserPrefix}marquee');
/** Sets the value of "marquee" */
- void set marquee(var value) {
+ void set marquee(String value) {
setProperty('${_browserPrefix}marquee', value, '');
}
@@ -2996,7 +3224,7 @@
getPropertyValue('${_browserPrefix}marquee-direction');
/** Sets the value of "marquee-direction" */
- void set marqueeDirection(var value) {
+ void set marqueeDirection(String value) {
setProperty('${_browserPrefix}marquee-direction', value, '');
}
@@ -3005,7 +3233,7 @@
getPropertyValue('${_browserPrefix}marquee-increment');
/** Sets the value of "marquee-increment" */
- void set marqueeIncrement(var value) {
+ void set marqueeIncrement(String value) {
setProperty('${_browserPrefix}marquee-increment', value, '');
}
@@ -3014,7 +3242,7 @@
getPropertyValue('${_browserPrefix}marquee-repetition');
/** Sets the value of "marquee-repetition" */
- void set marqueeRepetition(var value) {
+ void set marqueeRepetition(String value) {
setProperty('${_browserPrefix}marquee-repetition', value, '');
}
@@ -3023,7 +3251,7 @@
getPropertyValue('${_browserPrefix}marquee-speed');
/** Sets the value of "marquee-speed" */
- void set marqueeSpeed(var value) {
+ void set marqueeSpeed(String value) {
setProperty('${_browserPrefix}marquee-speed', value, '');
}
@@ -3032,7 +3260,7 @@
getPropertyValue('${_browserPrefix}marquee-style');
/** Sets the value of "marquee-style" */
- void set marqueeStyle(var value) {
+ void set marqueeStyle(String value) {
setProperty('${_browserPrefix}marquee-style', value, '');
}
@@ -3041,7 +3269,7 @@
getPropertyValue('${_browserPrefix}mask');
/** Sets the value of "mask" */
- void set mask(var value) {
+ void set mask(String value) {
setProperty('${_browserPrefix}mask', value, '');
}
@@ -3050,7 +3278,7 @@
getPropertyValue('${_browserPrefix}mask-attachment');
/** Sets the value of "mask-attachment" */
- void set maskAttachment(var value) {
+ void set maskAttachment(String value) {
setProperty('${_browserPrefix}mask-attachment', value, '');
}
@@ -3059,7 +3287,7 @@
getPropertyValue('${_browserPrefix}mask-box-image');
/** Sets the value of "mask-box-image" */
- void set maskBoxImage(var value) {
+ void set maskBoxImage(String value) {
setProperty('${_browserPrefix}mask-box-image', value, '');
}
@@ -3068,7 +3296,7 @@
getPropertyValue('${_browserPrefix}mask-box-image-outset');
/** Sets the value of "mask-box-image-outset" */
- void set maskBoxImageOutset(var value) {
+ void set maskBoxImageOutset(String value) {
setProperty('${_browserPrefix}mask-box-image-outset', value, '');
}
@@ -3077,7 +3305,7 @@
getPropertyValue('${_browserPrefix}mask-box-image-repeat');
/** Sets the value of "mask-box-image-repeat" */
- void set maskBoxImageRepeat(var value) {
+ void set maskBoxImageRepeat(String value) {
setProperty('${_browserPrefix}mask-box-image-repeat', value, '');
}
@@ -3086,7 +3314,7 @@
getPropertyValue('${_browserPrefix}mask-box-image-slice');
/** Sets the value of "mask-box-image-slice" */
- void set maskBoxImageSlice(var value) {
+ void set maskBoxImageSlice(String value) {
setProperty('${_browserPrefix}mask-box-image-slice', value, '');
}
@@ -3095,7 +3323,7 @@
getPropertyValue('${_browserPrefix}mask-box-image-source');
/** Sets the value of "mask-box-image-source" */
- void set maskBoxImageSource(var value) {
+ void set maskBoxImageSource(String value) {
setProperty('${_browserPrefix}mask-box-image-source', value, '');
}
@@ -3104,7 +3332,7 @@
getPropertyValue('${_browserPrefix}mask-box-image-width');
/** Sets the value of "mask-box-image-width" */
- void set maskBoxImageWidth(var value) {
+ void set maskBoxImageWidth(String value) {
setProperty('${_browserPrefix}mask-box-image-width', value, '');
}
@@ -3113,7 +3341,7 @@
getPropertyValue('${_browserPrefix}mask-clip');
/** Sets the value of "mask-clip" */
- void set maskClip(var value) {
+ void set maskClip(String value) {
setProperty('${_browserPrefix}mask-clip', value, '');
}
@@ -3122,7 +3350,7 @@
getPropertyValue('${_browserPrefix}mask-composite');
/** Sets the value of "mask-composite" */
- void set maskComposite(var value) {
+ void set maskComposite(String value) {
setProperty('${_browserPrefix}mask-composite', value, '');
}
@@ -3131,7 +3359,7 @@
getPropertyValue('${_browserPrefix}mask-image');
/** Sets the value of "mask-image" */
- void set maskImage(var value) {
+ void set maskImage(String value) {
setProperty('${_browserPrefix}mask-image', value, '');
}
@@ -3140,7 +3368,7 @@
getPropertyValue('${_browserPrefix}mask-origin');
/** Sets the value of "mask-origin" */
- void set maskOrigin(var value) {
+ void set maskOrigin(String value) {
setProperty('${_browserPrefix}mask-origin', value, '');
}
@@ -3149,7 +3377,7 @@
getPropertyValue('${_browserPrefix}mask-position');
/** Sets the value of "mask-position" */
- void set maskPosition(var value) {
+ void set maskPosition(String value) {
setProperty('${_browserPrefix}mask-position', value, '');
}
@@ -3158,7 +3386,7 @@
getPropertyValue('${_browserPrefix}mask-position-x');
/** Sets the value of "mask-position-x" */
- void set maskPositionX(var value) {
+ void set maskPositionX(String value) {
setProperty('${_browserPrefix}mask-position-x', value, '');
}
@@ -3167,7 +3395,7 @@
getPropertyValue('${_browserPrefix}mask-position-y');
/** Sets the value of "mask-position-y" */
- void set maskPositionY(var value) {
+ void set maskPositionY(String value) {
setProperty('${_browserPrefix}mask-position-y', value, '');
}
@@ -3176,7 +3404,7 @@
getPropertyValue('${_browserPrefix}mask-repeat');
/** Sets the value of "mask-repeat" */
- void set maskRepeat(var value) {
+ void set maskRepeat(String value) {
setProperty('${_browserPrefix}mask-repeat', value, '');
}
@@ -3185,7 +3413,7 @@
getPropertyValue('${_browserPrefix}mask-repeat-x');
/** Sets the value of "mask-repeat-x" */
- void set maskRepeatX(var value) {
+ void set maskRepeatX(String value) {
setProperty('${_browserPrefix}mask-repeat-x', value, '');
}
@@ -3194,7 +3422,7 @@
getPropertyValue('${_browserPrefix}mask-repeat-y');
/** Sets the value of "mask-repeat-y" */
- void set maskRepeatY(var value) {
+ void set maskRepeatY(String value) {
setProperty('${_browserPrefix}mask-repeat-y', value, '');
}
@@ -3203,25 +3431,16 @@
getPropertyValue('${_browserPrefix}mask-size');
/** Sets the value of "mask-size" */
- void set maskSize(var value) {
+ void set maskSize(String value) {
setProperty('${_browserPrefix}mask-size', value, '');
}
- /** Gets the value of "match-nearest-mail-blockquote-color" */
- String get matchNearestMailBlockquoteColor =>
- getPropertyValue('${_browserPrefix}match-nearest-mail-blockquote-color');
-
- /** Sets the value of "match-nearest-mail-blockquote-color" */
- void set matchNearestMailBlockquoteColor(var value) {
- setProperty('${_browserPrefix}match-nearest-mail-blockquote-color', value, '');
- }
-
/** Gets the value of "max-height" */
String get maxHeight =>
getPropertyValue('max-height');
/** Sets the value of "max-height" */
- void set maxHeight(var value) {
+ void set maxHeight(String value) {
setProperty('max-height', value, '');
}
@@ -3230,7 +3449,7 @@
getPropertyValue('${_browserPrefix}max-logical-height');
/** Sets the value of "max-logical-height" */
- void set maxLogicalHeight(var value) {
+ void set maxLogicalHeight(String value) {
setProperty('${_browserPrefix}max-logical-height', value, '');
}
@@ -3239,7 +3458,7 @@
getPropertyValue('${_browserPrefix}max-logical-width');
/** Sets the value of "max-logical-width" */
- void set maxLogicalWidth(var value) {
+ void set maxLogicalWidth(String value) {
setProperty('${_browserPrefix}max-logical-width', value, '');
}
@@ -3248,16 +3467,25 @@
getPropertyValue('max-width');
/** Sets the value of "max-width" */
- void set maxWidth(var value) {
+ void set maxWidth(String value) {
setProperty('max-width', value, '');
}
+ /** Gets the value of "max-zoom" */
+ String get maxZoom =>
+ getPropertyValue('max-zoom');
+
+ /** Sets the value of "max-zoom" */
+ void set maxZoom(String value) {
+ setProperty('max-zoom', value, '');
+ }
+
/** Gets the value of "min-height" */
String get minHeight =>
getPropertyValue('min-height');
/** Sets the value of "min-height" */
- void set minHeight(var value) {
+ void set minHeight(String value) {
setProperty('min-height', value, '');
}
@@ -3266,7 +3494,7 @@
getPropertyValue('${_browserPrefix}min-logical-height');
/** Sets the value of "min-logical-height" */
- void set minLogicalHeight(var value) {
+ void set minLogicalHeight(String value) {
setProperty('${_browserPrefix}min-logical-height', value, '');
}
@@ -3275,7 +3503,7 @@
getPropertyValue('${_browserPrefix}min-logical-width');
/** Sets the value of "min-logical-width" */
- void set minLogicalWidth(var value) {
+ void set minLogicalWidth(String value) {
setProperty('${_browserPrefix}min-logical-width', value, '');
}
@@ -3284,16 +3512,25 @@
getPropertyValue('min-width');
/** Sets the value of "min-width" */
- void set minWidth(var value) {
+ void set minWidth(String value) {
setProperty('min-width', value, '');
}
+ /** Gets the value of "min-zoom" */
+ String get minZoom =>
+ getPropertyValue('min-zoom');
+
+ /** Sets the value of "min-zoom" */
+ void set minZoom(String value) {
+ setProperty('min-zoom', value, '');
+ }
+
/** Gets the value of "nbsp-mode" */
String get nbspMode =>
getPropertyValue('${_browserPrefix}nbsp-mode');
/** Sets the value of "nbsp-mode" */
- void set nbspMode(var value) {
+ void set nbspMode(String value) {
setProperty('${_browserPrefix}nbsp-mode', value, '');
}
@@ -3302,16 +3539,34 @@
getPropertyValue('opacity');
/** Sets the value of "opacity" */
- void set opacity(var value) {
+ void set opacity(String value) {
setProperty('opacity', value, '');
}
+ /** Gets the value of "order" */
+ String get order =>
+ getPropertyValue('${_browserPrefix}order');
+
+ /** Sets the value of "order" */
+ void set order(String value) {
+ setProperty('${_browserPrefix}order', value, '');
+ }
+
+ /** Gets the value of "orientation" */
+ String get orientation =>
+ getPropertyValue('orientation');
+
+ /** Sets the value of "orientation" */
+ void set orientation(String value) {
+ setProperty('orientation', value, '');
+ }
+
/** Gets the value of "orphans" */
String get orphans =>
getPropertyValue('orphans');
/** Sets the value of "orphans" */
- void set orphans(var value) {
+ void set orphans(String value) {
setProperty('orphans', value, '');
}
@@ -3320,7 +3575,7 @@
getPropertyValue('outline');
/** Sets the value of "outline" */
- void set outline(var value) {
+ void set outline(String value) {
setProperty('outline', value, '');
}
@@ -3329,7 +3584,7 @@
getPropertyValue('outline-color');
/** Sets the value of "outline-color" */
- void set outlineColor(var value) {
+ void set outlineColor(String value) {
setProperty('outline-color', value, '');
}
@@ -3338,7 +3593,7 @@
getPropertyValue('outline-offset');
/** Sets the value of "outline-offset" */
- void set outlineOffset(var value) {
+ void set outlineOffset(String value) {
setProperty('outline-offset', value, '');
}
@@ -3347,7 +3602,7 @@
getPropertyValue('outline-style');
/** Sets the value of "outline-style" */
- void set outlineStyle(var value) {
+ void set outlineStyle(String value) {
setProperty('outline-style', value, '');
}
@@ -3356,7 +3611,7 @@
getPropertyValue('outline-width');
/** Sets the value of "outline-width" */
- void set outlineWidth(var value) {
+ void set outlineWidth(String value) {
setProperty('outline-width', value, '');
}
@@ -3365,16 +3620,34 @@
getPropertyValue('overflow');
/** Sets the value of "overflow" */
- void set overflow(var value) {
+ void set overflow(String value) {
setProperty('overflow', value, '');
}
+ /** Gets the value of "overflow-scrolling" */
+ String get overflowScrolling =>
+ getPropertyValue('${_browserPrefix}overflow-scrolling');
+
+ /** Sets the value of "overflow-scrolling" */
+ void set overflowScrolling(String value) {
+ setProperty('${_browserPrefix}overflow-scrolling', value, '');
+ }
+
+ /** Gets the value of "overflow-wrap" */
+ String get overflowWrap =>
+ getPropertyValue('overflow-wrap');
+
+ /** Sets the value of "overflow-wrap" */
+ void set overflowWrap(String value) {
+ setProperty('overflow-wrap', value, '');
+ }
+
/** Gets the value of "overflow-x" */
String get overflowX =>
getPropertyValue('overflow-x');
/** Sets the value of "overflow-x" */
- void set overflowX(var value) {
+ void set overflowX(String value) {
setProperty('overflow-x', value, '');
}
@@ -3383,7 +3656,7 @@
getPropertyValue('overflow-y');
/** Sets the value of "overflow-y" */
- void set overflowY(var value) {
+ void set overflowY(String value) {
setProperty('overflow-y', value, '');
}
@@ -3392,7 +3665,7 @@
getPropertyValue('padding');
/** Sets the value of "padding" */
- void set padding(var value) {
+ void set padding(String value) {
setProperty('padding', value, '');
}
@@ -3401,7 +3674,7 @@
getPropertyValue('${_browserPrefix}padding-after');
/** Sets the value of "padding-after" */
- void set paddingAfter(var value) {
+ void set paddingAfter(String value) {
setProperty('${_browserPrefix}padding-after', value, '');
}
@@ -3410,7 +3683,7 @@
getPropertyValue('${_browserPrefix}padding-before');
/** Sets the value of "padding-before" */
- void set paddingBefore(var value) {
+ void set paddingBefore(String value) {
setProperty('${_browserPrefix}padding-before', value, '');
}
@@ -3419,7 +3692,7 @@
getPropertyValue('padding-bottom');
/** Sets the value of "padding-bottom" */
- void set paddingBottom(var value) {
+ void set paddingBottom(String value) {
setProperty('padding-bottom', value, '');
}
@@ -3428,7 +3701,7 @@
getPropertyValue('${_browserPrefix}padding-end');
/** Sets the value of "padding-end" */
- void set paddingEnd(var value) {
+ void set paddingEnd(String value) {
setProperty('${_browserPrefix}padding-end', value, '');
}
@@ -3437,7 +3710,7 @@
getPropertyValue('padding-left');
/** Sets the value of "padding-left" */
- void set paddingLeft(var value) {
+ void set paddingLeft(String value) {
setProperty('padding-left', value, '');
}
@@ -3446,7 +3719,7 @@
getPropertyValue('padding-right');
/** Sets the value of "padding-right" */
- void set paddingRight(var value) {
+ void set paddingRight(String value) {
setProperty('padding-right', value, '');
}
@@ -3455,7 +3728,7 @@
getPropertyValue('${_browserPrefix}padding-start');
/** Sets the value of "padding-start" */
- void set paddingStart(var value) {
+ void set paddingStart(String value) {
setProperty('${_browserPrefix}padding-start', value, '');
}
@@ -3464,7 +3737,7 @@
getPropertyValue('padding-top');
/** Sets the value of "padding-top" */
- void set paddingTop(var value) {
+ void set paddingTop(String value) {
setProperty('padding-top', value, '');
}
@@ -3473,7 +3746,7 @@
getPropertyValue('page');
/** Sets the value of "page" */
- void set page(var value) {
+ void set page(String value) {
setProperty('page', value, '');
}
@@ -3482,7 +3755,7 @@
getPropertyValue('page-break-after');
/** Sets the value of "page-break-after" */
- void set pageBreakAfter(var value) {
+ void set pageBreakAfter(String value) {
setProperty('page-break-after', value, '');
}
@@ -3491,7 +3764,7 @@
getPropertyValue('page-break-before');
/** Sets the value of "page-break-before" */
- void set pageBreakBefore(var value) {
+ void set pageBreakBefore(String value) {
setProperty('page-break-before', value, '');
}
@@ -3500,7 +3773,7 @@
getPropertyValue('page-break-inside');
/** Sets the value of "page-break-inside" */
- void set pageBreakInside(var value) {
+ void set pageBreakInside(String value) {
setProperty('page-break-inside', value, '');
}
@@ -3509,7 +3782,7 @@
getPropertyValue('${_browserPrefix}perspective');
/** Sets the value of "perspective" */
- void set perspective(var value) {
+ void set perspective(String value) {
setProperty('${_browserPrefix}perspective', value, '');
}
@@ -3518,7 +3791,7 @@
getPropertyValue('${_browserPrefix}perspective-origin');
/** Sets the value of "perspective-origin" */
- void set perspectiveOrigin(var value) {
+ void set perspectiveOrigin(String value) {
setProperty('${_browserPrefix}perspective-origin', value, '');
}
@@ -3527,7 +3800,7 @@
getPropertyValue('${_browserPrefix}perspective-origin-x');
/** Sets the value of "perspective-origin-x" */
- void set perspectiveOriginX(var value) {
+ void set perspectiveOriginX(String value) {
setProperty('${_browserPrefix}perspective-origin-x', value, '');
}
@@ -3536,7 +3809,7 @@
getPropertyValue('${_browserPrefix}perspective-origin-y');
/** Sets the value of "perspective-origin-y" */
- void set perspectiveOriginY(var value) {
+ void set perspectiveOriginY(String value) {
setProperty('${_browserPrefix}perspective-origin-y', value, '');
}
@@ -3545,7 +3818,7 @@
getPropertyValue('pointer-events');
/** Sets the value of "pointer-events" */
- void set pointerEvents(var value) {
+ void set pointerEvents(String value) {
setProperty('pointer-events', value, '');
}
@@ -3554,16 +3827,25 @@
getPropertyValue('position');
/** Sets the value of "position" */
- void set position(var value) {
+ void set position(String value) {
setProperty('position', value, '');
}
+ /** Gets the value of "print-color-adjust" */
+ String get printColorAdjust =>
+ getPropertyValue('${_browserPrefix}print-color-adjust');
+
+ /** Sets the value of "print-color-adjust" */
+ void set printColorAdjust(String value) {
+ setProperty('${_browserPrefix}print-color-adjust', value, '');
+ }
+
/** Gets the value of "quotes" */
String get quotes =>
getPropertyValue('quotes');
/** Sets the value of "quotes" */
- void set quotes(var value) {
+ void set quotes(String value) {
setProperty('quotes', value, '');
}
@@ -3572,7 +3854,7 @@
getPropertyValue('${_browserPrefix}region-break-after');
/** Sets the value of "region-break-after" */
- void set regionBreakAfter(var value) {
+ void set regionBreakAfter(String value) {
setProperty('${_browserPrefix}region-break-after', value, '');
}
@@ -3581,7 +3863,7 @@
getPropertyValue('${_browserPrefix}region-break-before');
/** Sets the value of "region-break-before" */
- void set regionBreakBefore(var value) {
+ void set regionBreakBefore(String value) {
setProperty('${_browserPrefix}region-break-before', value, '');
}
@@ -3590,7 +3872,7 @@
getPropertyValue('${_browserPrefix}region-break-inside');
/** Sets the value of "region-break-inside" */
- void set regionBreakInside(var value) {
+ void set regionBreakInside(String value) {
setProperty('${_browserPrefix}region-break-inside', value, '');
}
@@ -3599,7 +3881,7 @@
getPropertyValue('${_browserPrefix}region-overflow');
/** Sets the value of "region-overflow" */
- void set regionOverflow(var value) {
+ void set regionOverflow(String value) {
setProperty('${_browserPrefix}region-overflow', value, '');
}
@@ -3608,7 +3890,7 @@
getPropertyValue('resize');
/** Sets the value of "resize" */
- void set resize(var value) {
+ void set resize(String value) {
setProperty('resize', value, '');
}
@@ -3617,7 +3899,7 @@
getPropertyValue('right');
/** Sets the value of "right" */
- void set right(var value) {
+ void set right(String value) {
setProperty('right', value, '');
}
@@ -3626,16 +3908,52 @@
getPropertyValue('${_browserPrefix}rtl-ordering');
/** Sets the value of "rtl-ordering" */
- void set rtlOrdering(var value) {
+ void set rtlOrdering(String value) {
setProperty('${_browserPrefix}rtl-ordering', value, '');
}
+ /** Gets the value of "shape-inside" */
+ String get shapeInside =>
+ getPropertyValue('${_browserPrefix}shape-inside');
+
+ /** Sets the value of "shape-inside" */
+ void set shapeInside(String value) {
+ setProperty('${_browserPrefix}shape-inside', value, '');
+ }
+
+ /** Gets the value of "shape-margin" */
+ String get shapeMargin =>
+ getPropertyValue('${_browserPrefix}shape-margin');
+
+ /** Sets the value of "shape-margin" */
+ void set shapeMargin(String value) {
+ setProperty('${_browserPrefix}shape-margin', value, '');
+ }
+
+ /** Gets the value of "shape-outside" */
+ String get shapeOutside =>
+ getPropertyValue('${_browserPrefix}shape-outside');
+
+ /** Sets the value of "shape-outside" */
+ void set shapeOutside(String value) {
+ setProperty('${_browserPrefix}shape-outside', value, '');
+ }
+
+ /** Gets the value of "shape-padding" */
+ String get shapePadding =>
+ getPropertyValue('${_browserPrefix}shape-padding');
+
+ /** Sets the value of "shape-padding" */
+ void set shapePadding(String value) {
+ setProperty('${_browserPrefix}shape-padding', value, '');
+ }
+
/** Gets the value of "size" */
String get size =>
getPropertyValue('size');
/** Sets the value of "size" */
- void set size(var value) {
+ void set size(String value) {
setProperty('size', value, '');
}
@@ -3644,7 +3962,7 @@
getPropertyValue('speak');
/** Sets the value of "speak" */
- void set speak(var value) {
+ void set speak(String value) {
setProperty('speak', value, '');
}
@@ -3653,16 +3971,25 @@
getPropertyValue('src');
/** Sets the value of "src" */
- void set src(var value) {
+ void set src(String value) {
setProperty('src', value, '');
}
+ /** Gets the value of "tab-size" */
+ String get tabSize =>
+ getPropertyValue('tab-size');
+
+ /** Sets the value of "tab-size" */
+ void set tabSize(String value) {
+ setProperty('tab-size', value, '');
+ }
+
/** Gets the value of "table-layout" */
String get tableLayout =>
getPropertyValue('table-layout');
/** Sets the value of "table-layout" */
- void set tableLayout(var value) {
+ void set tableLayout(String value) {
setProperty('table-layout', value, '');
}
@@ -3671,7 +3998,7 @@
getPropertyValue('${_browserPrefix}tap-highlight-color');
/** Sets the value of "tap-highlight-color" */
- void set tapHighlightColor(var value) {
+ void set tapHighlightColor(String value) {
setProperty('${_browserPrefix}tap-highlight-color', value, '');
}
@@ -3680,16 +4007,25 @@
getPropertyValue('text-align');
/** Sets the value of "text-align" */
- void set textAlign(var value) {
+ void set textAlign(String value) {
setProperty('text-align', value, '');
}
+ /** Gets the value of "text-align-last" */
+ String get textAlignLast =>
+ getPropertyValue('${_browserPrefix}text-align-last');
+
+ /** Sets the value of "text-align-last" */
+ void set textAlignLast(String value) {
+ setProperty('${_browserPrefix}text-align-last', value, '');
+ }
+
/** Gets the value of "text-combine" */
String get textCombine =>
getPropertyValue('${_browserPrefix}text-combine');
/** Sets the value of "text-combine" */
- void set textCombine(var value) {
+ void set textCombine(String value) {
setProperty('${_browserPrefix}text-combine', value, '');
}
@@ -3698,16 +4034,34 @@
getPropertyValue('text-decoration');
/** Sets the value of "text-decoration" */
- void set textDecoration(var value) {
+ void set textDecoration(String value) {
setProperty('text-decoration', value, '');
}
+ /** Gets the value of "text-decoration-line" */
+ String get textDecorationLine =>
+ getPropertyValue('${_browserPrefix}text-decoration-line');
+
+ /** Sets the value of "text-decoration-line" */
+ void set textDecorationLine(String value) {
+ setProperty('${_browserPrefix}text-decoration-line', value, '');
+ }
+
+ /** Gets the value of "text-decoration-style" */
+ String get textDecorationStyle =>
+ getPropertyValue('${_browserPrefix}text-decoration-style');
+
+ /** Sets the value of "text-decoration-style" */
+ void set textDecorationStyle(String value) {
+ setProperty('${_browserPrefix}text-decoration-style', value, '');
+ }
+
/** Gets the value of "text-decorations-in-effect" */
String get textDecorationsInEffect =>
getPropertyValue('${_browserPrefix}text-decorations-in-effect');
/** Sets the value of "text-decorations-in-effect" */
- void set textDecorationsInEffect(var value) {
+ void set textDecorationsInEffect(String value) {
setProperty('${_browserPrefix}text-decorations-in-effect', value, '');
}
@@ -3716,7 +4070,7 @@
getPropertyValue('${_browserPrefix}text-emphasis');
/** Sets the value of "text-emphasis" */
- void set textEmphasis(var value) {
+ void set textEmphasis(String value) {
setProperty('${_browserPrefix}text-emphasis', value, '');
}
@@ -3725,7 +4079,7 @@
getPropertyValue('${_browserPrefix}text-emphasis-color');
/** Sets the value of "text-emphasis-color" */
- void set textEmphasisColor(var value) {
+ void set textEmphasisColor(String value) {
setProperty('${_browserPrefix}text-emphasis-color', value, '');
}
@@ -3734,7 +4088,7 @@
getPropertyValue('${_browserPrefix}text-emphasis-position');
/** Sets the value of "text-emphasis-position" */
- void set textEmphasisPosition(var value) {
+ void set textEmphasisPosition(String value) {
setProperty('${_browserPrefix}text-emphasis-position', value, '');
}
@@ -3743,7 +4097,7 @@
getPropertyValue('${_browserPrefix}text-emphasis-style');
/** Sets the value of "text-emphasis-style" */
- void set textEmphasisStyle(var value) {
+ void set textEmphasisStyle(String value) {
setProperty('${_browserPrefix}text-emphasis-style', value, '');
}
@@ -3752,7 +4106,7 @@
getPropertyValue('${_browserPrefix}text-fill-color');
/** Sets the value of "text-fill-color" */
- void set textFillColor(var value) {
+ void set textFillColor(String value) {
setProperty('${_browserPrefix}text-fill-color', value, '');
}
@@ -3761,7 +4115,7 @@
getPropertyValue('text-indent');
/** Sets the value of "text-indent" */
- void set textIndent(var value) {
+ void set textIndent(String value) {
setProperty('text-indent', value, '');
}
@@ -3770,7 +4124,7 @@
getPropertyValue('text-line-through');
/** Sets the value of "text-line-through" */
- void set textLineThrough(var value) {
+ void set textLineThrough(String value) {
setProperty('text-line-through', value, '');
}
@@ -3779,7 +4133,7 @@
getPropertyValue('text-line-through-color');
/** Sets the value of "text-line-through-color" */
- void set textLineThroughColor(var value) {
+ void set textLineThroughColor(String value) {
setProperty('text-line-through-color', value, '');
}
@@ -3788,7 +4142,7 @@
getPropertyValue('text-line-through-mode');
/** Sets the value of "text-line-through-mode" */
- void set textLineThroughMode(var value) {
+ void set textLineThroughMode(String value) {
setProperty('text-line-through-mode', value, '');
}
@@ -3797,7 +4151,7 @@
getPropertyValue('text-line-through-style');
/** Sets the value of "text-line-through-style" */
- void set textLineThroughStyle(var value) {
+ void set textLineThroughStyle(String value) {
setProperty('text-line-through-style', value, '');
}
@@ -3806,7 +4160,7 @@
getPropertyValue('text-line-through-width');
/** Sets the value of "text-line-through-width" */
- void set textLineThroughWidth(var value) {
+ void set textLineThroughWidth(String value) {
setProperty('text-line-through-width', value, '');
}
@@ -3815,7 +4169,7 @@
getPropertyValue('${_browserPrefix}text-orientation');
/** Sets the value of "text-orientation" */
- void set textOrientation(var value) {
+ void set textOrientation(String value) {
setProperty('${_browserPrefix}text-orientation', value, '');
}
@@ -3824,7 +4178,7 @@
getPropertyValue('text-overflow');
/** Sets the value of "text-overflow" */
- void set textOverflow(var value) {
+ void set textOverflow(String value) {
setProperty('text-overflow', value, '');
}
@@ -3833,7 +4187,7 @@
getPropertyValue('text-overline');
/** Sets the value of "text-overline" */
- void set textOverline(var value) {
+ void set textOverline(String value) {
setProperty('text-overline', value, '');
}
@@ -3842,7 +4196,7 @@
getPropertyValue('text-overline-color');
/** Sets the value of "text-overline-color" */
- void set textOverlineColor(var value) {
+ void set textOverlineColor(String value) {
setProperty('text-overline-color', value, '');
}
@@ -3851,7 +4205,7 @@
getPropertyValue('text-overline-mode');
/** Sets the value of "text-overline-mode" */
- void set textOverlineMode(var value) {
+ void set textOverlineMode(String value) {
setProperty('text-overline-mode', value, '');
}
@@ -3860,7 +4214,7 @@
getPropertyValue('text-overline-style');
/** Sets the value of "text-overline-style" */
- void set textOverlineStyle(var value) {
+ void set textOverlineStyle(String value) {
setProperty('text-overline-style', value, '');
}
@@ -3869,7 +4223,7 @@
getPropertyValue('text-overline-width');
/** Sets the value of "text-overline-width" */
- void set textOverlineWidth(var value) {
+ void set textOverlineWidth(String value) {
setProperty('text-overline-width', value, '');
}
@@ -3878,7 +4232,7 @@
getPropertyValue('text-rendering');
/** Sets the value of "text-rendering" */
- void set textRendering(var value) {
+ void set textRendering(String value) {
setProperty('text-rendering', value, '');
}
@@ -3887,7 +4241,7 @@
getPropertyValue('${_browserPrefix}text-security');
/** Sets the value of "text-security" */
- void set textSecurity(var value) {
+ void set textSecurity(String value) {
setProperty('${_browserPrefix}text-security', value, '');
}
@@ -3896,7 +4250,7 @@
getPropertyValue('text-shadow');
/** Sets the value of "text-shadow" */
- void set textShadow(var value) {
+ void set textShadow(String value) {
setProperty('text-shadow', value, '');
}
@@ -3905,7 +4259,7 @@
getPropertyValue('${_browserPrefix}text-size-adjust');
/** Sets the value of "text-size-adjust" */
- void set textSizeAdjust(var value) {
+ void set textSizeAdjust(String value) {
setProperty('${_browserPrefix}text-size-adjust', value, '');
}
@@ -3914,7 +4268,7 @@
getPropertyValue('${_browserPrefix}text-stroke');
/** Sets the value of "text-stroke" */
- void set textStroke(var value) {
+ void set textStroke(String value) {
setProperty('${_browserPrefix}text-stroke', value, '');
}
@@ -3923,7 +4277,7 @@
getPropertyValue('${_browserPrefix}text-stroke-color');
/** Sets the value of "text-stroke-color" */
- void set textStrokeColor(var value) {
+ void set textStrokeColor(String value) {
setProperty('${_browserPrefix}text-stroke-color', value, '');
}
@@ -3932,7 +4286,7 @@
getPropertyValue('${_browserPrefix}text-stroke-width');
/** Sets the value of "text-stroke-width" */
- void set textStrokeWidth(var value) {
+ void set textStrokeWidth(String value) {
setProperty('${_browserPrefix}text-stroke-width', value, '');
}
@@ -3941,7 +4295,7 @@
getPropertyValue('text-transform');
/** Sets the value of "text-transform" */
- void set textTransform(var value) {
+ void set textTransform(String value) {
setProperty('text-transform', value, '');
}
@@ -3950,7 +4304,7 @@
getPropertyValue('text-underline');
/** Sets the value of "text-underline" */
- void set textUnderline(var value) {
+ void set textUnderline(String value) {
setProperty('text-underline', value, '');
}
@@ -3959,7 +4313,7 @@
getPropertyValue('text-underline-color');
/** Sets the value of "text-underline-color" */
- void set textUnderlineColor(var value) {
+ void set textUnderlineColor(String value) {
setProperty('text-underline-color', value, '');
}
@@ -3968,7 +4322,7 @@
getPropertyValue('text-underline-mode');
/** Sets the value of "text-underline-mode" */
- void set textUnderlineMode(var value) {
+ void set textUnderlineMode(String value) {
setProperty('text-underline-mode', value, '');
}
@@ -3977,7 +4331,7 @@
getPropertyValue('text-underline-style');
/** Sets the value of "text-underline-style" */
- void set textUnderlineStyle(var value) {
+ void set textUnderlineStyle(String value) {
setProperty('text-underline-style', value, '');
}
@@ -3986,7 +4340,7 @@
getPropertyValue('text-underline-width');
/** Sets the value of "text-underline-width" */
- void set textUnderlineWidth(var value) {
+ void set textUnderlineWidth(String value) {
setProperty('text-underline-width', value, '');
}
@@ -3995,7 +4349,7 @@
getPropertyValue('top');
/** Sets the value of "top" */
- void set top(var value) {
+ void set top(String value) {
setProperty('top', value, '');
}
@@ -4004,7 +4358,7 @@
getPropertyValue('${_browserPrefix}transform');
/** Sets the value of "transform" */
- void set transform(var value) {
+ void set transform(String value) {
setProperty('${_browserPrefix}transform', value, '');
}
@@ -4013,7 +4367,7 @@
getPropertyValue('${_browserPrefix}transform-origin');
/** Sets the value of "transform-origin" */
- void set transformOrigin(var value) {
+ void set transformOrigin(String value) {
setProperty('${_browserPrefix}transform-origin', value, '');
}
@@ -4022,7 +4376,7 @@
getPropertyValue('${_browserPrefix}transform-origin-x');
/** Sets the value of "transform-origin-x" */
- void set transformOriginX(var value) {
+ void set transformOriginX(String value) {
setProperty('${_browserPrefix}transform-origin-x', value, '');
}
@@ -4031,7 +4385,7 @@
getPropertyValue('${_browserPrefix}transform-origin-y');
/** Sets the value of "transform-origin-y" */
- void set transformOriginY(var value) {
+ void set transformOriginY(String value) {
setProperty('${_browserPrefix}transform-origin-y', value, '');
}
@@ -4040,7 +4394,7 @@
getPropertyValue('${_browserPrefix}transform-origin-z');
/** Sets the value of "transform-origin-z" */
- void set transformOriginZ(var value) {
+ void set transformOriginZ(String value) {
setProperty('${_browserPrefix}transform-origin-z', value, '');
}
@@ -4049,7 +4403,7 @@
getPropertyValue('${_browserPrefix}transform-style');
/** Sets the value of "transform-style" */
- void set transformStyle(var value) {
+ void set transformStyle(String value) {
setProperty('${_browserPrefix}transform-style', value, '');
}
@@ -4058,7 +4412,7 @@
getPropertyValue('${_browserPrefix}transition');
/** Sets the value of "transition" */
- void set transition(var value) {
+ void set transition(String value) {
setProperty('${_browserPrefix}transition', value, '');
}
@@ -4067,7 +4421,7 @@
getPropertyValue('${_browserPrefix}transition-delay');
/** Sets the value of "transition-delay" */
- void set transitionDelay(var value) {
+ void set transitionDelay(String value) {
setProperty('${_browserPrefix}transition-delay', value, '');
}
@@ -4076,7 +4430,7 @@
getPropertyValue('${_browserPrefix}transition-duration');
/** Sets the value of "transition-duration" */
- void set transitionDuration(var value) {
+ void set transitionDuration(String value) {
setProperty('${_browserPrefix}transition-duration', value, '');
}
@@ -4085,7 +4439,7 @@
getPropertyValue('${_browserPrefix}transition-property');
/** Sets the value of "transition-property" */
- void set transitionProperty(var value) {
+ void set transitionProperty(String value) {
setProperty('${_browserPrefix}transition-property', value, '');
}
@@ -4094,7 +4448,7 @@
getPropertyValue('${_browserPrefix}transition-timing-function');
/** Sets the value of "transition-timing-function" */
- void set transitionTimingFunction(var value) {
+ void set transitionTimingFunction(String value) {
setProperty('${_browserPrefix}transition-timing-function', value, '');
}
@@ -4103,7 +4457,7 @@
getPropertyValue('unicode-bidi');
/** Sets the value of "unicode-bidi" */
- void set unicodeBidi(var value) {
+ void set unicodeBidi(String value) {
setProperty('unicode-bidi', value, '');
}
@@ -4112,7 +4466,7 @@
getPropertyValue('unicode-range');
/** Sets the value of "unicode-range" */
- void set unicodeRange(var value) {
+ void set unicodeRange(String value) {
setProperty('unicode-range', value, '');
}
@@ -4121,7 +4475,7 @@
getPropertyValue('${_browserPrefix}user-drag');
/** Sets the value of "user-drag" */
- void set userDrag(var value) {
+ void set userDrag(String value) {
setProperty('${_browserPrefix}user-drag', value, '');
}
@@ -4130,7 +4484,7 @@
getPropertyValue('${_browserPrefix}user-modify');
/** Sets the value of "user-modify" */
- void set userModify(var value) {
+ void set userModify(String value) {
setProperty('${_browserPrefix}user-modify', value, '');
}
@@ -4139,16 +4493,25 @@
getPropertyValue('${_browserPrefix}user-select');
/** Sets the value of "user-select" */
- void set userSelect(var value) {
+ void set userSelect(String value) {
setProperty('${_browserPrefix}user-select', value, '');
}
+ /** Gets the value of "user-zoom" */
+ String get userZoom =>
+ getPropertyValue('user-zoom');
+
+ /** Sets the value of "user-zoom" */
+ void set userZoom(String value) {
+ setProperty('user-zoom', value, '');
+ }
+
/** Gets the value of "vertical-align" */
String get verticalAlign =>
getPropertyValue('vertical-align');
/** Sets the value of "vertical-align" */
- void set verticalAlign(var value) {
+ void set verticalAlign(String value) {
setProperty('vertical-align', value, '');
}
@@ -4157,7 +4520,7 @@
getPropertyValue('visibility');
/** Sets the value of "visibility" */
- void set visibility(var value) {
+ void set visibility(String value) {
setProperty('visibility', value, '');
}
@@ -4166,7 +4529,7 @@
getPropertyValue('white-space');
/** Sets the value of "white-space" */
- void set whiteSpace(var value) {
+ void set whiteSpace(String value) {
setProperty('white-space', value, '');
}
@@ -4175,7 +4538,7 @@
getPropertyValue('widows');
/** Sets the value of "widows" */
- void set widows(var value) {
+ void set widows(String value) {
setProperty('widows', value, '');
}
@@ -4184,7 +4547,7 @@
getPropertyValue('width');
/** Sets the value of "width" */
- void set width(var value) {
+ void set width(String value) {
setProperty('width', value, '');
}
@@ -4193,7 +4556,7 @@
getPropertyValue('word-break');
/** Sets the value of "word-break" */
- void set wordBreak(var value) {
+ void set wordBreak(String value) {
setProperty('word-break', value, '');
}
@@ -4202,7 +4565,7 @@
getPropertyValue('word-spacing');
/** Sets the value of "word-spacing" */
- void set wordSpacing(var value) {
+ void set wordSpacing(String value) {
setProperty('word-spacing', value, '');
}
@@ -4211,17 +4574,35 @@
getPropertyValue('word-wrap');
/** Sets the value of "word-wrap" */
- void set wordWrap(var value) {
+ void set wordWrap(String value) {
setProperty('word-wrap', value, '');
}
- /** Gets the value of "wrap-shape" */
- String get wrapShape =>
- getPropertyValue('${_browserPrefix}wrap-shape');
+ /** Gets the value of "wrap" */
+ String get wrap =>
+ getPropertyValue('${_browserPrefix}wrap');
- /** Sets the value of "wrap-shape" */
- void set wrapShape(var value) {
- setProperty('${_browserPrefix}wrap-shape', value, '');
+ /** Sets the value of "wrap" */
+ void set wrap(String value) {
+ setProperty('${_browserPrefix}wrap', value, '');
+ }
+
+ /** Gets the value of "wrap-flow" */
+ String get wrapFlow =>
+ getPropertyValue('${_browserPrefix}wrap-flow');
+
+ /** Sets the value of "wrap-flow" */
+ void set wrapFlow(String value) {
+ setProperty('${_browserPrefix}wrap-flow', value, '');
+ }
+
+ /** Gets the value of "wrap-through" */
+ String get wrapThrough =>
+ getPropertyValue('${_browserPrefix}wrap-through');
+
+ /** Sets the value of "wrap-through" */
+ void set wrapThrough(String value) {
+ setProperty('${_browserPrefix}wrap-through', value, '');
}
/** Gets the value of "writing-mode" */
@@ -4229,7 +4610,7 @@
getPropertyValue('${_browserPrefix}writing-mode');
/** Sets the value of "writing-mode" */
- void set writingMode(var value) {
+ void set writingMode(String value) {
setProperty('${_browserPrefix}writing-mode', value, '');
}
@@ -4238,7 +4619,7 @@
getPropertyValue('z-index');
/** Sets the value of "z-index" */
- void set zIndex(var value) {
+ void set zIndex(String value) {
setProperty('z-index', value, '');
}
@@ -4247,7 +4628,7 @@
getPropertyValue('zoom');
/** Sets the value of "zoom" */
- void set zoom(var value) {
+ void set zoom(String value) {
setProperty('zoom', value, '');
}
}
@@ -4256,13 +4637,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName CSSStyleRule
+/// @domName CSSStyleRule; @docsEditable true
class CSSStyleRule extends CSSRule native "*CSSStyleRule" {
- /** @domName CSSStyleRule.selectorText */
+ /// @domName CSSStyleRule.selectorText; @docsEditable true
String selectorText;
- /** @domName CSSStyleRule.style */
+ /// @domName CSSStyleRule.style; @docsEditable true
final CSSStyleDeclaration style;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4270,28 +4651,30 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName CSSStyleSheet
+/// @domName CSSStyleSheet; @docsEditable true
class CSSStyleSheet extends StyleSheet native "*CSSStyleSheet" {
- /** @domName CSSStyleSheet.cssRules */
+ /// @domName CSSStyleSheet.cssRules; @docsEditable true
+ @Returns('_CSSRuleList') @Creates('_CSSRuleList')
final List<CSSRule> cssRules;
- /** @domName CSSStyleSheet.ownerRule */
+ /// @domName CSSStyleSheet.ownerRule; @docsEditable true
final CSSRule ownerRule;
- /** @domName CSSStyleSheet.rules */
+ /// @domName CSSStyleSheet.rules; @docsEditable true
+ @Returns('_CSSRuleList') @Creates('_CSSRuleList')
final List<CSSRule> rules;
- /** @domName CSSStyleSheet.addRule */
+ /// @domName CSSStyleSheet.addRule; @docsEditable true
int addRule(String selector, String style, [int index]) native;
- /** @domName CSSStyleSheet.deleteRule */
+ /// @domName CSSStyleSheet.deleteRule; @docsEditable true
void deleteRule(int index) native;
- /** @domName CSSStyleSheet.insertRule */
+ /// @domName CSSStyleSheet.insertRule; @docsEditable true
int insertRule(String rule, int index) native;
- /** @domName CSSStyleSheet.removeRule */
+ /// @domName CSSStyleSheet.removeRule; @docsEditable true
void removeRule(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4299,7 +4682,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebKitCSSTransformValue
+/// @domName WebKitCSSTransformValue; @docsEditable true
class CSSTransformValue extends _CSSValueList native "*WebKitCSSTransformValue" {
static const int CSS_MATRIX = 11;
@@ -4344,7 +4727,7 @@
static const int CSS_TRANSLATEZ = 12;
- /** @domName WebKitCSSTransformValue.operationType */
+ /// @domName WebKitCSSTransformValue.operationType; @docsEditable true
final int operationType;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4352,7 +4735,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName CSSUnknownRule
+/// @domName CSSUnknownRule; @docsEditable true
class CSSUnknownRule extends CSSRule native "*CSSUnknownRule" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4360,7 +4743,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName CSSValue
+/// @domName CSSValue; @docsEditable true
class CSSValue native "*CSSValue" {
static const int CSS_CUSTOM = 3;
@@ -4371,10 +4754,10 @@
static const int CSS_VALUE_LIST = 2;
- /** @domName CSSValue.cssText */
+ /// @domName CSSValue.cssText; @docsEditable true
String cssText;
- /** @domName CSSValue.cssValueType */
+ /// @domName CSSValue.cssValueType; @docsEditable true
final int cssValueType;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4385,22 +4768,19 @@
class CanvasElement extends Element implements Element native "*HTMLCanvasElement" {
factory CanvasElement({int width, int height}) {
- if (!?width) {
- return _Elements.createCanvasElement();
- }
- if (!?height) {
- return _Elements.createCanvasElement(width);
- }
- return _Elements.createCanvasElement(width, height);
+ var e = document.$dom_createElement("canvas");
+ if (width != null) e.width = width;
+ if (height != null) e.height = height;
+ return e;
}
- /** @domName HTMLCanvasElement.height */
+ /// @domName HTMLCanvasElement.height; @docsEditable true
int height;
- /** @domName HTMLCanvasElement.width */
+ /// @domName HTMLCanvasElement.width; @docsEditable true
int width;
- /** @domName HTMLCanvasElement.toDataURL */
+ /// @domName HTMLCanvasElement.toDataURL; @docsEditable true
String toDataURL(String type, [num quality]) native;
@@ -4412,10 +4792,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName CanvasGradient
+/// @domName CanvasGradient; @docsEditable true
class CanvasGradient native "*CanvasGradient" {
- /** @domName CanvasGradient.addColorStop */
+ /// @domName CanvasGradient.addColorStop; @docsEditable true
void addColorStop(num offset, String color) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4423,7 +4803,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName CanvasPattern
+/// @domName CanvasPattern; @docsEditable true
class CanvasPattern native "*CanvasPattern" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4431,10 +4811,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName CanvasRenderingContext
+/// @domName CanvasRenderingContext; @docsEditable true
class CanvasRenderingContext native "*CanvasRenderingContext" {
- /** @domName CanvasRenderingContext.canvas */
+ /// @domName CanvasRenderingContext.canvas; @docsEditable true
final CanvasElement canvas;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4444,91 +4824,91 @@
class CanvasRenderingContext2D extends CanvasRenderingContext native "*CanvasRenderingContext2D" {
- /** @domName CanvasRenderingContext2D.fillStyle */
+ /// @domName CanvasRenderingContext2D.fillStyle; @docsEditable true
dynamic fillStyle;
- /** @domName CanvasRenderingContext2D.font */
+ /// @domName CanvasRenderingContext2D.font; @docsEditable true
String font;
- /** @domName CanvasRenderingContext2D.globalAlpha */
+ /// @domName CanvasRenderingContext2D.globalAlpha; @docsEditable true
num globalAlpha;
- /** @domName CanvasRenderingContext2D.globalCompositeOperation */
+ /// @domName CanvasRenderingContext2D.globalCompositeOperation; @docsEditable true
String globalCompositeOperation;
- /** @domName CanvasRenderingContext2D.lineCap */
+ /// @domName CanvasRenderingContext2D.lineCap; @docsEditable true
String lineCap;
- /** @domName CanvasRenderingContext2D.lineDashOffset */
+ /// @domName CanvasRenderingContext2D.lineDashOffset; @docsEditable true
num lineDashOffset;
- /** @domName CanvasRenderingContext2D.lineJoin */
+ /// @domName CanvasRenderingContext2D.lineJoin; @docsEditable true
String lineJoin;
- /** @domName CanvasRenderingContext2D.lineWidth */
+ /// @domName CanvasRenderingContext2D.lineWidth; @docsEditable true
num lineWidth;
- /** @domName CanvasRenderingContext2D.miterLimit */
+ /// @domName CanvasRenderingContext2D.miterLimit; @docsEditable true
num miterLimit;
- /** @domName CanvasRenderingContext2D.shadowBlur */
+ /// @domName CanvasRenderingContext2D.shadowBlur; @docsEditable true
num shadowBlur;
- /** @domName CanvasRenderingContext2D.shadowColor */
+ /// @domName CanvasRenderingContext2D.shadowColor; @docsEditable true
String shadowColor;
- /** @domName CanvasRenderingContext2D.shadowOffsetX */
+ /// @domName CanvasRenderingContext2D.shadowOffsetX; @docsEditable true
num shadowOffsetX;
- /** @domName CanvasRenderingContext2D.shadowOffsetY */
+ /// @domName CanvasRenderingContext2D.shadowOffsetY; @docsEditable true
num shadowOffsetY;
- /** @domName CanvasRenderingContext2D.strokeStyle */
+ /// @domName CanvasRenderingContext2D.strokeStyle; @docsEditable true
dynamic strokeStyle;
- /** @domName CanvasRenderingContext2D.textAlign */
+ /// @domName CanvasRenderingContext2D.textAlign; @docsEditable true
String textAlign;
- /** @domName CanvasRenderingContext2D.textBaseline */
+ /// @domName CanvasRenderingContext2D.textBaseline; @docsEditable true
String textBaseline;
- /** @domName CanvasRenderingContext2D.webkitBackingStorePixelRatio */
+ /// @domName CanvasRenderingContext2D.webkitBackingStorePixelRatio; @docsEditable true
final num webkitBackingStorePixelRatio;
- /** @domName CanvasRenderingContext2D.webkitImageSmoothingEnabled */
+ /// @domName CanvasRenderingContext2D.webkitImageSmoothingEnabled; @docsEditable true
bool webkitImageSmoothingEnabled;
- /** @domName CanvasRenderingContext2D.webkitLineDash */
+ /// @domName CanvasRenderingContext2D.webkitLineDash; @docsEditable true
List webkitLineDash;
- /** @domName CanvasRenderingContext2D.webkitLineDashOffset */
+ /// @domName CanvasRenderingContext2D.webkitLineDashOffset; @docsEditable true
num webkitLineDashOffset;
- /** @domName CanvasRenderingContext2D.arc */
+ /// @domName CanvasRenderingContext2D.arc; @docsEditable true
void arc(num x, num y, num radius, num startAngle, num endAngle, bool anticlockwise) native;
- /** @domName CanvasRenderingContext2D.arcTo */
+ /// @domName CanvasRenderingContext2D.arcTo; @docsEditable true
void arcTo(num x1, num y1, num x2, num y2, num radius) native;
- /** @domName CanvasRenderingContext2D.beginPath */
+ /// @domName CanvasRenderingContext2D.beginPath; @docsEditable true
void beginPath() native;
- /** @domName CanvasRenderingContext2D.bezierCurveTo */
+ /// @domName CanvasRenderingContext2D.bezierCurveTo; @docsEditable true
void bezierCurveTo(num cp1x, num cp1y, num cp2x, num cp2y, num x, num y) native;
- /** @domName CanvasRenderingContext2D.clearRect */
+ /// @domName CanvasRenderingContext2D.clearRect; @docsEditable true
void clearRect(num x, num y, num width, num height) native;
- /** @domName CanvasRenderingContext2D.clearShadow */
+ /// @domName CanvasRenderingContext2D.clearShadow; @docsEditable true
void clearShadow() native;
- /** @domName CanvasRenderingContext2D.clip */
+ /// @domName CanvasRenderingContext2D.clip; @docsEditable true
void clip() native;
- /** @domName CanvasRenderingContext2D.closePath */
+ /// @domName CanvasRenderingContext2D.closePath; @docsEditable true
void closePath() native;
- /** @domName CanvasRenderingContext2D.createImageData */
+ /// @domName CanvasRenderingContext2D.createImageData; @docsEditable true
ImageData createImageData(imagedata_OR_sw, [num sh]) {
if ((?imagedata_OR_sw && (imagedata_OR_sw is ImageData || imagedata_OR_sw == null)) &&
!?sh) {
@@ -4538,57 +4918,60 @@
if ((?imagedata_OR_sw && (imagedata_OR_sw is num || imagedata_OR_sw == null))) {
return _convertNativeToDart_ImageData(_createImageData_2(imagedata_OR_sw, sh));
}
- throw const Exception("Incorrect number or type of arguments");
+ throw new ArgumentError("Incorrect number or type of arguments");
}
+ @Creates('ImageData|=Object')
_createImageData_1(imagedata) native "createImageData";
+ @Creates('ImageData|=Object')
_createImageData_2(num sw, sh) native "createImageData";
- /** @domName CanvasRenderingContext2D.createLinearGradient */
+ /// @domName CanvasRenderingContext2D.createLinearGradient; @docsEditable true
CanvasGradient createLinearGradient(num x0, num y0, num x1, num y1) native;
- /** @domName CanvasRenderingContext2D.createPattern */
+ /// @domName CanvasRenderingContext2D.createPattern; @docsEditable true
CanvasPattern createPattern(canvas_OR_image, String repetitionType) native;
- /** @domName CanvasRenderingContext2D.createRadialGradient */
+ /// @domName CanvasRenderingContext2D.createRadialGradient; @docsEditable true
CanvasGradient createRadialGradient(num x0, num y0, num r0, num x1, num y1, num r1) native;
- /** @domName CanvasRenderingContext2D.drawImage */
+ /// @domName CanvasRenderingContext2D.drawImage; @docsEditable true
void drawImage(canvas_OR_image_OR_video, num sx_OR_x, num sy_OR_y, [num sw_OR_width, num height_OR_sh, num dx, num dy, num dw, num dh]) native;
- /** @domName CanvasRenderingContext2D.drawImageFromRect */
+ /// @domName CanvasRenderingContext2D.drawImageFromRect; @docsEditable true
void drawImageFromRect(ImageElement image, [num sx, num sy, num sw, num sh, num dx, num dy, num dw, num dh, String compositeOperation]) native;
- /** @domName CanvasRenderingContext2D.fill */
+ /// @domName CanvasRenderingContext2D.fill; @docsEditable true
void fill() native;
- /** @domName CanvasRenderingContext2D.fillRect */
+ /// @domName CanvasRenderingContext2D.fillRect; @docsEditable true
void fillRect(num x, num y, num width, num height) native;
- /** @domName CanvasRenderingContext2D.fillText */
+ /// @domName CanvasRenderingContext2D.fillText; @docsEditable true
void fillText(String text, num x, num y, [num maxWidth]) native;
- /** @domName CanvasRenderingContext2D.getImageData */
+ /// @domName CanvasRenderingContext2D.getImageData; @docsEditable true
ImageData getImageData(num sx, num sy, num sw, num sh) {
return _convertNativeToDart_ImageData(_getImageData_1(sx, sy, sw, sh));
}
+ @Creates('ImageData|=Object')
_getImageData_1(sx, sy, sw, sh) native "getImageData";
- /** @domName CanvasRenderingContext2D.getLineDash */
+ /// @domName CanvasRenderingContext2D.getLineDash; @docsEditable true
List<num> getLineDash() native;
- /** @domName CanvasRenderingContext2D.isPointInPath */
+ /// @domName CanvasRenderingContext2D.isPointInPath; @docsEditable true
bool isPointInPath(num x, num y) native;
- /** @domName CanvasRenderingContext2D.lineTo */
+ /// @domName CanvasRenderingContext2D.lineTo; @docsEditable true
void lineTo(num x, num y) native;
- /** @domName CanvasRenderingContext2D.measureText */
+ /// @domName CanvasRenderingContext2D.measureText; @docsEditable true
TextMetrics measureText(String text) native;
- /** @domName CanvasRenderingContext2D.moveTo */
+ /// @domName CanvasRenderingContext2D.moveTo; @docsEditable true
void moveTo(num x, num y) native;
- /** @domName CanvasRenderingContext2D.putImageData */
+ /// @domName CanvasRenderingContext2D.putImageData; @docsEditable true
void putImageData(ImageData imagedata, num dx, num dy, [num dirtyX, num dirtyY, num dirtyWidth, num dirtyHeight]) {
if (!?dirtyX &&
!?dirtyY &&
@@ -4601,78 +4984,79 @@
var imagedata_2 = _convertDartToNative_ImageData(imagedata);
_putImageData_2(imagedata_2, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight);
return;
- throw const Exception("Incorrect number or type of arguments");
+ throw new ArgumentError("Incorrect number or type of arguments");
}
void _putImageData_1(imagedata, dx, dy) native "putImageData";
void _putImageData_2(imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) native "putImageData";
- /** @domName CanvasRenderingContext2D.quadraticCurveTo */
+ /// @domName CanvasRenderingContext2D.quadraticCurveTo; @docsEditable true
void quadraticCurveTo(num cpx, num cpy, num x, num y) native;
- /** @domName CanvasRenderingContext2D.rect */
+ /// @domName CanvasRenderingContext2D.rect; @docsEditable true
void rect(num x, num y, num width, num height) native;
- /** @domName CanvasRenderingContext2D.restore */
+ /// @domName CanvasRenderingContext2D.restore; @docsEditable true
void restore() native;
- /** @domName CanvasRenderingContext2D.rotate */
+ /// @domName CanvasRenderingContext2D.rotate; @docsEditable true
void rotate(num angle) native;
- /** @domName CanvasRenderingContext2D.save */
+ /// @domName CanvasRenderingContext2D.save; @docsEditable true
void save() native;
- /** @domName CanvasRenderingContext2D.scale */
+ /// @domName CanvasRenderingContext2D.scale; @docsEditable true
void scale(num sx, num sy) native;
- /** @domName CanvasRenderingContext2D.setAlpha */
+ /// @domName CanvasRenderingContext2D.setAlpha; @docsEditable true
void setAlpha(num alpha) native;
- /** @domName CanvasRenderingContext2D.setCompositeOperation */
+ /// @domName CanvasRenderingContext2D.setCompositeOperation; @docsEditable true
void setCompositeOperation(String compositeOperation) native;
- /** @domName CanvasRenderingContext2D.setLineCap */
+ /// @domName CanvasRenderingContext2D.setLineCap; @docsEditable true
void setLineCap(String cap) native;
- /** @domName CanvasRenderingContext2D.setLineDash */
+ /// @domName CanvasRenderingContext2D.setLineDash; @docsEditable true
void setLineDash(List<num> dash) native;
- /** @domName CanvasRenderingContext2D.setLineJoin */
+ /// @domName CanvasRenderingContext2D.setLineJoin; @docsEditable true
void setLineJoin(String join) native;
- /** @domName CanvasRenderingContext2D.setLineWidth */
+ /// @domName CanvasRenderingContext2D.setLineWidth; @docsEditable true
void setLineWidth(num width) native;
- /** @domName CanvasRenderingContext2D.setMiterLimit */
+ /// @domName CanvasRenderingContext2D.setMiterLimit; @docsEditable true
void setMiterLimit(num limit) native;
- /** @domName CanvasRenderingContext2D.setShadow */
+ /// @domName CanvasRenderingContext2D.setShadow; @docsEditable true
void setShadow(num width, num height, num blur, [c_OR_color_OR_grayLevel_OR_r, num alpha_OR_g_OR_m, num b_OR_y, num a_OR_k, num a]) native;
- /** @domName CanvasRenderingContext2D.setTransform */
+ /// @domName CanvasRenderingContext2D.setTransform; @docsEditable true
void setTransform(num m11, num m12, num m21, num m22, num dx, num dy) native;
- /** @domName CanvasRenderingContext2D.stroke */
+ /// @domName CanvasRenderingContext2D.stroke; @docsEditable true
void stroke() native;
- /** @domName CanvasRenderingContext2D.strokeRect */
+ /// @domName CanvasRenderingContext2D.strokeRect; @docsEditable true
void strokeRect(num x, num y, num width, num height, [num lineWidth]) native;
- /** @domName CanvasRenderingContext2D.strokeText */
+ /// @domName CanvasRenderingContext2D.strokeText; @docsEditable true
void strokeText(String text, num x, num y, [num maxWidth]) native;
- /** @domName CanvasRenderingContext2D.transform */
+ /// @domName CanvasRenderingContext2D.transform; @docsEditable true
void transform(num m11, num m12, num m21, num m22, num dx, num dy) native;
- /** @domName CanvasRenderingContext2D.translate */
+ /// @domName CanvasRenderingContext2D.translate; @docsEditable true
void translate(num tx, num ty) native;
- /** @domName CanvasRenderingContext2D.webkitGetImageDataHD */
+ /// @domName CanvasRenderingContext2D.webkitGetImageDataHD; @docsEditable true
ImageData webkitGetImageDataHD(num sx, num sy, num sw, num sh) {
return _convertNativeToDart_ImageData(_webkitGetImageDataHD_1(sx, sy, sw, sh));
}
+ @Creates('ImageData|=Object')
_webkitGetImageDataHD_1(sx, sy, sw, sh) native "webkitGetImageDataHD";
- /** @domName CanvasRenderingContext2D.webkitPutImageDataHD */
+ /// @domName CanvasRenderingContext2D.webkitPutImageDataHD; @docsEditable true
void webkitPutImageDataHD(ImageData imagedata, num dx, num dy, [num dirtyX, num dirtyY, num dirtyWidth, num dirtyHeight]) {
if (!?dirtyX &&
!?dirtyY &&
@@ -4685,7 +5069,7 @@
var imagedata_2 = _convertDartToNative_ImageData(imagedata);
_webkitPutImageDataHD_2(imagedata_2, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight);
return;
- throw const Exception("Incorrect number or type of arguments");
+ throw new ArgumentError("Incorrect number or type of arguments");
}
void _webkitPutImageDataHD_1(imagedata, dx, dy) native "webkitPutImageDataHD";
void _webkitPutImageDataHD_2(imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) native "webkitPutImageDataHD";
@@ -4732,7 +5116,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName ChannelMergerNode
+/// @domName ChannelMergerNode; @docsEditable true
class ChannelMergerNode extends AudioNode native "*ChannelMergerNode" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4740,7 +5124,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName ChannelSplitterNode
+/// @domName ChannelSplitterNode; @docsEditable true
class ChannelSplitterNode extends AudioNode native "*ChannelSplitterNode" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4748,31 +5132,31 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName CharacterData
+/// @domName CharacterData; @docsEditable true
class CharacterData extends Node native "*CharacterData" {
- /** @domName CharacterData.data */
+ /// @domName CharacterData.data; @docsEditable true
String data;
- /** @domName CharacterData.length */
+ /// @domName CharacterData.length; @docsEditable true
final int length;
- /** @domName CharacterData.appendData */
+ /// @domName CharacterData.appendData; @docsEditable true
void appendData(String data) native;
- /** @domName CharacterData.deleteData */
+ /// @domName CharacterData.deleteData; @docsEditable true
void deleteData(int offset, int length) native;
- /** @domName CharacterData.insertData */
+ /// @domName CharacterData.insertData; @docsEditable true
void insertData(int offset, String data) native;
- /** @domName CharacterData.remove */
+ /// @domName CharacterData.remove; @docsEditable true
void remove() native;
- /** @domName CharacterData.replaceData */
+ /// @domName CharacterData.replaceData; @docsEditable true
void replaceData(int offset, int length, String data) native;
- /** @domName CharacterData.substringData */
+ /// @domName CharacterData.substringData; @docsEditable true
String substringData(int offset, int length) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4780,25 +5164,25 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName ClientRect
+/// @domName ClientRect; @docsEditable true
class ClientRect native "*ClientRect" {
- /** @domName ClientRect.bottom */
+ /// @domName ClientRect.bottom; @docsEditable true
final num bottom;
- /** @domName ClientRect.height */
+ /// @domName ClientRect.height; @docsEditable true
final num height;
- /** @domName ClientRect.left */
+ /// @domName ClientRect.left; @docsEditable true
final num left;
- /** @domName ClientRect.right */
+ /// @domName ClientRect.right; @docsEditable true
final num right;
- /** @domName ClientRect.top */
+ /// @domName ClientRect.top; @docsEditable true
final num top;
- /** @domName ClientRect.width */
+ /// @domName ClientRect.width; @docsEditable true
final num width;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4806,34 +5190,35 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Clipboard
+/// @domName Clipboard; @docsEditable true
class Clipboard native "*Clipboard" {
- /** @domName Clipboard.dropEffect */
+ /// @domName Clipboard.dropEffect; @docsEditable true
String dropEffect;
- /** @domName Clipboard.effectAllowed */
+ /// @domName Clipboard.effectAllowed; @docsEditable true
String effectAllowed;
- /** @domName Clipboard.files */
+ /// @domName Clipboard.files; @docsEditable true
+ @Returns('_FileList') @Creates('_FileList')
final List<File> files;
- /** @domName Clipboard.items */
+ /// @domName Clipboard.items; @docsEditable true
final DataTransferItemList items;
- /** @domName Clipboard.types */
+ /// @domName Clipboard.types; @docsEditable true
final List types;
- /** @domName Clipboard.clearData */
+ /// @domName Clipboard.clearData; @docsEditable true
void clearData([String type]) native;
- /** @domName Clipboard.getData */
+ /// @domName Clipboard.getData; @docsEditable true
String getData(String type) native;
- /** @domName Clipboard.setData */
+ /// @domName Clipboard.setData; @docsEditable true
bool setData(String type, String data) native;
- /** @domName Clipboard.setDragImage */
+ /// @domName Clipboard.setDragImage; @docsEditable true
void setDragImage(ImageElement image, int x, int y) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4841,16 +5226,16 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName CloseEvent
+/// @domName CloseEvent; @docsEditable true
class CloseEvent extends Event native "*CloseEvent" {
- /** @domName CloseEvent.code */
+ /// @domName CloseEvent.code; @docsEditable true
final int code;
- /** @domName CloseEvent.reason */
+ /// @domName CloseEvent.reason; @docsEditable true
final String reason;
- /** @domName CloseEvent.wasClean */
+ /// @domName CloseEvent.wasClean; @docsEditable true
final bool wasClean;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4858,7 +5243,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Comment
+/// @domName Comment; @docsEditable true
class Comment extends CharacterData native "*Comment" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4866,13 +5251,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName CompositionEvent
+/// @domName CompositionEvent; @docsEditable true
class CompositionEvent extends UIEvent native "*CompositionEvent" {
- /** @domName CompositionEvent.data */
+ /// @domName CompositionEvent.data; @docsEditable true
final String data;
- /** @domName CompositionEvent.initCompositionEvent */
+ /// @domName CompositionEvent.initCompositionEvent; @docsEditable true
void initCompositionEvent(String typeArg, bool canBubbleArg, bool cancelableArg, LocalWindow viewArg, String dataArg) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4884,67 +5269,67 @@
// Console is sometimes a singleton bag-of-properties without a prototype.
native "=(typeof console == 'undefined' ? {} : console)" {
- /** @domName Console.memory */
+ /// @domName Console.memory; @docsEditable true
final MemoryInfo memory;
- /** @domName Console.profiles */
+ /// @domName Console.profiles; @docsEditable true
final List<ScriptProfile> profiles;
- /** @domName Console.assertCondition */
+ /// @domName Console.assertCondition; @docsEditable true
void assertCondition(bool condition, Object arg) native;
- /** @domName Console.count */
+ /// @domName Console.count; @docsEditable true
void count(Object arg) native;
- /** @domName Console.debug */
+ /// @domName Console.debug; @docsEditable true
void debug(Object arg) native;
- /** @domName Console.dir */
+ /// @domName Console.dir; @docsEditable true
void dir(Object arg) native;
- /** @domName Console.dirxml */
+ /// @domName Console.dirxml; @docsEditable true
void dirxml(Object arg) native;
- /** @domName Console.error */
+ /// @domName Console.error; @docsEditable true
void error(Object arg) native;
- /** @domName Console.group */
+ /// @domName Console.group; @docsEditable true
void group(Object arg) native;
- /** @domName Console.groupCollapsed */
+ /// @domName Console.groupCollapsed; @docsEditable true
void groupCollapsed(Object arg) native;
- /** @domName Console.groupEnd */
+ /// @domName Console.groupEnd; @docsEditable true
void groupEnd() native;
- /** @domName Console.info */
+ /// @domName Console.info; @docsEditable true
void info(Object arg) native;
- /** @domName Console.log */
+ /// @domName Console.log; @docsEditable true
void log(Object arg) native;
- /** @domName Console.markTimeline */
+ /// @domName Console.markTimeline; @docsEditable true
void markTimeline(Object arg) native;
- /** @domName Console.profile */
+ /// @domName Console.profile; @docsEditable true
void profile(String title) native;
- /** @domName Console.profileEnd */
+ /// @domName Console.profileEnd; @docsEditable true
void profileEnd(String title) native;
- /** @domName Console.time */
+ /// @domName Console.time; @docsEditable true
void time(String title) native;
- /** @domName Console.timeEnd */
+ /// @domName Console.timeEnd; @docsEditable true
void timeEnd(String title, Object arg) native;
- /** @domName Console.timeStamp */
+ /// @domName Console.timeStamp; @docsEditable true
void timeStamp(Object arg) native;
- /** @domName Console.trace */
+ /// @domName Console.trace; @docsEditable true
void trace(Object arg) native;
- /** @domName Console.warn */
+ /// @domName Console.warn; @docsEditable true
void warn(Object arg) native;
}
@@ -4953,18 +5338,19 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLContentElement
+/// @domName HTMLContentElement; @docsEditable true
class ContentElement extends Element implements Element native "*HTMLContentElement" {
- factory ContentElement() => _Elements.createContentElement();
+ factory ContentElement() => document.$dom_createElement("content");
- /** @domName HTMLContentElement.resetStyleInheritance */
+ /// @domName HTMLContentElement.resetStyleInheritance; @docsEditable true
bool resetStyleInheritance;
- /** @domName HTMLContentElement.select */
+ /// @domName HTMLContentElement.select; @docsEditable true
String select;
- /** @domName HTMLContentElement.getDistributedNodes */
+ /// @domName HTMLContentElement.getDistributedNodes; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
List<Node> getDistributedNodes() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4972,13 +5358,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName ConvolverNode
+/// @domName ConvolverNode; @docsEditable true
class ConvolverNode extends AudioNode native "*ConvolverNode" {
- /** @domName ConvolverNode.buffer */
+ /// @domName ConvolverNode.buffer; @docsEditable true
AudioBuffer buffer;
- /** @domName ConvolverNode.normalize */
+ /// @domName ConvolverNode.normalize; @docsEditable true
bool normalize;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4986,28 +5372,28 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Coordinates
+/// @domName Coordinates; @docsEditable true
class Coordinates native "*Coordinates" {
- /** @domName Coordinates.accuracy */
+ /// @domName Coordinates.accuracy; @docsEditable true
final num accuracy;
- /** @domName Coordinates.altitude */
+ /// @domName Coordinates.altitude; @docsEditable true
final num altitude;
- /** @domName Coordinates.altitudeAccuracy */
+ /// @domName Coordinates.altitudeAccuracy; @docsEditable true
final num altitudeAccuracy;
- /** @domName Coordinates.heading */
+ /// @domName Coordinates.heading; @docsEditable true
final num heading;
- /** @domName Coordinates.latitude */
+ /// @domName Coordinates.latitude; @docsEditable true
final num latitude;
- /** @domName Coordinates.longitude */
+ /// @domName Coordinates.longitude; @docsEditable true
final num longitude;
- /** @domName Coordinates.speed */
+ /// @domName Coordinates.speed; @docsEditable true
final num speed;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5015,16 +5401,16 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Counter
+/// @domName Counter; @docsEditable true
class Counter native "*Counter" {
- /** @domName Counter.identifier */
+ /// @domName Counter.identifier; @docsEditable true
final String identifier;
- /** @domName Counter.listStyle */
+ /// @domName Counter.listStyle; @docsEditable true
final String listStyle;
- /** @domName Counter.separator */
+ /// @domName Counter.separator; @docsEditable true
final String separator;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5032,10 +5418,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Crypto
+/// @domName Crypto; @docsEditable true
class Crypto native "*Crypto" {
- /** @domName Crypto.getRandomValues */
+ /// @domName Crypto.getRandomValues; @docsEditable true
void getRandomValues(ArrayBufferView array) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5050,10 +5436,10 @@
Object detail]) => _CustomEventFactoryProvider.createCustomEvent(
type, canBubble, cancelable, detail);
- /** @domName CustomEvent.detail */
+ /// @domName CustomEvent.detail; @docsEditable true
final Object detail;
- /** @domName CustomEvent.initCustomEvent */
+ /// @domName CustomEvent.initCustomEvent; @docsEditable true
void $dom_initCustomEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Object detailArg) native "initCustomEvent";
}
@@ -5062,12 +5448,12 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLDListElement
+/// @domName HTMLDListElement; @docsEditable true
class DListElement extends Element implements Element native "*HTMLDListElement" {
- factory DListElement() => _Elements.createDListElement();
+ factory DListElement() => document.$dom_createElement("dl");
- /** @domName HTMLDListElement.compact */
+ /// @domName HTMLDListElement.compact; @docsEditable true
bool compact;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5075,12 +5461,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DOMApplicationCache
+/// @domName DOMApplicationCache; @docsEditable true
class DOMApplicationCache extends EventTarget native "*DOMApplicationCache" {
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
DOMApplicationCacheEvents get on =>
new DOMApplicationCacheEvents(this);
@@ -5096,25 +5480,25 @@
static const int UPDATEREADY = 4;
- /** @domName DOMApplicationCache.status */
+ /// @domName DOMApplicationCache.status; @docsEditable true
final int status;
- /** @domName DOMApplicationCache.abort */
+ /// @domName DOMApplicationCache.abort; @docsEditable true
void abort() native;
- /** @domName DOMApplicationCache.addEventListener */
+ /// @domName DOMApplicationCache.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName DOMApplicationCache.dispatchEvent */
+ /// @domName DOMApplicationCache.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event evt) native "dispatchEvent";
- /** @domName DOMApplicationCache.removeEventListener */
+ /// @domName DOMApplicationCache.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
- /** @domName DOMApplicationCache.swapCache */
+ /// @domName DOMApplicationCache.swapCache; @docsEditable true
void swapCache() native;
- /** @domName DOMApplicationCache.update */
+ /// @domName DOMApplicationCache.update; @docsEditable true
void update() native;
}
@@ -5142,10 +5526,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DOMError
+/// @domName DOMError; @docsEditable true
class DOMError native "*DOMError" {
- /** @domName DOMError.name */
+ /// @domName DOMError.name; @docsEditable true
final String name;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5153,7 +5537,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DOMException
+/// @domName DOMException; @docsEditable true
class DOMException native "*DOMException" {
static const int ABORT_ERR = 20;
@@ -5206,16 +5590,16 @@
static const int WRONG_DOCUMENT_ERR = 4;
- /** @domName DOMException.code */
+ /// @domName DOMException.code; @docsEditable true
final int code;
- /** @domName DOMException.message */
+ /// @domName DOMException.message; @docsEditable true
final String message;
- /** @domName DOMException.name */
+ /// @domName DOMException.name; @docsEditable true
final String name;
- /** @domName DOMException.toString */
+ /// @domName DOMException.toString; @docsEditable true
String toString() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5223,13 +5607,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DOMFileSystem
+/// @domName DOMFileSystem; @docsEditable true
class DOMFileSystem native "*DOMFileSystem" {
- /** @domName DOMFileSystem.name */
+ /// @domName DOMFileSystem.name; @docsEditable true
final String name;
- /** @domName DOMFileSystem.root */
+ /// @domName DOMFileSystem.root; @docsEditable true
final DirectoryEntry root;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5237,13 +5621,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DOMFileSystemSync
+/// @domName DOMFileSystemSync; @docsEditable true
class DOMFileSystemSync native "*DOMFileSystemSync" {
- /** @domName DOMFileSystemSync.name */
+ /// @domName DOMFileSystemSync.name; @docsEditable true
final String name;
- /** @domName DOMFileSystemSync.root */
+ /// @domName DOMFileSystemSync.root; @docsEditable true
final DirectoryEntrySync root;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5251,22 +5635,22 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DOMImplementation
+/// @domName DOMImplementation; @docsEditable true
class DOMImplementation native "*DOMImplementation" {
- /** @domName DOMImplementation.createCSSStyleSheet */
+ /// @domName DOMImplementation.createCSSStyleSheet; @docsEditable true
CSSStyleSheet createCSSStyleSheet(String title, String media) native;
- /** @domName DOMImplementation.createDocument */
+ /// @domName DOMImplementation.createDocument; @docsEditable true
Document createDocument(String namespaceURI, String qualifiedName, DocumentType doctype) native;
- /** @domName DOMImplementation.createDocumentType */
+ /// @domName DOMImplementation.createDocumentType; @docsEditable true
DocumentType createDocumentType(String qualifiedName, String publicId, String systemId) native;
- /** @domName DOMImplementation.createHTMLDocument */
+ /// @domName DOMImplementation.createHTMLDocument; @docsEditable true
HtmlDocument createHTMLDocument(String title) native;
- /** @domName DOMImplementation.hasFeature */
+ /// @domName DOMImplementation.hasFeature; @docsEditable true
bool hasFeature(String feature, String version) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5274,19 +5658,19 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MimeType
+/// @domName MimeType; @docsEditable true
class DOMMimeType native "*MimeType" {
- /** @domName MimeType.description */
+ /// @domName MimeType.description; @docsEditable true
final String description;
- /** @domName MimeType.enabledPlugin */
+ /// @domName MimeType.enabledPlugin; @docsEditable true
final DOMPlugin enabledPlugin;
- /** @domName MimeType.suffixes */
+ /// @domName MimeType.suffixes; @docsEditable true
final String suffixes;
- /** @domName MimeType.type */
+ /// @domName MimeType.type; @docsEditable true
final String type;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5294,10 +5678,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MimeTypeArray
+/// @domName MimeTypeArray; @docsEditable true
class DOMMimeTypeArray implements JavaScriptIndexingBehavior, List<DOMMimeType> native "*MimeTypeArray" {
- /** @domName MimeTypeArray.length */
+ /// @domName MimeTypeArray.length; @docsEditable true
final int length;
DOMMimeType operator[](int index) => JS("DOMMimeType", "#[#]", this, index);
@@ -5360,6 +5744,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ DOMMimeType get first => this[0];
+
DOMMimeType get last => this[length - 1];
DOMMimeType removeLast() {
@@ -5383,10 +5769,10 @@
// -- end List<DOMMimeType> mixins.
- /** @domName MimeTypeArray.item */
+ /// @domName MimeTypeArray.item; @docsEditable true
DOMMimeType item(int index) native;
- /** @domName MimeTypeArray.namedItem */
+ /// @domName MimeTypeArray.namedItem; @docsEditable true
DOMMimeType namedItem(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5394,12 +5780,12 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DOMParser
+/// @domName DOMParser; @docsEditable true
class DOMParser native "*DOMParser" {
factory DOMParser() => _DOMParserFactoryProvider.createDOMParser();
- /** @domName DOMParser.parseFromString */
+ /// @domName DOMParser.parseFromString; @docsEditable true
Document parseFromString(String str, String contentType) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5407,25 +5793,25 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Plugin
+/// @domName Plugin; @docsEditable true
class DOMPlugin native "*Plugin" {
- /** @domName Plugin.description */
+ /// @domName Plugin.description; @docsEditable true
final String description;
- /** @domName Plugin.filename */
+ /// @domName Plugin.filename; @docsEditable true
final String filename;
- /** @domName Plugin.length */
+ /// @domName Plugin.length; @docsEditable true
final int length;
- /** @domName Plugin.name */
+ /// @domName Plugin.name; @docsEditable true
final String name;
- /** @domName Plugin.item */
+ /// @domName Plugin.item; @docsEditable true
DOMMimeType item(int index) native;
- /** @domName Plugin.namedItem */
+ /// @domName Plugin.namedItem; @docsEditable true
DOMMimeType namedItem(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5433,10 +5819,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName PluginArray
+/// @domName PluginArray; @docsEditable true
class DOMPluginArray implements JavaScriptIndexingBehavior, List<DOMPlugin> native "*PluginArray" {
- /** @domName PluginArray.length */
+ /// @domName PluginArray.length; @docsEditable true
final int length;
DOMPlugin operator[](int index) => JS("DOMPlugin", "#[#]", this, index);
@@ -5499,6 +5885,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ DOMPlugin get first => this[0];
+
DOMPlugin get last => this[length - 1];
DOMPlugin removeLast() {
@@ -5522,13 +5910,13 @@
// -- end List<DOMPlugin> mixins.
- /** @domName PluginArray.item */
+ /// @domName PluginArray.item; @docsEditable true
DOMPlugin item(int index) native;
- /** @domName PluginArray.namedItem */
+ /// @domName PluginArray.namedItem; @docsEditable true
DOMPlugin namedItem(String name) native;
- /** @domName PluginArray.refresh */
+ /// @domName PluginArray.refresh; @docsEditable true
void refresh(bool reload) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5536,85 +5924,85 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Selection
+/// @domName Selection; @docsEditable true
class DOMSelection native "*Selection" {
- /** @domName Selection.anchorNode */
+ /// @domName Selection.anchorNode; @docsEditable true
final Node anchorNode;
- /** @domName Selection.anchorOffset */
+ /// @domName Selection.anchorOffset; @docsEditable true
final int anchorOffset;
- /** @domName Selection.baseNode */
+ /// @domName Selection.baseNode; @docsEditable true
final Node baseNode;
- /** @domName Selection.baseOffset */
+ /// @domName Selection.baseOffset; @docsEditable true
final int baseOffset;
- /** @domName Selection.extentNode */
+ /// @domName Selection.extentNode; @docsEditable true
final Node extentNode;
- /** @domName Selection.extentOffset */
+ /// @domName Selection.extentOffset; @docsEditable true
final int extentOffset;
- /** @domName Selection.focusNode */
+ /// @domName Selection.focusNode; @docsEditable true
final Node focusNode;
- /** @domName Selection.focusOffset */
+ /// @domName Selection.focusOffset; @docsEditable true
final int focusOffset;
- /** @domName Selection.isCollapsed */
+ /// @domName Selection.isCollapsed; @docsEditable true
final bool isCollapsed;
- /** @domName Selection.rangeCount */
+ /// @domName Selection.rangeCount; @docsEditable true
final int rangeCount;
- /** @domName Selection.type */
+ /// @domName Selection.type; @docsEditable true
final String type;
- /** @domName Selection.addRange */
+ /// @domName Selection.addRange; @docsEditable true
void addRange(Range range) native;
- /** @domName Selection.collapse */
+ /// @domName Selection.collapse; @docsEditable true
void collapse(Node node, int index) native;
- /** @domName Selection.collapseToEnd */
+ /// @domName Selection.collapseToEnd; @docsEditable true
void collapseToEnd() native;
- /** @domName Selection.collapseToStart */
+ /// @domName Selection.collapseToStart; @docsEditable true
void collapseToStart() native;
- /** @domName Selection.containsNode */
+ /// @domName Selection.containsNode; @docsEditable true
bool containsNode(Node node, bool allowPartial) native;
- /** @domName Selection.deleteFromDocument */
+ /// @domName Selection.deleteFromDocument; @docsEditable true
void deleteFromDocument() native;
- /** @domName Selection.empty */
+ /// @domName Selection.empty; @docsEditable true
void empty() native;
- /** @domName Selection.extend */
+ /// @domName Selection.extend; @docsEditable true
void extend(Node node, int offset) native;
- /** @domName Selection.getRangeAt */
+ /// @domName Selection.getRangeAt; @docsEditable true
Range getRangeAt(int index) native;
- /** @domName Selection.modify */
+ /// @domName Selection.modify; @docsEditable true
void modify(String alter, String direction, String granularity) native;
- /** @domName Selection.removeAllRanges */
+ /// @domName Selection.removeAllRanges; @docsEditable true
void removeAllRanges() native;
- /** @domName Selection.selectAllChildren */
+ /// @domName Selection.selectAllChildren; @docsEditable true
void selectAllChildren(Node node) native;
- /** @domName Selection.setBaseAndExtent */
+ /// @domName Selection.setBaseAndExtent; @docsEditable true
void setBaseAndExtent(Node baseNode, int baseOffset, Node extentNode, int extentOffset) native;
- /** @domName Selection.setPosition */
+ /// @domName Selection.setPosition; @docsEditable true
void setPosition(Node node, int offset) native;
- /** @domName Selection.toString */
+ /// @domName Selection.toString; @docsEditable true
String toString() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5622,10 +6010,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DOMSettableTokenList
+/// @domName DOMSettableTokenList; @docsEditable true
class DOMSettableTokenList extends DOMTokenList native "*DOMSettableTokenList" {
- /** @domName DOMSettableTokenList.value */
+ /// @domName DOMSettableTokenList.value; @docsEditable true
String value;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5641,22 +6029,22 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DOMTokenList
+/// @domName DOMTokenList; @docsEditable true
class DOMTokenList native "*DOMTokenList" {
- /** @domName DOMTokenList.length */
+ /// @domName DOMTokenList.length; @docsEditable true
final int length;
- /** @domName DOMTokenList.contains */
+ /// @domName DOMTokenList.contains; @docsEditable true
bool contains(String token) native;
- /** @domName DOMTokenList.item */
+ /// @domName DOMTokenList.item; @docsEditable true
String item(int index) native;
- /** @domName DOMTokenList.toString */
+ /// @domName DOMTokenList.toString; @docsEditable true
String toString() native;
- /** @domName DOMTokenList.toggle */
+ /// @domName DOMTokenList.toggle; @docsEditable true
bool toggle(String token, [bool force]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5664,12 +6052,12 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLDataListElement
+/// @domName HTMLDataListElement; @docsEditable true
class DataListElement extends Element implements Element native "*HTMLDataListElement" {
- factory DataListElement() => _Elements.createDataListElement();
+ factory DataListElement() => document.$dom_createElement("datalist");
- /** @domName HTMLDataListElement.options */
+ /// @domName HTMLDataListElement.options; @docsEditable true
final HTMLCollection options;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5677,22 +6065,22 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DataTransferItem
+/// @domName DataTransferItem; @docsEditable true
class DataTransferItem native "*DataTransferItem" {
- /** @domName DataTransferItem.kind */
+ /// @domName DataTransferItem.kind; @docsEditable true
final String kind;
- /** @domName DataTransferItem.type */
+ /// @domName DataTransferItem.type; @docsEditable true
final String type;
- /** @domName DataTransferItem.getAsFile */
+ /// @domName DataTransferItem.getAsFile; @docsEditable true
Blob getAsFile() native;
- /** @domName DataTransferItem.getAsString */
+ /// @domName DataTransferItem.getAsString; @docsEditable true
void getAsString([StringCallback callback]) native;
- /** @domName DataTransferItem.webkitGetAsEntry */
+ /// @domName DataTransferItem.webkitGetAsEntry; @docsEditable true
Entry webkitGetAsEntry() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5700,19 +6088,19 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DataTransferItemList
+/// @domName DataTransferItemList; @docsEditable true
class DataTransferItemList native "*DataTransferItemList" {
- /** @domName DataTransferItemList.length */
+ /// @domName DataTransferItemList.length; @docsEditable true
final int length;
- /** @domName DataTransferItemList.add */
+ /// @domName DataTransferItemList.add; @docsEditable true
void add(data_OR_file, [String type]) native;
- /** @domName DataTransferItemList.clear */
+ /// @domName DataTransferItemList.clear; @docsEditable true
void clear() native;
- /** @domName DataTransferItemList.item */
+ /// @domName DataTransferItemList.item; @docsEditable true
DataTransferItem item(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5720,7 +6108,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DataView
+/// @domName DataView; @docsEditable true
class DataView extends ArrayBufferView native "*DataView" {
factory DataView(ArrayBuffer buffer, [int byteOffset, int byteLength]) {
@@ -5733,52 +6121,52 @@
return _DataViewFactoryProvider.createDataView(buffer, byteOffset, byteLength);
}
- /** @domName DataView.getFloat32 */
+ /// @domName DataView.getFloat32; @docsEditable true
num getFloat32(int byteOffset, {bool littleEndian}) native;
- /** @domName DataView.getFloat64 */
+ /// @domName DataView.getFloat64; @docsEditable true
num getFloat64(int byteOffset, {bool littleEndian}) native;
- /** @domName DataView.getInt16 */
+ /// @domName DataView.getInt16; @docsEditable true
int getInt16(int byteOffset, {bool littleEndian}) native;
- /** @domName DataView.getInt32 */
+ /// @domName DataView.getInt32; @docsEditable true
int getInt32(int byteOffset, {bool littleEndian}) native;
- /** @domName DataView.getInt8 */
+ /// @domName DataView.getInt8; @docsEditable true
int getInt8(int byteOffset) native;
- /** @domName DataView.getUint16 */
+ /// @domName DataView.getUint16; @docsEditable true
int getUint16(int byteOffset, {bool littleEndian}) native;
- /** @domName DataView.getUint32 */
+ /// @domName DataView.getUint32; @docsEditable true
int getUint32(int byteOffset, {bool littleEndian}) native;
- /** @domName DataView.getUint8 */
+ /// @domName DataView.getUint8; @docsEditable true
int getUint8(int byteOffset) native;
- /** @domName DataView.setFloat32 */
+ /// @domName DataView.setFloat32; @docsEditable true
void setFloat32(int byteOffset, num value, {bool littleEndian}) native;
- /** @domName DataView.setFloat64 */
+ /// @domName DataView.setFloat64; @docsEditable true
void setFloat64(int byteOffset, num value, {bool littleEndian}) native;
- /** @domName DataView.setInt16 */
+ /// @domName DataView.setInt16; @docsEditable true
void setInt16(int byteOffset, int value, {bool littleEndian}) native;
- /** @domName DataView.setInt32 */
+ /// @domName DataView.setInt32; @docsEditable true
void setInt32(int byteOffset, int value, {bool littleEndian}) native;
- /** @domName DataView.setInt8 */
+ /// @domName DataView.setInt8; @docsEditable true
void setInt8(int byteOffset, int value) native;
- /** @domName DataView.setUint16 */
+ /// @domName DataView.setUint16; @docsEditable true
void setUint16(int byteOffset, int value, {bool littleEndian}) native;
- /** @domName DataView.setUint32 */
+ /// @domName DataView.setUint32; @docsEditable true
void setUint32(int byteOffset, int value, {bool littleEndian}) native;
- /** @domName DataView.setUint8 */
+ /// @domName DataView.setUint8; @docsEditable true
void setUint8(int byteOffset, int value) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5786,19 +6174,19 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Database
+/// @domName Database; @docsEditable true
class Database native "*Database" {
- /** @domName Database.version */
+ /// @domName Database.version; @docsEditable true
final String version;
- /** @domName Database.changeVersion */
+ /// @domName Database.changeVersion; @docsEditable true
void changeVersion(String oldVersion, String newVersion, [SQLTransactionCallback callback, SQLTransactionErrorCallback errorCallback, VoidCallback successCallback]) native;
- /** @domName Database.readTransaction */
+ /// @domName Database.readTransaction; @docsEditable true
void readTransaction(SQLTransactionCallback callback, [SQLTransactionErrorCallback errorCallback, VoidCallback successCallback]) native;
- /** @domName Database.transaction */
+ /// @domName Database.transaction; @docsEditable true
void transaction(SQLTransactionCallback callback, [SQLTransactionErrorCallback errorCallback, VoidCallback successCallback]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5814,22 +6202,22 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DatabaseSync
+/// @domName DatabaseSync; @docsEditable true
class DatabaseSync native "*DatabaseSync" {
- /** @domName DatabaseSync.lastErrorMessage */
+ /// @domName DatabaseSync.lastErrorMessage; @docsEditable true
final String lastErrorMessage;
- /** @domName DatabaseSync.version */
+ /// @domName DatabaseSync.version; @docsEditable true
final String version;
- /** @domName DatabaseSync.changeVersion */
+ /// @domName DatabaseSync.changeVersion; @docsEditable true
void changeVersion(String oldVersion, String newVersion, [SQLTransactionSyncCallback callback]) native;
- /** @domName DatabaseSync.readTransaction */
+ /// @domName DatabaseSync.readTransaction; @docsEditable true
void readTransaction(SQLTransactionSyncCallback callback) native;
- /** @domName DatabaseSync.transaction */
+ /// @domName DatabaseSync.transaction; @docsEditable true
void transaction(SQLTransactionSyncCallback callback) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5837,16 +6225,14 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DedicatedWorkerContext
+/// @domName DedicatedWorkerContext; @docsEditable true
class DedicatedWorkerContext extends WorkerContext native "*DedicatedWorkerContext" {
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
DedicatedWorkerContextEvents get on =>
new DedicatedWorkerContextEvents(this);
- /** @domName DedicatedWorkerContext.postMessage */
+ /// @domName DedicatedWorkerContext.postMessage; @docsEditable true
void postMessage(/*any*/ message, [List messagePorts]) {
if (?messagePorts) {
var message_1 = _convertDartToNative_SerializedScriptValue(message);
@@ -5871,10 +6257,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DelayNode
+/// @domName DelayNode; @docsEditable true
class DelayNode extends AudioNode native "*DelayNode" {
- /** @domName DelayNode.delayTime */
+ /// @domName DelayNode.delayTime; @docsEditable true
final AudioParam delayTime;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5882,12 +6268,12 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLDetailsElement
+/// @domName HTMLDetailsElement; @docsEditable true
class DetailsElement extends Element implements Element native "*HTMLDetailsElement" {
- factory DetailsElement() => _Elements.createDetailsElement();
+ factory DetailsElement() => document.$dom_createElement("details");
- /** @domName HTMLDetailsElement.open */
+ /// @domName HTMLDetailsElement.open; @docsEditable true
bool open;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5895,10 +6281,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DeviceMotionEvent
+/// @domName DeviceMotionEvent; @docsEditable true
class DeviceMotionEvent extends Event native "*DeviceMotionEvent" {
- /** @domName DeviceMotionEvent.interval */
+ /// @domName DeviceMotionEvent.interval; @docsEditable true
final num interval;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5906,22 +6292,22 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DeviceOrientationEvent
+/// @domName DeviceOrientationEvent; @docsEditable true
class DeviceOrientationEvent extends Event native "*DeviceOrientationEvent" {
- /** @domName DeviceOrientationEvent.absolute */
+ /// @domName DeviceOrientationEvent.absolute; @docsEditable true
final bool absolute;
- /** @domName DeviceOrientationEvent.alpha */
+ /// @domName DeviceOrientationEvent.alpha; @docsEditable true
final num alpha;
- /** @domName DeviceOrientationEvent.beta */
+ /// @domName DeviceOrientationEvent.beta; @docsEditable true
final num beta;
- /** @domName DeviceOrientationEvent.gamma */
+ /// @domName DeviceOrientationEvent.gamma; @docsEditable true
final num gamma;
- /** @domName DeviceOrientationEvent.initDeviceOrientationEvent */
+ /// @domName DeviceOrientationEvent.initDeviceOrientationEvent; @docsEditable true
void initDeviceOrientationEvent(String type, bool bubbles, bool cancelable, num alpha, num beta, num gamma, bool absolute) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5929,10 +6315,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLDirectoryElement
+/// @domName HTMLDirectoryElement; @docsEditable true
class DirectoryElement extends Element implements Element native "*HTMLDirectoryElement" {
- /** @domName HTMLDirectoryElement.compact */
+ /// @domName HTMLDirectoryElement.compact; @docsEditable true
bool compact;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5940,13 +6326,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DirectoryEntry
+/// @domName DirectoryEntry; @docsEditable true
class DirectoryEntry extends Entry native "*DirectoryEntry" {
- /** @domName DirectoryEntry.createReader */
+ /// @domName DirectoryEntry.createReader; @docsEditable true
DirectoryReader createReader() native;
- /** @domName DirectoryEntry.getDirectory */
+ /// @domName DirectoryEntry.getDirectory; @docsEditable true
void getDirectory(String path, {Map options, EntryCallback successCallback, ErrorCallback errorCallback}) {
if (?errorCallback) {
var options_1 = _convertDartToNative_Dictionary(options);
@@ -5971,7 +6357,7 @@
void _getDirectory_3(path, options) native "getDirectory";
void _getDirectory_4(path) native "getDirectory";
- /** @domName DirectoryEntry.getFile */
+ /// @domName DirectoryEntry.getFile; @docsEditable true
void getFile(String path, {Map options, EntryCallback successCallback, ErrorCallback errorCallback}) {
if (?errorCallback) {
var options_1 = _convertDartToNative_Dictionary(options);
@@ -5996,7 +6382,7 @@
void _getFile_3(path, options) native "getFile";
void _getFile_4(path) native "getFile";
- /** @domName DirectoryEntry.removeRecursively */
+ /// @domName DirectoryEntry.removeRecursively; @docsEditable true
void removeRecursively(VoidCallback successCallback, [ErrorCallback errorCallback]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -6004,27 +6390,27 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DirectoryEntrySync
+/// @domName DirectoryEntrySync; @docsEditable true
class DirectoryEntrySync extends EntrySync native "*DirectoryEntrySync" {
- /** @domName DirectoryEntrySync.createReader */
+ /// @domName DirectoryEntrySync.createReader; @docsEditable true
DirectoryReaderSync createReader() native;
- /** @domName DirectoryEntrySync.getDirectory */
+ /// @domName DirectoryEntrySync.getDirectory; @docsEditable true
DirectoryEntrySync getDirectory(String path, Map flags) {
var flags_1 = _convertDartToNative_Dictionary(flags);
return _getDirectory_1(path, flags_1);
}
DirectoryEntrySync _getDirectory_1(path, flags) native "getDirectory";
- /** @domName DirectoryEntrySync.getFile */
+ /// @domName DirectoryEntrySync.getFile; @docsEditable true
FileEntrySync getFile(String path, Map flags) {
var flags_1 = _convertDartToNative_Dictionary(flags);
return _getFile_1(path, flags_1);
}
FileEntrySync _getFile_1(path, flags) native "getFile";
- /** @domName DirectoryEntrySync.removeRecursively */
+ /// @domName DirectoryEntrySync.removeRecursively; @docsEditable true
void removeRecursively() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -6032,10 +6418,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DirectoryReader
+/// @domName DirectoryReader; @docsEditable true
class DirectoryReader native "*DirectoryReader" {
- /** @domName DirectoryReader.readEntries */
+ /// @domName DirectoryReader.readEntries; @docsEditable true
void readEntries(EntriesCallback successCallback, [ErrorCallback errorCallback]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -6043,10 +6429,11 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DirectoryReaderSync
+/// @domName DirectoryReaderSync; @docsEditable true
class DirectoryReaderSync native "*DirectoryReaderSync" {
- /** @domName DirectoryReaderSync.readEntries */
+ /// @domName DirectoryReaderSync.readEntries; @docsEditable true
+ @Returns('_EntryArraySync') @Creates('_EntryArraySync')
List<EntrySync> readEntries() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -6054,10 +6441,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLDivElement
+/// @domName HTMLDivElement; @docsEditable true
class DivElement extends Element implements Element native "*HTMLDivElement" {
- factory DivElement() => _Elements.createDivElement();
+ factory DivElement() => document.$dom_createElement("div");
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
@@ -6068,169 +6455,171 @@
{
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
DocumentEvents get on =>
new DocumentEvents(this);
- /** @domName Document.body */
+ /// @domName Document.body; @docsEditable true
Element get $dom_body => JS("Element", "#.body", this);
- /** @domName Document.body */
+ /// @domName Document.body; @docsEditable true
void set $dom_body(Element value) {
JS("void", "#.body = #", this, value);
}
- /** @domName Document.charset */
+ /// @domName Document.charset; @docsEditable true
String charset;
- /** @domName Document.cookie */
+ /// @domName Document.cookie; @docsEditable true
String cookie;
- /** @domName Document.defaultView */
+ /// @domName Document.defaultView; @docsEditable true
Window get window => _convertNativeToDart_Window(this._window);
dynamic get _window => JS("dynamic", "#.defaultView", this);
- /** @domName Document.documentElement */
+ /// @domName Document.documentElement; @docsEditable true
final Element documentElement;
- /** @domName Document.domain */
+ /// @domName Document.domain; @docsEditable true
final String domain;
- /** @domName Document.head */
+ /// @domName Document.head; @docsEditable true
HeadElement get $dom_head => JS("HeadElement", "#.head", this);
- /** @domName Document.implementation */
+ /// @domName Document.implementation; @docsEditable true
final DOMImplementation implementation;
- /** @domName Document.lastModified */
+ /// @domName Document.lastModified; @docsEditable true
String get $dom_lastModified => JS("String", "#.lastModified", this);
- /** @domName Document.preferredStylesheetSet */
+ /// @domName Document.preferredStylesheetSet; @docsEditable true
final String preferredStylesheetSet;
- /** @domName Document.readyState */
+ /// @domName Document.readyState; @docsEditable true
final String readyState;
- /** @domName Document.referrer */
+ /// @domName Document.referrer; @docsEditable true
String get $dom_referrer => JS("String", "#.referrer", this);
- /** @domName Document.selectedStylesheetSet */
+ /// @domName Document.selectedStylesheetSet; @docsEditable true
String selectedStylesheetSet;
- /** @domName Document.styleSheets */
- List<StyleSheet> get $dom_styleSheets => JS("List<StyleSheet>", "#.styleSheets", this);
+ /// @domName Document.styleSheets; @docsEditable true
+ List<StyleSheet> get $dom_styleSheets => JS("_StyleSheetList", "#.styleSheets", this);
- /** @domName Document.title */
+ /// @domName Document.title; @docsEditable true
String get $dom_title => JS("String", "#.title", this);
- /** @domName Document.title */
+ /// @domName Document.title; @docsEditable true
void set $dom_title(String value) {
JS("void", "#.title = #", this, value);
}
- /** @domName Document.webkitFullscreenElement */
+ /// @domName Document.webkitFullscreenElement; @docsEditable true
Element get $dom_webkitFullscreenElement => JS("Element", "#.webkitFullscreenElement", this);
- /** @domName Document.webkitFullscreenEnabled */
+ /// @domName Document.webkitFullscreenEnabled; @docsEditable true
bool get $dom_webkitFullscreenEnabled => JS("bool", "#.webkitFullscreenEnabled", this);
- /** @domName Document.webkitHidden */
+ /// @domName Document.webkitHidden; @docsEditable true
bool get $dom_webkitHidden => JS("bool", "#.webkitHidden", this);
- /** @domName Document.webkitIsFullScreen */
+ /// @domName Document.webkitIsFullScreen; @docsEditable true
bool get $dom_webkitIsFullScreen => JS("bool", "#.webkitIsFullScreen", this);
- /** @domName Document.webkitPointerLockElement */
+ /// @domName Document.webkitPointerLockElement; @docsEditable true
Element get $dom_webkitPointerLockElement => JS("Element", "#.webkitPointerLockElement", this);
- /** @domName Document.webkitVisibilityState */
+ /// @domName Document.webkitVisibilityState; @docsEditable true
String get $dom_webkitVisibilityState => JS("String", "#.webkitVisibilityState", this);
- /** @domName Document.caretRangeFromPoint */
+ /// @domName Document.caretRangeFromPoint; @docsEditable true
Range $dom_caretRangeFromPoint(int x, int y) native "caretRangeFromPoint";
- /** @domName Document.createCDATASection */
+ /// @domName Document.createCDATASection; @docsEditable true
CDATASection createCDATASection(String data) native;
- /** @domName Document.createDocumentFragment */
+ /// @domName Document.createDocumentFragment; @docsEditable true
DocumentFragment createDocumentFragment() native;
- /** @domName Document.createElement */
+ /// @domName Document.createElement; @docsEditable true
Element $dom_createElement(String tagName) native "createElement";
- /** @domName Document.createElementNS */
+ /// @domName Document.createElementNS; @docsEditable true
Element $dom_createElementNS(String namespaceURI, String qualifiedName) native "createElementNS";
- /** @domName Document.createEvent */
+ /// @domName Document.createEvent; @docsEditable true
Event $dom_createEvent(String eventType) native "createEvent";
- /** @domName Document.createRange */
+ /// @domName Document.createRange; @docsEditable true
Range createRange() native;
- /** @domName Document.createTextNode */
+ /// @domName Document.createTextNode; @docsEditable true
Text $dom_createTextNode(String data) native "createTextNode";
- /** @domName Document.createTouch */
+ /// @domName Document.createTouch; @docsEditable true
Touch createTouch(LocalWindow window, EventTarget target, int identifier, int pageX, int pageY, int screenX, int screenY, int webkitRadiusX, int webkitRadiusY, num webkitRotationAngle, num webkitForce) {
var target_1 = _convertDartToNative_EventTarget(target);
return _createTouch_1(window, target_1, identifier, pageX, pageY, screenX, screenY, webkitRadiusX, webkitRadiusY, webkitRotationAngle, webkitForce);
}
Touch _createTouch_1(LocalWindow window, target, identifier, pageX, pageY, screenX, screenY, webkitRadiusX, webkitRadiusY, webkitRotationAngle, webkitForce) native "createTouch";
- /** @domName Document.createTouchList */
+ /// @domName Document.createTouchList; @docsEditable true
TouchList $dom_createTouchList() native "createTouchList";
- /** @domName Document.elementFromPoint */
+ /// @domName Document.elementFromPoint; @docsEditable true
Element $dom_elementFromPoint(int x, int y) native "elementFromPoint";
- /** @domName Document.execCommand */
+ /// @domName Document.execCommand; @docsEditable true
bool execCommand(String command, bool userInterface, String value) native;
- /** @domName Document.getCSSCanvasContext */
+ /// @domName Document.getCSSCanvasContext; @docsEditable true
CanvasRenderingContext getCSSCanvasContext(String contextId, String name, int width, int height) native;
- /** @domName Document.getElementById */
+ /// @domName Document.getElementById; @docsEditable true
Element $dom_getElementById(String elementId) native "getElementById";
- /** @domName Document.getElementsByClassName */
+ /// @domName Document.getElementsByClassName; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
List<Node> $dom_getElementsByClassName(String tagname) native "getElementsByClassName";
- /** @domName Document.getElementsByName */
+ /// @domName Document.getElementsByName; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
List<Node> $dom_getElementsByName(String elementName) native "getElementsByName";
- /** @domName Document.getElementsByTagName */
+ /// @domName Document.getElementsByTagName; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
List<Node> $dom_getElementsByTagName(String tagname) native "getElementsByTagName";
- /** @domName Document.queryCommandEnabled */
+ /// @domName Document.queryCommandEnabled; @docsEditable true
bool queryCommandEnabled(String command) native;
- /** @domName Document.queryCommandIndeterm */
+ /// @domName Document.queryCommandIndeterm; @docsEditable true
bool queryCommandIndeterm(String command) native;
- /** @domName Document.queryCommandState */
+ /// @domName Document.queryCommandState; @docsEditable true
bool queryCommandState(String command) native;
- /** @domName Document.queryCommandSupported */
+ /// @domName Document.queryCommandSupported; @docsEditable true
bool queryCommandSupported(String command) native;
- /** @domName Document.queryCommandValue */
+ /// @domName Document.queryCommandValue; @docsEditable true
String queryCommandValue(String command) native;
- /** @domName Document.querySelector */
+ /// @domName Document.querySelector; @docsEditable true
Element $dom_querySelector(String selectors) native "querySelector";
- /** @domName Document.querySelectorAll */
+ /// @domName Document.querySelectorAll; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
List<Node> $dom_querySelectorAll(String selectors) native "querySelectorAll";
- /** @domName Document.webkitCancelFullScreen */
+ /// @domName Document.webkitCancelFullScreen; @docsEditable true
void $dom_webkitCancelFullScreen() native "webkitCancelFullScreen";
- /** @domName Document.webkitExitFullscreen */
+ /// @domName Document.webkitExitFullscreen; @docsEditable true
void $dom_webkitExitFullscreen() native "webkitExitFullscreen";
- /** @domName Document.webkitExitPointerLock */
+ /// @domName Document.webkitExitPointerLock; @docsEditable true
void $dom_webkitExitPointerLock() native "webkitExitPointerLock";
// TODO(jacobr): implement all Element methods not on Document.
@@ -6396,24 +6785,33 @@
_DocumentFragmentFactoryProvider.createDocumentFragment_html(html);
factory DocumentFragment.svg(String svgContent) =>
- new _DocumentFragmentFactoryProvider.createDocumentFragment_svg(svgContent);
+ _DocumentFragmentFactoryProvider.createDocumentFragment_svg(svgContent);
- List<Element> _elements;
-
- List<Element> get elements {
- if (_elements == null) {
- _elements = new FilteredElementList(this);
- }
- return _elements;
- }
+ List<Element> get elements => this.children;
// TODO: The type of value should be Collection<Element>. See http://b/5392897
void set elements(value) {
+ this.children = value;
+ }
+
+ // Native field is used only by Dart code so does not lead to instantiation
+ // of native classes
+ @Creates('Null')
+ List<Element> _children;
+
+ List<Element> get children {
+ if (_children == null) {
+ _children = new FilteredElementList(this);
+ }
+ return _children;
+ }
+
+ void set children(Collection<Element> value) {
// Copy list first since we don't want liveness during iteration.
List copy = new List.from(value);
- final elements = this.elements;
- elements.clear();
- elements.addAll(copy);
+ var children = this.children;
+ children.clear();
+ children.addAll(copy);
}
Element query(String selectors) => $dom_querySelector(selectors);
@@ -6622,16 +7020,15 @@
}
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
ElementEvents get on =>
new ElementEvents(this);
- /** @domName DocumentFragment.querySelector */
+ /// @domName DocumentFragment.querySelector; @docsEditable true
Element $dom_querySelector(String selectors) native "querySelector";
- /** @domName DocumentFragment.querySelectorAll */
+ /// @domName DocumentFragment.querySelectorAll; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
List<Node> $dom_querySelectorAll(String selectors) native "querySelectorAll";
}
@@ -6640,28 +7037,28 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DocumentType
+/// @domName DocumentType; @docsEditable true
class DocumentType extends Node native "*DocumentType" {
- /** @domName DocumentType.entities */
+ /// @domName DocumentType.entities; @docsEditable true
final NamedNodeMap entities;
- /** @domName DocumentType.internalSubset */
+ /// @domName DocumentType.internalSubset; @docsEditable true
final String internalSubset;
- /** @domName DocumentType.name */
+ /// @domName DocumentType.name; @docsEditable true
final String name;
- /** @domName DocumentType.notations */
+ /// @domName DocumentType.notations; @docsEditable true
final NamedNodeMap notations;
- /** @domName DocumentType.publicId */
+ /// @domName DocumentType.publicId; @docsEditable true
final String publicId;
- /** @domName DocumentType.systemId */
+ /// @domName DocumentType.systemId; @docsEditable true
final String systemId;
- /** @domName DocumentType.remove */
+ /// @domName DocumentType.remove; @docsEditable true
void remove() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -6669,25 +7066,25 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DynamicsCompressorNode
+/// @domName DynamicsCompressorNode; @docsEditable true
class DynamicsCompressorNode extends AudioNode native "*DynamicsCompressorNode" {
- /** @domName DynamicsCompressorNode.attack */
+ /// @domName DynamicsCompressorNode.attack; @docsEditable true
final AudioParam attack;
- /** @domName DynamicsCompressorNode.knee */
+ /// @domName DynamicsCompressorNode.knee; @docsEditable true
final AudioParam knee;
- /** @domName DynamicsCompressorNode.ratio */
+ /// @domName DynamicsCompressorNode.ratio; @docsEditable true
final AudioParam ratio;
- /** @domName DynamicsCompressorNode.reduction */
+ /// @domName DynamicsCompressorNode.reduction; @docsEditable true
final AudioParam reduction;
- /** @domName DynamicsCompressorNode.release */
+ /// @domName DynamicsCompressorNode.release; @docsEditable true
final AudioParam release;
- /** @domName DynamicsCompressorNode.threshold */
+ /// @domName DynamicsCompressorNode.threshold; @docsEditable true
final AudioParam threshold;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -6695,7 +7092,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName EXTTextureFilterAnisotropic
+/// @domName EXTTextureFilterAnisotropic; @docsEditable true
class EXTTextureFilterAnisotropic native "*EXTTextureFilterAnisotropic" {
static const int MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF;
@@ -6848,6 +7245,11 @@
return result;
}
+ Element get first {
+ return _element.$dom_firstElementChild;
+ }
+
+
Element get last {
return _element.$dom_lastElementChild;
}
@@ -6862,10 +7264,6 @@
_FrozenElementList._wrap(this._nodeList);
- Element get first {
- return _nodeList[0];
- }
-
bool contains(Element element) {
for (Element el in this) {
if (el == element) return true;
@@ -6974,6 +7372,8 @@
throw new UnsupportedError('');
}
+ Element get first => _nodeList.first;
+
Element get last => _nodeList.last;
}
@@ -7001,16 +7401,7 @@
bool get hasNext => _index < _list.length;
}
-/**
- * All your attribute manipulation needs in one place.
- * Extends the regular Map interface by automatically coercing non-string
- * values to strings.
- */
-abstract class AttributeMap implements Map<String, String> {
- void operator []=(String key, value);
-}
-
-class _ElementAttributeMap extends AttributeMap {
+class _ElementAttributeMap implements Map<String, String> {
final Element _element;
@@ -7105,7 +7496,7 @@
* Provides a Map abstraction on top of data-* attributes, similar to the
* dataSet in the old DOM.
*/
-class _DataAttributeMap extends AttributeMap {
+class _DataAttributeMap implements Map<String, String> {
final Map<String, String> $dom_attributes;
@@ -7218,7 +7609,7 @@
String toString() => "($left, $top, $width, $height)";
}
-class Element extends Node implements ElementTraversal native "*Element" {
+abstract class Element extends Node implements ElementTraversal native "*Element" {
factory Element.html(String html) =>
_ElementFactoryProvider.createElement_html(html);
@@ -7229,7 +7620,7 @@
* @domName Element.hasAttribute, Element.getAttribute, Element.setAttribute,
* Element.removeAttribute
*/
- _ElementAttributeMap get attributes => new _ElementAttributeMap(this);
+ Map<String, String> get attributes => new _ElementAttributeMap(this);
void set attributes(Map<String, String> value) {
Map<String, String> attributes = this.attributes;
@@ -7240,16 +7631,27 @@
}
void set elements(Collection<Element> value) {
- final elements = this.elements;
- elements.clear();
- elements.addAll(value);
+ this.children = value;
}
/**
+ * Deprecated, use [children] instead.
+ */
+ List<Element> get elements => this.children;
+
+ /**
* @domName childElementCount, firstElementChild, lastElementChild,
* children, Node.nodes.add
*/
- List<Element> get elements => new _ChildrenElementList._wrap(this);
+ List<Element> get children => new _ChildrenElementList._wrap(this);
+
+ void set children(Collection<Element> value) {
+ // Copy list first since we don't want liveness during iteration.
+ List copy = new List.from(value);
+ var children = this.children;
+ children.clear();
+ children.addAll(copy);
+ }
Element query(String selectors) => $dom_querySelector(selectors);
@@ -7315,6 +7717,7 @@
* [wc]: http://dvcs.w3.org/hg/webcomponents/raw-file/tip/explainer/index.html
* [x-tags]: http://x-tags.org/
*/
+ @Creates('Null') // Set from Dart code; does not instantiate a native type.
var xtag;
// TODO(vsm): Implement noSuchMethod or similar for dart2js.
@@ -7377,188 +7780,190 @@
}
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
ElementEvents get on =>
new ElementEvents(this);
- /** @domName HTMLElement.children */
+ /// @domName HTMLElement.children; @docsEditable true
HTMLCollection get $dom_children => JS("HTMLCollection", "#.children", this);
- /** @domName HTMLElement.contentEditable */
+ /// @domName HTMLElement.contentEditable; @docsEditable true
String contentEditable;
- /** @domName HTMLElement.dir */
+ /// @domName HTMLElement.dir; @docsEditable true
String dir;
- /** @domName HTMLElement.draggable */
+ /// @domName HTMLElement.draggable; @docsEditable true
bool draggable;
- /** @domName HTMLElement.hidden */
+ /// @domName HTMLElement.hidden; @docsEditable true
bool hidden;
- /** @domName HTMLElement.id */
+ /// @domName HTMLElement.id; @docsEditable true
String id;
- /** @domName HTMLElement.innerHTML */
+ /// @domName HTMLElement.innerHTML; @docsEditable true
String innerHTML;
- /** @domName HTMLElement.isContentEditable */
+ /// @domName HTMLElement.isContentEditable; @docsEditable true
final bool isContentEditable;
- /** @domName HTMLElement.lang */
+ /// @domName HTMLElement.lang; @docsEditable true
String lang;
- /** @domName HTMLElement.outerHTML */
+ /// @domName HTMLElement.outerHTML; @docsEditable true
final String outerHTML;
- /** @domName HTMLElement.spellcheck */
+ /// @domName HTMLElement.spellcheck; @docsEditable true
bool spellcheck;
- /** @domName HTMLElement.tabIndex */
+ /// @domName HTMLElement.tabIndex; @docsEditable true
int tabIndex;
- /** @domName HTMLElement.title */
+ /// @domName HTMLElement.title; @docsEditable true
String title;
- /** @domName HTMLElement.translate */
+ /// @domName HTMLElement.translate; @docsEditable true
bool translate;
- /** @domName HTMLElement.webkitdropzone */
+ /// @domName HTMLElement.webkitdropzone; @docsEditable true
String webkitdropzone;
- /** @domName HTMLElement.click */
+ /// @domName HTMLElement.click; @docsEditable true
void click() native;
static const int ALLOW_KEYBOARD_INPUT = 1;
- /** @domName Element.childElementCount */
+ /// @domName Element.childElementCount; @docsEditable true
int get $dom_childElementCount => JS("int", "#.childElementCount", this);
- /** @domName Element.className */
+ /// @domName Element.className; @docsEditable true
String get $dom_className => JS("String", "#.className", this);
- /** @domName Element.className */
+ /// @domName Element.className; @docsEditable true
void set $dom_className(String value) {
JS("void", "#.className = #", this, value);
}
- /** @domName Element.clientHeight */
+ /// @domName Element.clientHeight; @docsEditable true
final int clientHeight;
- /** @domName Element.clientLeft */
+ /// @domName Element.clientLeft; @docsEditable true
final int clientLeft;
- /** @domName Element.clientTop */
+ /// @domName Element.clientTop; @docsEditable true
final int clientTop;
- /** @domName Element.clientWidth */
+ /// @domName Element.clientWidth; @docsEditable true
final int clientWidth;
- /** @domName Element.dataset */
+ /// @domName Element.dataset; @docsEditable true
final Map<String, String> dataset;
- /** @domName Element.firstElementChild */
+ /// @domName Element.firstElementChild; @docsEditable true
Element get $dom_firstElementChild => JS("Element", "#.firstElementChild", this);
- /** @domName Element.lastElementChild */
+ /// @domName Element.lastElementChild; @docsEditable true
Element get $dom_lastElementChild => JS("Element", "#.lastElementChild", this);
- /** @domName Element.nextElementSibling */
+ /// @domName Element.nextElementSibling; @docsEditable true
final Element nextElementSibling;
- /** @domName Element.offsetHeight */
+ /// @domName Element.offsetHeight; @docsEditable true
final int offsetHeight;
- /** @domName Element.offsetLeft */
+ /// @domName Element.offsetLeft; @docsEditable true
final int offsetLeft;
- /** @domName Element.offsetParent */
+ /// @domName Element.offsetParent; @docsEditable true
final Element offsetParent;
- /** @domName Element.offsetTop */
+ /// @domName Element.offsetTop; @docsEditable true
final int offsetTop;
- /** @domName Element.offsetWidth */
+ /// @domName Element.offsetWidth; @docsEditable true
final int offsetWidth;
- /** @domName Element.previousElementSibling */
+ /// @domName Element.previousElementSibling; @docsEditable true
final Element previousElementSibling;
- /** @domName Element.scrollHeight */
+ /// @domName Element.scrollHeight; @docsEditable true
final int scrollHeight;
- /** @domName Element.scrollLeft */
+ /// @domName Element.scrollLeft; @docsEditable true
int scrollLeft;
- /** @domName Element.scrollTop */
+ /// @domName Element.scrollTop; @docsEditable true
int scrollTop;
- /** @domName Element.scrollWidth */
+ /// @domName Element.scrollWidth; @docsEditable true
final int scrollWidth;
- /** @domName Element.style */
+ /// @domName Element.style; @docsEditable true
final CSSStyleDeclaration style;
- /** @domName Element.tagName */
+ /// @domName Element.tagName; @docsEditable true
final String tagName;
- /** @domName Element.blur */
+ /// @domName Element.blur; @docsEditable true
void blur() native;
- /** @domName Element.focus */
+ /// @domName Element.focus; @docsEditable true
void focus() native;
- /** @domName Element.getAttribute */
+ /// @domName Element.getAttribute; @docsEditable true
String $dom_getAttribute(String name) native "getAttribute";
- /** @domName Element.getBoundingClientRect */
+ /// @domName Element.getBoundingClientRect; @docsEditable true
ClientRect getBoundingClientRect() native;
- /** @domName Element.getClientRects */
+ /// @domName Element.getClientRects; @docsEditable true
+ @Returns('_ClientRectList') @Creates('_ClientRectList')
List<ClientRect> getClientRects() native;
- /** @domName Element.getElementsByClassName */
+ /// @domName Element.getElementsByClassName; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
List<Node> $dom_getElementsByClassName(String name) native "getElementsByClassName";
- /** @domName Element.getElementsByTagName */
+ /// @domName Element.getElementsByTagName; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
List<Node> $dom_getElementsByTagName(String name) native "getElementsByTagName";
- /** @domName Element.hasAttribute */
+ /// @domName Element.hasAttribute; @docsEditable true
bool $dom_hasAttribute(String name) native "hasAttribute";
- /** @domName Element.querySelector */
+ /// @domName Element.querySelector; @docsEditable true
Element $dom_querySelector(String selectors) native "querySelector";
- /** @domName Element.querySelectorAll */
+ /// @domName Element.querySelectorAll; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
List<Node> $dom_querySelectorAll(String selectors) native "querySelectorAll";
- /** @domName Element.removeAttribute */
+ /// @domName Element.removeAttribute; @docsEditable true
void $dom_removeAttribute(String name) native "removeAttribute";
- /** @domName Element.scrollByLines */
+ /// @domName Element.scrollByLines; @docsEditable true
void scrollByLines(int lines) native;
- /** @domName Element.scrollByPages */
+ /// @domName Element.scrollByPages; @docsEditable true
void scrollByPages(int pages) native;
- /** @domName Element.scrollIntoViewIfNeeded */
+ /// @domName Element.scrollIntoViewIfNeeded; @docsEditable true
void scrollIntoView([bool centerIfNeeded]) native "scrollIntoViewIfNeeded";
- /** @domName Element.setAttribute */
+ /// @domName Element.setAttribute; @docsEditable true
void $dom_setAttribute(String name, String value) native "setAttribute";
- /** @domName Element.webkitMatchesSelector */
+ /// @domName Element.webkitMatchesSelector; @docsEditable true
bool matchesSelector(String selectors) native "webkitMatchesSelector";
- /** @domName Element.webkitRequestFullScreen */
+ /// @domName Element.webkitRequestFullScreen; @docsEditable true
void webkitRequestFullScreen(int flags) native;
- /** @domName Element.webkitRequestFullscreen */
+ /// @domName Element.webkitRequestFullscreen; @docsEditable true
void webkitRequestFullscreen() native;
- /** @domName Element.webkitRequestPointerLock */
+ /// @domName Element.webkitRequestPointerLock; @docsEditable true
void webkitRequestPointerLock() native;
}
@@ -7603,15 +8008,15 @@
temp.innerHTML = html;
Element element;
- if (temp.elements.length == 1) {
- element = temp.elements[0];
- } else if (parentTag == 'html' && temp.elements.length == 2) {
+ if (temp.children.length == 1) {
+ element = temp.children[0];
+ } else if (parentTag == 'html' && temp.children.length == 2) {
// Work around for edge case in WebKit and possibly other browsers where
// both body and head elements are created even though the inner html
// only contains a head or body element.
- element = temp.elements[tag == 'head' ? 0 : 1];
+ element = temp.children[tag == 'head' ? 0 : 1];
} else {
- throw new ArgumentError('HTML had ${temp.elements.length} '
+ throw new ArgumentError('HTML had ${temp.children.length} '
'top level elements but 1 expected');
}
element.remove();
@@ -7747,16 +8152,16 @@
/// @domName ElementTimeControl
abstract class ElementTimeControl {
- /** @domName ElementTimeControl.beginElement */
+ /// @domName ElementTimeControl.beginElement; @docsEditable true
void beginElement();
- /** @domName ElementTimeControl.beginElementAt */
+ /// @domName ElementTimeControl.beginElementAt; @docsEditable true
void beginElementAt(num offset);
- /** @domName ElementTimeControl.endElement */
+ /// @domName ElementTimeControl.endElement; @docsEditable true
void endElement();
- /** @domName ElementTimeControl.endElementAt */
+ /// @domName ElementTimeControl.endElementAt; @docsEditable true
void endElementAt(num offset);
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -7782,27 +8187,27 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLEmbedElement
+/// @domName HTMLEmbedElement; @docsEditable true
class EmbedElement extends Element implements Element native "*HTMLEmbedElement" {
- factory EmbedElement() => _Elements.createEmbedElement();
+ factory EmbedElement() => document.$dom_createElement("embed");
- /** @domName HTMLEmbedElement.align */
+ /// @domName HTMLEmbedElement.align; @docsEditable true
String align;
- /** @domName HTMLEmbedElement.height */
+ /// @domName HTMLEmbedElement.height; @docsEditable true
String height;
- /** @domName HTMLEmbedElement.name */
+ /// @domName HTMLEmbedElement.name; @docsEditable true
String name;
- /** @domName HTMLEmbedElement.src */
+ /// @domName HTMLEmbedElement.src; @docsEditable true
String src;
- /** @domName HTMLEmbedElement.type */
+ /// @domName HTMLEmbedElement.type; @docsEditable true
String type;
- /** @domName HTMLEmbedElement.width */
+ /// @domName HTMLEmbedElement.width; @docsEditable true
String width;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -7810,7 +8215,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName EntityReference
+/// @domName EntityReference; @docsEditable true
class EntityReference extends Node native "*EntityReference" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -7826,40 +8231,40 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Entry
+/// @domName Entry; @docsEditable true
class Entry native "*Entry" {
- /** @domName Entry.filesystem */
+ /// @domName Entry.filesystem; @docsEditable true
final DOMFileSystem filesystem;
- /** @domName Entry.fullPath */
+ /// @domName Entry.fullPath; @docsEditable true
final String fullPath;
- /** @domName Entry.isDirectory */
+ /// @domName Entry.isDirectory; @docsEditable true
final bool isDirectory;
- /** @domName Entry.isFile */
+ /// @domName Entry.isFile; @docsEditable true
final bool isFile;
- /** @domName Entry.name */
+ /// @domName Entry.name; @docsEditable true
final String name;
- /** @domName Entry.copyTo */
+ /// @domName Entry.copyTo; @docsEditable true
void copyTo(DirectoryEntry parent, [String name, EntryCallback successCallback, ErrorCallback errorCallback]) native;
- /** @domName Entry.getMetadata */
+ /// @domName Entry.getMetadata; @docsEditable true
void getMetadata(MetadataCallback successCallback, [ErrorCallback errorCallback]) native;
- /** @domName Entry.getParent */
+ /// @domName Entry.getParent; @docsEditable true
void getParent([EntryCallback successCallback, ErrorCallback errorCallback]) native;
- /** @domName Entry.moveTo */
+ /// @domName Entry.moveTo; @docsEditable true
void moveTo(DirectoryEntry parent, [String name, EntryCallback successCallback, ErrorCallback errorCallback]) native;
- /** @domName Entry.remove */
+ /// @domName Entry.remove; @docsEditable true
void remove(VoidCallback successCallback, [ErrorCallback errorCallback]) native;
- /** @domName Entry.toURL */
+ /// @domName Entry.toURL; @docsEditable true
String toURL() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -7875,40 +8280,40 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName EntrySync
+/// @domName EntrySync; @docsEditable true
class EntrySync native "*EntrySync" {
- /** @domName EntrySync.filesystem */
+ /// @domName EntrySync.filesystem; @docsEditable true
final DOMFileSystemSync filesystem;
- /** @domName EntrySync.fullPath */
+ /// @domName EntrySync.fullPath; @docsEditable true
final String fullPath;
- /** @domName EntrySync.isDirectory */
+ /// @domName EntrySync.isDirectory; @docsEditable true
final bool isDirectory;
- /** @domName EntrySync.isFile */
+ /// @domName EntrySync.isFile; @docsEditable true
final bool isFile;
- /** @domName EntrySync.name */
+ /// @domName EntrySync.name; @docsEditable true
final String name;
- /** @domName EntrySync.copyTo */
+ /// @domName EntrySync.copyTo; @docsEditable true
EntrySync copyTo(DirectoryEntrySync parent, String name) native;
- /** @domName EntrySync.getMetadata */
+ /// @domName EntrySync.getMetadata; @docsEditable true
Metadata getMetadata() native;
- /** @domName EntrySync.getParent */
+ /// @domName EntrySync.getParent; @docsEditable true
EntrySync getParent() native;
- /** @domName EntrySync.moveTo */
+ /// @domName EntrySync.moveTo; @docsEditable true
EntrySync moveTo(DirectoryEntrySync parent, String name) native;
- /** @domName EntrySync.remove */
+ /// @domName EntrySync.remove; @docsEditable true
void remove() native;
- /** @domName EntrySync.toURL */
+ /// @domName EntrySync.toURL; @docsEditable true
String toURL() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -7924,16 +8329,16 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName ErrorEvent
+/// @domName ErrorEvent; @docsEditable true
class ErrorEvent extends Event native "*ErrorEvent" {
- /** @domName ErrorEvent.filename */
+ /// @domName ErrorEvent.filename; @docsEditable true
final String filename;
- /** @domName ErrorEvent.lineno */
+ /// @domName ErrorEvent.lineno; @docsEditable true
final int lineno;
- /** @domName ErrorEvent.message */
+ /// @domName ErrorEvent.message; @docsEditable true
final String message;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -7993,51 +8398,51 @@
static const int SELECT = 16384;
- /** @domName Event.bubbles */
+ /// @domName Event.bubbles; @docsEditable true
final bool bubbles;
- /** @domName Event.cancelBubble */
+ /// @domName Event.cancelBubble; @docsEditable true
bool cancelBubble;
- /** @domName Event.cancelable */
+ /// @domName Event.cancelable; @docsEditable true
final bool cancelable;
- /** @domName Event.clipboardData */
+ /// @domName Event.clipboardData; @docsEditable true
final Clipboard clipboardData;
- /** @domName Event.currentTarget */
+ /// @domName Event.currentTarget; @docsEditable true
EventTarget get currentTarget => _convertNativeToDart_EventTarget(this._currentTarget);
dynamic get _currentTarget => JS("dynamic", "#.currentTarget", this);
- /** @domName Event.defaultPrevented */
+ /// @domName Event.defaultPrevented; @docsEditable true
final bool defaultPrevented;
- /** @domName Event.eventPhase */
+ /// @domName Event.eventPhase; @docsEditable true
final int eventPhase;
- /** @domName Event.returnValue */
+ /// @domName Event.returnValue; @docsEditable true
bool returnValue;
- /** @domName Event.target */
+ /// @domName Event.target; @docsEditable true
EventTarget get target => _convertNativeToDart_EventTarget(this._target);
dynamic get _target => JS("dynamic", "#.target", this);
- /** @domName Event.timeStamp */
+ /// @domName Event.timeStamp; @docsEditable true
final int timeStamp;
- /** @domName Event.type */
+ /// @domName Event.type; @docsEditable true
final String type;
- /** @domName Event.initEvent */
+ /// @domName Event.initEvent; @docsEditable true
void $dom_initEvent(String eventTypeArg, bool canBubbleArg, bool cancelableArg) native "initEvent";
- /** @domName Event.preventDefault */
+ /// @domName Event.preventDefault; @docsEditable true
void preventDefault() native;
- /** @domName Event.stopImmediatePropagation */
+ /// @domName Event.stopImmediatePropagation; @docsEditable true
void stopImmediatePropagation() native;
- /** @domName Event.stopPropagation */
+ /// @domName Event.stopPropagation; @docsEditable true
void stopPropagation() native;
}
@@ -8046,23 +8451,23 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName EventException
+/// @domName EventException; @docsEditable true
class EventException native "*EventException" {
static const int DISPATCH_REQUEST_ERR = 1;
static const int UNSPECIFIED_EVENT_TYPE_ERR = 0;
- /** @domName EventException.code */
+ /// @domName EventException.code; @docsEditable true
final int code;
- /** @domName EventException.message */
+ /// @domName EventException.message; @docsEditable true
final String message;
- /** @domName EventException.name */
+ /// @domName EventException.name; @docsEditable true
final String name;
- /** @domName EventException.toString */
+ /// @domName EventException.toString; @docsEditable true
String toString() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -8070,14 +8475,12 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName EventSource
+/// @domName EventSource; @docsEditable true
class EventSource extends EventTarget native "*EventSource" {
factory EventSource(String scriptUrl) => _EventSourceFactoryProvider.createEventSource(scriptUrl);
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
EventSourceEvents get on =>
new EventSourceEvents(this);
@@ -8087,25 +8490,25 @@
static const int OPEN = 1;
- /** @domName EventSource.URL */
+ /// @domName EventSource.URL; @docsEditable true
final String URL;
- /** @domName EventSource.readyState */
+ /// @domName EventSource.readyState; @docsEditable true
final int readyState;
- /** @domName EventSource.url */
+ /// @domName EventSource.url; @docsEditable true
final String url;
- /** @domName EventSource.addEventListener */
+ /// @domName EventSource.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName EventSource.close */
+ /// @domName EventSource.close; @docsEditable true
void close() native;
- /** @domName EventSource.dispatchEvent */
+ /// @domName EventSource.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event evt) native "dispatchEvent";
- /** @domName EventSource.removeEventListener */
+ /// @domName EventSource.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
}
@@ -8174,13 +8577,13 @@
/** @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent */
Events get on => new Events(this);
- /** @domName EventTarget.addEventListener */
+ /// @domName EventTarget.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName EventTarget.dispatchEvent */
+ /// @domName EventTarget.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event event) native "dispatchEvent";
- /** @domName EventTarget.removeEventListener */
+ /// @domName EventTarget.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
}
@@ -8189,39 +8592,39 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLFieldSetElement
+/// @domName HTMLFieldSetElement; @docsEditable true
class FieldSetElement extends Element implements Element native "*HTMLFieldSetElement" {
- factory FieldSetElement() => _Elements.createFieldSetElement();
+ factory FieldSetElement() => document.$dom_createElement("fieldset");
- /** @domName HTMLFieldSetElement.disabled */
+ /// @domName HTMLFieldSetElement.disabled; @docsEditable true
bool disabled;
- /** @domName HTMLFieldSetElement.elements */
+ /// @domName HTMLFieldSetElement.elements; @docsEditable true
final HTMLCollection elements;
- /** @domName HTMLFieldSetElement.form */
+ /// @domName HTMLFieldSetElement.form; @docsEditable true
final FormElement form;
- /** @domName HTMLFieldSetElement.name */
+ /// @domName HTMLFieldSetElement.name; @docsEditable true
String name;
- /** @domName HTMLFieldSetElement.type */
+ /// @domName HTMLFieldSetElement.type; @docsEditable true
final String type;
- /** @domName HTMLFieldSetElement.validationMessage */
+ /// @domName HTMLFieldSetElement.validationMessage; @docsEditable true
final String validationMessage;
- /** @domName HTMLFieldSetElement.validity */
+ /// @domName HTMLFieldSetElement.validity; @docsEditable true
final ValidityState validity;
- /** @domName HTMLFieldSetElement.willValidate */
+ /// @domName HTMLFieldSetElement.willValidate; @docsEditable true
final bool willValidate;
- /** @domName HTMLFieldSetElement.checkValidity */
+ /// @domName HTMLFieldSetElement.checkValidity; @docsEditable true
bool checkValidity() native;
- /** @domName HTMLFieldSetElement.setCustomValidity */
+ /// @domName HTMLFieldSetElement.setCustomValidity; @docsEditable true
void setCustomValidity(String error) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -8229,16 +8632,16 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName File
+/// @domName File; @docsEditable true
class File extends Blob native "*File" {
- /** @domName File.lastModifiedDate */
+ /// @domName File.lastModifiedDate; @docsEditable true
final Date lastModifiedDate;
- /** @domName File.name */
+ /// @domName File.name; @docsEditable true
final String name;
- /** @domName File.webkitRelativePath */
+ /// @domName File.webkitRelativePath; @docsEditable true
final String webkitRelativePath;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -8254,13 +8657,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName FileEntry
+/// @domName FileEntry; @docsEditable true
class FileEntry extends Entry native "*FileEntry" {
- /** @domName FileEntry.createWriter */
+ /// @domName FileEntry.createWriter; @docsEditable true
void createWriter(FileWriterCallback successCallback, [ErrorCallback errorCallback]) native;
- /** @domName FileEntry.file */
+ /// @domName FileEntry.file; @docsEditable true
void file(FileCallback successCallback, [ErrorCallback errorCallback]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -8268,13 +8671,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName FileEntrySync
+/// @domName FileEntrySync; @docsEditable true
class FileEntrySync extends EntrySync native "*FileEntrySync" {
- /** @domName FileEntrySync.createWriter */
+ /// @domName FileEntrySync.createWriter; @docsEditable true
FileWriterSync createWriter() native;
- /** @domName FileEntrySync.file */
+ /// @domName FileEntrySync.file; @docsEditable true
File file() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -8282,7 +8685,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName FileError
+/// @domName FileError; @docsEditable true
class FileError native "*FileError" {
static const int ABORT_ERR = 3;
@@ -8309,7 +8712,7 @@
static const int TYPE_MISMATCH_ERR = 11;
- /** @domName FileError.code */
+ /// @domName FileError.code; @docsEditable true
final int code;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -8317,7 +8720,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName FileException
+/// @domName FileException; @docsEditable true
class FileException native "*FileException" {
static const int ABORT_ERR = 3;
@@ -8344,16 +8747,16 @@
static const int TYPE_MISMATCH_ERR = 11;
- /** @domName FileException.code */
+ /// @domName FileException.code; @docsEditable true
final int code;
- /** @domName FileException.message */
+ /// @domName FileException.message; @docsEditable true
final String message;
- /** @domName FileException.name */
+ /// @domName FileException.name; @docsEditable true
final String name;
- /** @domName FileException.toString */
+ /// @domName FileException.toString; @docsEditable true
String toString() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -8361,14 +8764,12 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName FileReader
+/// @domName FileReader; @docsEditable true
class FileReader extends EventTarget native "*FileReader" {
factory FileReader() => _FileReaderFactoryProvider.createFileReader();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
FileReaderEvents get on =>
new FileReaderEvents(this);
@@ -8378,37 +8779,38 @@
static const int LOADING = 1;
- /** @domName FileReader.error */
+ /// @domName FileReader.error; @docsEditable true
final FileError error;
- /** @domName FileReader.readyState */
+ /// @domName FileReader.readyState; @docsEditable true
final int readyState;
- /** @domName FileReader.result */
+ /// @domName FileReader.result; @docsEditable true
+ @Creates('String|ArrayBuffer|Null')
final Object result;
- /** @domName FileReader.abort */
+ /// @domName FileReader.abort; @docsEditable true
void abort() native;
- /** @domName FileReader.addEventListener */
+ /// @domName FileReader.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName FileReader.dispatchEvent */
+ /// @domName FileReader.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event evt) native "dispatchEvent";
- /** @domName FileReader.readAsArrayBuffer */
+ /// @domName FileReader.readAsArrayBuffer; @docsEditable true
void readAsArrayBuffer(Blob blob) native;
- /** @domName FileReader.readAsBinaryString */
+ /// @domName FileReader.readAsBinaryString; @docsEditable true
void readAsBinaryString(Blob blob) native;
- /** @domName FileReader.readAsDataURL */
+ /// @domName FileReader.readAsDataURL; @docsEditable true
void readAsDataURL(Blob blob) native;
- /** @domName FileReader.readAsText */
+ /// @domName FileReader.readAsText; @docsEditable true
void readAsText(Blob blob, [String encoding]) native;
- /** @domName FileReader.removeEventListener */
+ /// @domName FileReader.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
}
@@ -8432,21 +8834,21 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName FileReaderSync
+/// @domName FileReaderSync; @docsEditable true
class FileReaderSync native "*FileReaderSync" {
factory FileReaderSync() => _FileReaderSyncFactoryProvider.createFileReaderSync();
- /** @domName FileReaderSync.readAsArrayBuffer */
+ /// @domName FileReaderSync.readAsArrayBuffer; @docsEditable true
ArrayBuffer readAsArrayBuffer(Blob blob) native;
- /** @domName FileReaderSync.readAsBinaryString */
+ /// @domName FileReaderSync.readAsBinaryString; @docsEditable true
String readAsBinaryString(Blob blob) native;
- /** @domName FileReaderSync.readAsDataURL */
+ /// @domName FileReaderSync.readAsDataURL; @docsEditable true
String readAsDataURL(Blob blob) native;
- /** @domName FileReaderSync.readAsText */
+ /// @domName FileReaderSync.readAsText; @docsEditable true
String readAsText(Blob blob, [String encoding]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -8462,12 +8864,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName FileWriter
+/// @domName FileWriter; @docsEditable true
class FileWriter extends EventTarget native "*FileWriter" {
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
FileWriterEvents get on =>
new FileWriterEvents(this);
@@ -8477,37 +8877,37 @@
static const int WRITING = 1;
- /** @domName FileWriter.error */
+ /// @domName FileWriter.error; @docsEditable true
final FileError error;
- /** @domName FileWriter.length */
+ /// @domName FileWriter.length; @docsEditable true
final int length;
- /** @domName FileWriter.position */
+ /// @domName FileWriter.position; @docsEditable true
final int position;
- /** @domName FileWriter.readyState */
+ /// @domName FileWriter.readyState; @docsEditable true
final int readyState;
- /** @domName FileWriter.abort */
+ /// @domName FileWriter.abort; @docsEditable true
void abort() native;
- /** @domName FileWriter.addEventListener */
+ /// @domName FileWriter.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName FileWriter.dispatchEvent */
+ /// @domName FileWriter.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event evt) native "dispatchEvent";
- /** @domName FileWriter.removeEventListener */
+ /// @domName FileWriter.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
- /** @domName FileWriter.seek */
+ /// @domName FileWriter.seek; @docsEditable true
void seek(int position) native;
- /** @domName FileWriter.truncate */
+ /// @domName FileWriter.truncate; @docsEditable true
void truncate(int size) native;
- /** @domName FileWriter.write */
+ /// @domName FileWriter.write; @docsEditable true
void write(Blob data) native;
}
@@ -8539,22 +8939,22 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName FileWriterSync
+/// @domName FileWriterSync; @docsEditable true
class FileWriterSync native "*FileWriterSync" {
- /** @domName FileWriterSync.length */
+ /// @domName FileWriterSync.length; @docsEditable true
final int length;
- /** @domName FileWriterSync.position */
+ /// @domName FileWriterSync.position; @docsEditable true
final int position;
- /** @domName FileWriterSync.seek */
+ /// @domName FileWriterSync.seek; @docsEditable true
void seek(int position) native;
- /** @domName FileWriterSync.truncate */
+ /// @domName FileWriterSync.truncate; @docsEditable true
void truncate(int size) native;
- /** @domName FileWriterSync.write */
+ /// @domName FileWriterSync.write; @docsEditable true
void write(Blob data) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -8562,7 +8962,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Float32Array
+/// @domName Float32Array; @docsEditable true
class Float32Array extends ArrayBufferView implements JavaScriptIndexingBehavior, List<num> native "*Float32Array" {
factory Float32Array(int length) =>
@@ -8576,13 +8976,12 @@
static const int BYTES_PER_ELEMENT = 4;
- /** @domName Float32Array.length */
+ /// @domName Float32Array.length; @docsEditable true
final int length;
num operator[](int index) => JS("num", "#[#]", this, index);
- void operator[]=(int index, num value) => JS("void", "#[#] = #", this, index, value);
- // -- start List<num> mixins.
+ void operator[]=(int index, num value) { JS("void", "#[#] = #", this, index, value); } // -- start List<num> mixins.
// num is the element type.
// From Iterable<num>:
@@ -8637,6 +9036,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ num get first => this[0];
+
num get last => this[length - 1];
num removeLast() {
@@ -8660,10 +9061,10 @@
// -- end List<num> mixins.
- /** @domName Float32Array.setElements */
+ /// @domName Float32Array.setElements; @docsEditable true
void setElements(Object array, [int offset]) native "set";
- /** @domName Float32Array.subarray */
+ /// @domName Float32Array.subarray; @docsEditable true
Float32Array subarray(int start, [int end]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -8671,7 +9072,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Float64Array
+/// @domName Float64Array; @docsEditable true
class Float64Array extends ArrayBufferView implements JavaScriptIndexingBehavior, List<num> native "*Float64Array" {
factory Float64Array(int length) =>
@@ -8685,13 +9086,12 @@
static const int BYTES_PER_ELEMENT = 8;
- /** @domName Float64Array.length */
+ /// @domName Float64Array.length; @docsEditable true
final int length;
num operator[](int index) => JS("num", "#[#]", this, index);
- void operator[]=(int index, num value) => JS("void", "#[#] = #", this, index, value);
- // -- start List<num> mixins.
+ void operator[]=(int index, num value) { JS("void", "#[#] = #", this, index, value); } // -- start List<num> mixins.
// num is the element type.
// From Iterable<num>:
@@ -8746,6 +9146,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ num get first => this[0];
+
num get last => this[length - 1];
num removeLast() {
@@ -8769,10 +9171,10 @@
// -- end List<num> mixins.
- /** @domName Float64Array.setElements */
+ /// @domName Float64Array.setElements; @docsEditable true
void setElements(Object array, [int offset]) native "set";
- /** @domName Float64Array.subarray */
+ /// @domName Float64Array.subarray; @docsEditable true
Float64Array subarray(int start, [int end]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -8780,16 +9182,16 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLFontElement
+/// @domName HTMLFontElement; @docsEditable true
class FontElement extends Element implements Element native "*HTMLFontElement" {
- /** @domName HTMLFontElement.color */
+ /// @domName HTMLFontElement.color; @docsEditable true
String color;
- /** @domName HTMLFontElement.face */
+ /// @domName HTMLFontElement.face; @docsEditable true
String face;
- /** @domName HTMLFontElement.size */
+ /// @domName HTMLFontElement.size; @docsEditable true
String size;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -8797,7 +9199,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName FormData
+/// @domName FormData; @docsEditable true
class FormData native "*FormData" {
factory FormData([FormElement form]) {
@@ -8807,7 +9209,7 @@
return _FormDataFactoryProvider.createFormData(form);
}
- /** @domName FormData.append */
+ /// @domName FormData.append; @docsEditable true
void append(String name, String value, String filename) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -8815,48 +9217,48 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLFormElement
+/// @domName HTMLFormElement; @docsEditable true
class FormElement extends Element implements Element native "*HTMLFormElement" {
- factory FormElement() => _Elements.createFormElement();
+ factory FormElement() => document.$dom_createElement("form");
- /** @domName HTMLFormElement.acceptCharset */
+ /// @domName HTMLFormElement.acceptCharset; @docsEditable true
String acceptCharset;
- /** @domName HTMLFormElement.action */
+ /// @domName HTMLFormElement.action; @docsEditable true
String action;
- /** @domName HTMLFormElement.autocomplete */
+ /// @domName HTMLFormElement.autocomplete; @docsEditable true
String autocomplete;
- /** @domName HTMLFormElement.encoding */
+ /// @domName HTMLFormElement.encoding; @docsEditable true
String encoding;
- /** @domName HTMLFormElement.enctype */
+ /// @domName HTMLFormElement.enctype; @docsEditable true
String enctype;
- /** @domName HTMLFormElement.length */
+ /// @domName HTMLFormElement.length; @docsEditable true
final int length;
- /** @domName HTMLFormElement.method */
+ /// @domName HTMLFormElement.method; @docsEditable true
String method;
- /** @domName HTMLFormElement.name */
+ /// @domName HTMLFormElement.name; @docsEditable true
String name;
- /** @domName HTMLFormElement.noValidate */
+ /// @domName HTMLFormElement.noValidate; @docsEditable true
bool noValidate;
- /** @domName HTMLFormElement.target */
+ /// @domName HTMLFormElement.target; @docsEditable true
String target;
- /** @domName HTMLFormElement.checkValidity */
+ /// @domName HTMLFormElement.checkValidity; @docsEditable true
bool checkValidity() native;
- /** @domName HTMLFormElement.reset */
+ /// @domName HTMLFormElement.reset; @docsEditable true
void reset() native;
- /** @domName HTMLFormElement.submit */
+ /// @domName HTMLFormElement.submit; @docsEditable true
void submit() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -8864,44 +9266,44 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLFrameElement
+/// @domName HTMLFrameElement; @docsEditable true
class FrameElement extends Element implements Element native "*HTMLFrameElement" {
- /** @domName HTMLFrameElement.contentWindow */
+ /// @domName HTMLFrameElement.contentWindow; @docsEditable true
Window get contentWindow => _convertNativeToDart_Window(this._contentWindow);
dynamic get _contentWindow => JS("dynamic", "#.contentWindow", this);
- /** @domName HTMLFrameElement.frameBorder */
+ /// @domName HTMLFrameElement.frameBorder; @docsEditable true
String frameBorder;
- /** @domName HTMLFrameElement.height */
+ /// @domName HTMLFrameElement.height; @docsEditable true
final int height;
- /** @domName HTMLFrameElement.location */
+ /// @domName HTMLFrameElement.location; @docsEditable true
String location;
- /** @domName HTMLFrameElement.longDesc */
+ /// @domName HTMLFrameElement.longDesc; @docsEditable true
String longDesc;
- /** @domName HTMLFrameElement.marginHeight */
+ /// @domName HTMLFrameElement.marginHeight; @docsEditable true
String marginHeight;
- /** @domName HTMLFrameElement.marginWidth */
+ /// @domName HTMLFrameElement.marginWidth; @docsEditable true
String marginWidth;
- /** @domName HTMLFrameElement.name */
+ /// @domName HTMLFrameElement.name; @docsEditable true
String name;
- /** @domName HTMLFrameElement.noResize */
+ /// @domName HTMLFrameElement.noResize; @docsEditable true
bool noResize;
- /** @domName HTMLFrameElement.scrolling */
+ /// @domName HTMLFrameElement.scrolling; @docsEditable true
String scrolling;
- /** @domName HTMLFrameElement.src */
+ /// @domName HTMLFrameElement.src; @docsEditable true
String src;
- /** @domName HTMLFrameElement.width */
+ /// @domName HTMLFrameElement.width; @docsEditable true
final int width;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -8909,19 +9311,17 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLFrameSetElement
+/// @domName HTMLFrameSetElement; @docsEditable true
class FrameSetElement extends Element implements Element native "*HTMLFrameSetElement" {
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
FrameSetElementEvents get on =>
new FrameSetElementEvents(this);
- /** @domName HTMLFrameSetElement.cols */
+ /// @domName HTMLFrameSetElement.cols; @docsEditable true
String cols;
- /** @domName HTMLFrameSetElement.rows */
+ /// @domName HTMLFrameSetElement.rows; @docsEditable true
String rows;
}
@@ -8959,10 +9359,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName GainNode
+/// @domName GainNode; @docsEditable true
class GainNode extends AudioNode native "*GainNode" {
- /** @domName GainNode.gain */
+ /// @domName GainNode.gain; @docsEditable true
final AudioGain gain;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -8970,22 +9370,22 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Gamepad
+/// @domName Gamepad; @docsEditable true
class Gamepad native "*Gamepad" {
- /** @domName Gamepad.axes */
+ /// @domName Gamepad.axes; @docsEditable true
final List<num> axes;
- /** @domName Gamepad.buttons */
+ /// @domName Gamepad.buttons; @docsEditable true
final List<num> buttons;
- /** @domName Gamepad.id */
+ /// @domName Gamepad.id; @docsEditable true
final String id;
- /** @domName Gamepad.index */
+ /// @domName Gamepad.index; @docsEditable true
final int index;
- /** @domName Gamepad.timestamp */
+ /// @domName Gamepad.timestamp; @docsEditable true
final int timestamp;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -8993,16 +9393,16 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Geolocation
+/// @domName Geolocation; @docsEditable true
class Geolocation native "*Geolocation" {
- /** @domName Geolocation.clearWatch */
+ /// @domName Geolocation.clearWatch; @docsEditable true
void clearWatch(int watchId) native;
- /** @domName Geolocation.getCurrentPosition */
+ /// @domName Geolocation.getCurrentPosition; @docsEditable true
void getCurrentPosition(PositionCallback successCallback, [PositionErrorCallback errorCallback, Object options]) native;
- /** @domName Geolocation.watchPosition */
+ /// @domName Geolocation.watchPosition; @docsEditable true
int watchPosition(PositionCallback successCallback, [PositionErrorCallback errorCallback, Object options]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -9010,13 +9410,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Geoposition
+/// @domName Geoposition; @docsEditable true
class Geoposition native "*Geoposition" {
- /** @domName Geoposition.coords */
+ /// @domName Geoposition.coords; @docsEditable true
final Coordinates coords;
- /** @domName Geoposition.timestamp */
+ /// @domName Geoposition.timestamp; @docsEditable true
final int timestamp;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -9024,21 +9424,21 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLHRElement
+/// @domName HTMLHRElement; @docsEditable true
class HRElement extends Element implements Element native "*HTMLHRElement" {
- factory HRElement() => _Elements.createHRElement();
+ factory HRElement() => document.$dom_createElement("hr");
- /** @domName HTMLHRElement.align */
+ /// @domName HTMLHRElement.align; @docsEditable true
String align;
- /** @domName HTMLHRElement.noShade */
+ /// @domName HTMLHRElement.noShade; @docsEditable true
bool noShade;
- /** @domName HTMLHRElement.size */
+ /// @domName HTMLHRElement.size; @docsEditable true
String size;
- /** @domName HTMLHRElement.width */
+ /// @domName HTMLHRElement.width; @docsEditable true
String width;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -9046,10 +9446,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLAllCollection
+/// @domName HTMLAllCollection; @docsEditable true
class HTMLAllCollection implements JavaScriptIndexingBehavior, List<Node> native "*HTMLAllCollection" {
- /** @domName HTMLAllCollection.length */
+ /// @domName HTMLAllCollection.length; @docsEditable true
final int length;
Node operator[](int index) => JS("Node", "#[#]", this, index);
@@ -9112,6 +9512,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ Node get first => this[0];
+
Node get last => this[length - 1];
Node removeLast() {
@@ -9135,13 +9537,14 @@
// -- end List<Node> mixins.
- /** @domName HTMLAllCollection.item */
+ /// @domName HTMLAllCollection.item; @docsEditable true
Node item(int index) native;
- /** @domName HTMLAllCollection.namedItem */
+ /// @domName HTMLAllCollection.namedItem; @docsEditable true
Node namedItem(String name) native;
- /** @domName HTMLAllCollection.tags */
+ /// @domName HTMLAllCollection.tags; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
List<Node> tags(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -9149,10 +9552,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLCollection
+/// @domName HTMLCollection; @docsEditable true
class HTMLCollection implements JavaScriptIndexingBehavior, List<Node> native "*HTMLCollection" {
- /** @domName HTMLCollection.length */
+ /// @domName HTMLCollection.length; @docsEditable true
final int length;
Node operator[](int index) => JS("Node", "#[#]", this, index);
@@ -9215,6 +9618,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ Node get first => this[0];
+
Node get last => this[length - 1];
Node removeLast() {
@@ -9238,10 +9643,10 @@
// -- end List<Node> mixins.
- /** @domName HTMLCollection.item */
+ /// @domName HTMLCollection.item; @docsEditable true
Node item(int index) native;
- /** @domName HTMLCollection.namedItem */
+ /// @domName HTMLCollection.namedItem; @docsEditable true
Node namedItem(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -9249,22 +9654,22 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLOptionsCollection
+/// @domName HTMLOptionsCollection; @docsEditable true
class HTMLOptionsCollection extends HTMLCollection native "*HTMLOptionsCollection" {
// Shadowing definition.
- /** @domName HTMLOptionsCollection.length */
+ /// @domName HTMLOptionsCollection.length; @docsEditable true
int get length => JS("int", "#.length", this);
- /** @domName HTMLOptionsCollection.length */
+ /// @domName HTMLOptionsCollection.length; @docsEditable true
void set length(int value) {
JS("void", "#.length = #", this, value);
}
- /** @domName HTMLOptionsCollection.selectedIndex */
+ /// @domName HTMLOptionsCollection.selectedIndex; @docsEditable true
int selectedIndex;
- /** @domName HTMLOptionsCollection.remove */
+ /// @domName HTMLOptionsCollection.remove; @docsEditable true
void remove(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -9272,16 +9677,16 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HashChangeEvent
+/// @domName HashChangeEvent; @docsEditable true
class HashChangeEvent extends Event native "*HashChangeEvent" {
- /** @domName HashChangeEvent.newURL */
+ /// @domName HashChangeEvent.newURL; @docsEditable true
final String newURL;
- /** @domName HashChangeEvent.oldURL */
+ /// @domName HashChangeEvent.oldURL; @docsEditable true
final String oldURL;
- /** @domName HashChangeEvent.initHashChangeEvent */
+ /// @domName HashChangeEvent.initHashChangeEvent; @docsEditable true
void initHashChangeEvent(String type, bool canBubble, bool cancelable, String oldURL, String newURL) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -9289,12 +9694,12 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLHeadElement
+/// @domName HTMLHeadElement; @docsEditable true
class HeadElement extends Element implements Element native "*HTMLHeadElement" {
- factory HeadElement() => _Elements.createHeadElement();
+ factory HeadElement() => document.$dom_createElement("head");
- /** @domName HTMLHeadElement.profile */
+ /// @domName HTMLHeadElement.profile; @docsEditable true
String profile;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -9302,22 +9707,22 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLHeadingElement
+/// @domName HTMLHeadingElement; @docsEditable true
class HeadingElement extends Element implements Element native "*HTMLHeadingElement" {
- factory HeadingElement.h1() => _Elements.createHeadingElement_h1();
+ factory HeadingElement.h1() => document.$dom_createElement("h1");
- factory HeadingElement.h2() => _Elements.createHeadingElement_h2();
+ factory HeadingElement.h2() => document.$dom_createElement("h2");
- factory HeadingElement.h3() => _Elements.createHeadingElement_h3();
+ factory HeadingElement.h3() => document.$dom_createElement("h3");
- factory HeadingElement.h4() => _Elements.createHeadingElement_h4();
+ factory HeadingElement.h4() => document.$dom_createElement("h4");
- factory HeadingElement.h5() => _Elements.createHeadingElement_h5();
+ factory HeadingElement.h5() => document.$dom_createElement("h5");
- factory HeadingElement.h6() => _Elements.createHeadingElement_h6();
+ factory HeadingElement.h6() => document.$dom_createElement("h6");
- /** @domName HTMLHeadingElement.align */
+ /// @domName HTMLHeadingElement.align; @docsEditable true
String align;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -9329,7 +9734,7 @@
class HtmlDocument extends Document native "*HTMLDocument" {
- /** @domName HTMLDocument.activeElement */
+ /// @domName HTMLDocument.activeElement; @docsEditable true
final Element activeElement;
/** @domName Document.body */
@@ -9409,10 +9814,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLHtmlElement
+/// @domName HTMLHtmlElement; @docsEditable true
class HtmlElement extends Element implements Element native "*HTMLHtmlElement" {
- factory HtmlElement() => _Elements.createHtmlElement();
+ factory HtmlElement() => document.$dom_createElement("html");
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
@@ -9420,18 +9825,18 @@
class HttpRequest extends EventTarget native "*XMLHttpRequest" {
- factory HttpRequest.get(String url, onSuccess(HttpRequest request)) =>
- _HttpRequestFactoryProvider.createHttpRequest_get(url, onSuccess);
+ factory HttpRequest.get(String url, onComplete(HttpRequest request)) =>
+ _HttpRequestFactoryProvider.createHttpRequest_get(url, onComplete);
- factory HttpRequest.getWithCredentials(String url, onSuccess(HttpRequest request)) =>
- _HttpRequestFactoryProvider.createHttpRequestgetWithCredentials(url, onSuccess);
+ factory HttpRequest.getWithCredentials(String url,
+ onComplete(HttpRequest request)) =>
+ _HttpRequestFactoryProvider.createHttpRequest_getWithCredentials(url,
+ onComplete);
factory HttpRequest() => _HttpRequestFactoryProvider.createHttpRequest();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
HttpRequestEvents get on =>
new HttpRequestEvents(this);
@@ -9445,61 +9850,62 @@
static const int UNSENT = 0;
- /** @domName XMLHttpRequest.readyState */
+ /// @domName XMLHttpRequest.readyState; @docsEditable true
final int readyState;
- /** @domName XMLHttpRequest.response */
+ /// @domName XMLHttpRequest.response; @docsEditable true
+ @Creates('ArrayBuffer|Blob|Document|=Object|=List|String|num')
final Object response;
- /** @domName XMLHttpRequest.responseText */
+ /// @domName XMLHttpRequest.responseText; @docsEditable true
final String responseText;
- /** @domName XMLHttpRequest.responseType */
+ /// @domName XMLHttpRequest.responseType; @docsEditable true
String responseType;
- /** @domName XMLHttpRequest.responseXML */
+ /// @domName XMLHttpRequest.responseXML; @docsEditable true
final Document responseXML;
- /** @domName XMLHttpRequest.status */
+ /// @domName XMLHttpRequest.status; @docsEditable true
final int status;
- /** @domName XMLHttpRequest.statusText */
+ /// @domName XMLHttpRequest.statusText; @docsEditable true
final String statusText;
- /** @domName XMLHttpRequest.upload */
+ /// @domName XMLHttpRequest.upload; @docsEditable true
final HttpRequestUpload upload;
- /** @domName XMLHttpRequest.withCredentials */
+ /// @domName XMLHttpRequest.withCredentials; @docsEditable true
bool withCredentials;
- /** @domName XMLHttpRequest.abort */
+ /// @domName XMLHttpRequest.abort; @docsEditable true
void abort() native;
- /** @domName XMLHttpRequest.addEventListener */
+ /// @domName XMLHttpRequest.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName XMLHttpRequest.dispatchEvent */
+ /// @domName XMLHttpRequest.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event evt) native "dispatchEvent";
- /** @domName XMLHttpRequest.getAllResponseHeaders */
+ /// @domName XMLHttpRequest.getAllResponseHeaders; @docsEditable true
String getAllResponseHeaders() native;
- /** @domName XMLHttpRequest.getResponseHeader */
+ /// @domName XMLHttpRequest.getResponseHeader; @docsEditable true
String getResponseHeader(String header) native;
- /** @domName XMLHttpRequest.open */
+ /// @domName XMLHttpRequest.open; @docsEditable true
void open(String method, String url, [bool async, String user, String password]) native;
- /** @domName XMLHttpRequest.overrideMimeType */
+ /// @domName XMLHttpRequest.overrideMimeType; @docsEditable true
void overrideMimeType(String override) native;
- /** @domName XMLHttpRequest.removeEventListener */
+ /// @domName XMLHttpRequest.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
- /** @domName XMLHttpRequest.send */
+ /// @domName XMLHttpRequest.send; @docsEditable true
void send([data]) native;
- /** @domName XMLHttpRequest.setRequestHeader */
+ /// @domName XMLHttpRequest.setRequestHeader; @docsEditable true
void setRequestHeader(String header, String value) native;
}
@@ -9526,23 +9932,23 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName XMLHttpRequestException
+/// @domName XMLHttpRequestException; @docsEditable true
class HttpRequestException native "*XMLHttpRequestException" {
static const int ABORT_ERR = 102;
static const int NETWORK_ERR = 101;
- /** @domName XMLHttpRequestException.code */
+ /// @domName XMLHttpRequestException.code; @docsEditable true
final int code;
- /** @domName XMLHttpRequestException.message */
+ /// @domName XMLHttpRequestException.message; @docsEditable true
final String message;
- /** @domName XMLHttpRequestException.name */
+ /// @domName XMLHttpRequestException.name; @docsEditable true
final String name;
- /** @domName XMLHttpRequestException.toString */
+ /// @domName XMLHttpRequestException.toString; @docsEditable true
String toString() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -9550,13 +9956,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName XMLHttpRequestProgressEvent
+/// @domName XMLHttpRequestProgressEvent; @docsEditable true
class HttpRequestProgressEvent extends ProgressEvent native "*XMLHttpRequestProgressEvent" {
- /** @domName XMLHttpRequestProgressEvent.position */
+ /// @domName XMLHttpRequestProgressEvent.position; @docsEditable true
final int position;
- /** @domName XMLHttpRequestProgressEvent.totalSize */
+ /// @domName XMLHttpRequestProgressEvent.totalSize; @docsEditable true
final int totalSize;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -9564,22 +9970,20 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName XMLHttpRequestUpload
+/// @domName XMLHttpRequestUpload; @docsEditable true
class HttpRequestUpload extends EventTarget native "*XMLHttpRequestUpload" {
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
HttpRequestUploadEvents get on =>
new HttpRequestUploadEvents(this);
- /** @domName XMLHttpRequestUpload.addEventListener */
+ /// @domName XMLHttpRequestUpload.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName XMLHttpRequestUpload.dispatchEvent */
+ /// @domName XMLHttpRequestUpload.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event evt) native "dispatchEvent";
- /** @domName XMLHttpRequestUpload.removeEventListener */
+ /// @domName XMLHttpRequestUpload.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
}
@@ -9603,7 +10007,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName IDBAny
+/// @domName IDBAny; @docsEditable true
class IDBAny native "*IDBAny" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -9611,7 +10015,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName IDBCursor
+/// @domName IDBCursor; @docsEditable true
class IDBCursor native "*IDBCursor" {
static const int NEXT = 0;
@@ -9622,22 +10026,23 @@
static const int PREV_NO_DUPLICATE = 3;
- /** @domName IDBCursor.direction */
+ /// @domName IDBCursor.direction; @docsEditable true
final String direction;
- /** @domName IDBCursor.key */
+ /// @domName IDBCursor.key; @docsEditable true
+ @_annotation_Creates_IDBKey @_annotation_Returns_IDBKey
final Object key;
- /** @domName IDBCursor.primaryKey */
+ /// @domName IDBCursor.primaryKey; @docsEditable true
final Object primaryKey;
- /** @domName IDBCursor.source */
+ /// @domName IDBCursor.source; @docsEditable true
final dynamic source;
- /** @domName IDBCursor.advance */
+ /// @domName IDBCursor.advance; @docsEditable true
void advance(int count) native;
- /** @domName IDBCursor.continueFunction */
+ /// @domName IDBCursor.continueFunction; @docsEditable true
void continueFunction([/*IDBKey*/ key]) {
if (?key) {
var key_1 = _convertDartToNative_IDBKey(key);
@@ -9650,10 +10055,10 @@
void _continueFunction_1(key) native "continue";
void _continueFunction_2() native "continue";
- /** @domName IDBCursor.delete */
+ /// @domName IDBCursor.delete; @docsEditable true
IDBRequest delete() native;
- /** @domName IDBCursor.update */
+ /// @domName IDBCursor.update; @docsEditable true
IDBRequest update(/*any*/ value) {
var value_1 = _convertDartToNative_SerializedScriptValue(value);
return _update_1(value_1);
@@ -9665,10 +10070,11 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName IDBCursorWithValue
+/// @domName IDBCursorWithValue; @docsEditable true
class IDBCursorWithValue extends IDBCursor native "*IDBCursorWithValue" {
- /** @domName IDBCursorWithValue.value */
+ /// @domName IDBCursorWithValue.value; @docsEditable true
+ @_annotation_Creates_SerializedScriptValue @_annotation_Returns_SerializedScriptValue
final Object value;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -9720,28 +10126,27 @@
JS('bool', 'typeof(#.mode) === "number"', txn);
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
IDBDatabaseEvents get on =>
new IDBDatabaseEvents(this);
- /** @domName IDBDatabase.name */
+ /// @domName IDBDatabase.name; @docsEditable true
final String name;
- /** @domName IDBDatabase.objectStoreNames */
+ /// @domName IDBDatabase.objectStoreNames; @docsEditable true
+ @Returns('_DOMStringList') @Creates('_DOMStringList')
final List<String> objectStoreNames;
- /** @domName IDBDatabase.version */
+ /// @domName IDBDatabase.version; @docsEditable true
final dynamic version;
- /** @domName IDBDatabase.addEventListener */
+ /// @domName IDBDatabase.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName IDBDatabase.close */
+ /// @domName IDBDatabase.close; @docsEditable true
void close() native;
- /** @domName IDBDatabase.createObjectStore */
+ /// @domName IDBDatabase.createObjectStore; @docsEditable true
IDBObjectStore createObjectStore(String name, [Map options]) {
if (?options) {
var options_1 = _convertDartToNative_Dictionary(options);
@@ -9752,16 +10157,16 @@
IDBObjectStore _createObjectStore_1(name, options) native "createObjectStore";
IDBObjectStore _createObjectStore_2(name) native "createObjectStore";
- /** @domName IDBDatabase.deleteObjectStore */
+ /// @domName IDBDatabase.deleteObjectStore; @docsEditable true
void deleteObjectStore(String name) native;
- /** @domName IDBDatabase.dispatchEvent */
+ /// @domName IDBDatabase.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event evt) native "dispatchEvent";
- /** @domName IDBDatabase.removeEventListener */
+ /// @domName IDBDatabase.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
- /** @domName IDBDatabase.setVersion */
+ /// @domName IDBDatabase.setVersion; @docsEditable true
IDBVersionChangeRequest setVersion(String version) native;
}
@@ -9783,7 +10188,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName IDBDatabaseException
+/// @domName IDBDatabaseException; @docsEditable true
class IDBDatabaseException native "*IDBDatabaseException" {
static const int ABORT_ERR = 20;
@@ -9812,16 +10217,16 @@
static const int VER_ERR = 12;
- /** @domName IDBDatabaseException.code */
+ /// @domName IDBDatabaseException.code; @docsEditable true
final int code;
- /** @domName IDBDatabaseException.message */
+ /// @domName IDBDatabaseException.message; @docsEditable true
final String message;
- /** @domName IDBDatabaseException.name */
+ /// @domName IDBDatabaseException.name; @docsEditable true
final String name;
- /** @domName IDBDatabaseException.toString */
+ /// @domName IDBDatabaseException.toString; @docsEditable true
String toString() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -9829,10 +10234,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName IDBFactory
+/// @domName IDBFactory; @docsEditable true
class IDBFactory native "*IDBFactory" {
- /** @domName IDBFactory.cmp */
+ /// @domName IDBFactory.cmp; @docsEditable true
int cmp(/*IDBKey*/ first, /*IDBKey*/ second) {
var first_1 = _convertDartToNative_IDBKey(first);
var second_2 = _convertDartToNative_IDBKey(second);
@@ -9840,13 +10245,14 @@
}
int _cmp_1(first, second) native "cmp";
- /** @domName IDBFactory.deleteDatabase */
+ /// @domName IDBFactory.deleteDatabase; @docsEditable true
IDBVersionChangeRequest deleteDatabase(String name) native;
- /** @domName IDBFactory.open */
+ /// @domName IDBFactory.open; @docsEditable true
+ @Returns('IDBRequest') @Creates('IDBRequest') @Creates('IDBDatabase')
IDBOpenDBRequest open(String name, [int version]) native;
- /** @domName IDBFactory.webkitGetDatabaseNames */
+ /// @domName IDBFactory.webkitGetDatabaseNames; @docsEditable true
IDBRequest webkitGetDatabaseNames() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -9854,25 +10260,25 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName IDBIndex
+/// @domName IDBIndex; @docsEditable true
class IDBIndex native "*IDBIndex" {
- /** @domName IDBIndex.keyPath */
+ /// @domName IDBIndex.keyPath; @docsEditable true
final dynamic keyPath;
- /** @domName IDBIndex.multiEntry */
+ /// @domName IDBIndex.multiEntry; @docsEditable true
final bool multiEntry;
- /** @domName IDBIndex.name */
+ /// @domName IDBIndex.name; @docsEditable true
final String name;
- /** @domName IDBIndex.objectStore */
+ /// @domName IDBIndex.objectStore; @docsEditable true
final IDBObjectStore objectStore;
- /** @domName IDBIndex.unique */
+ /// @domName IDBIndex.unique; @docsEditable true
final bool unique;
- /** @domName IDBIndex.count */
+ /// @domName IDBIndex.count; @docsEditable true
IDBRequest count([key_OR_range]) {
if (!?key_OR_range) {
return _count_1();
@@ -9884,13 +10290,13 @@
var key_1 = _convertDartToNative_IDBKey(key_OR_range);
return _count_3(key_1);
}
- throw const Exception("Incorrect number or type of arguments");
+ throw new ArgumentError("Incorrect number or type of arguments");
}
IDBRequest _count_1() native "count";
IDBRequest _count_2(IDBKeyRange range) native "count";
IDBRequest _count_3(key) native "count";
- /** @domName IDBIndex.get */
+ /// @domName IDBIndex.get; @docsEditable true
IDBRequest get(key) {
if ((?key && (key is IDBKeyRange || key == null))) {
return _get_1(key);
@@ -9899,12 +10305,14 @@
var key_1 = _convertDartToNative_IDBKey(key);
return _get_2(key_1);
}
- throw const Exception("Incorrect number or type of arguments");
+ throw new ArgumentError("Incorrect number or type of arguments");
}
+ @Returns('IDBRequest') @Creates('IDBRequest') @_annotation_Creates_SerializedScriptValue
IDBRequest _get_1(IDBKeyRange key) native "get";
+ @Returns('IDBRequest') @Creates('IDBRequest') @_annotation_Creates_SerializedScriptValue
IDBRequest _get_2(key) native "get";
- /** @domName IDBIndex.getKey */
+ /// @domName IDBIndex.getKey; @docsEditable true
IDBRequest getKey(key) {
if ((?key && (key is IDBKeyRange || key == null))) {
return _getKey_1(key);
@@ -9913,12 +10321,14 @@
var key_1 = _convertDartToNative_IDBKey(key);
return _getKey_2(key_1);
}
- throw const Exception("Incorrect number or type of arguments");
+ throw new ArgumentError("Incorrect number or type of arguments");
}
+ @Returns('IDBRequest') @Creates('IDBRequest') @_annotation_Creates_SerializedScriptValue @Creates('IDBObjectStore')
IDBRequest _getKey_1(IDBKeyRange key) native "getKey";
+ @Returns('IDBRequest') @Creates('IDBRequest') @_annotation_Creates_SerializedScriptValue @Creates('IDBObjectStore')
IDBRequest _getKey_2(key) native "getKey";
- /** @domName IDBIndex.openCursor */
+ /// @domName IDBIndex.openCursor; @docsEditable true
IDBRequest openCursor([key_OR_range, String direction]) {
if (!?key_OR_range &&
!?direction) {
@@ -9940,15 +10350,20 @@
var key_2 = _convertDartToNative_IDBKey(key_OR_range);
return _openCursor_5(key_2, direction);
}
- throw const Exception("Incorrect number or type of arguments");
+ throw new ArgumentError("Incorrect number or type of arguments");
}
+ @Returns('IDBRequest') @Creates('IDBRequest') @Creates('IDBCursor')
IDBRequest _openCursor_1() native "openCursor";
+ @Returns('IDBRequest') @Creates('IDBRequest') @Creates('IDBCursor')
IDBRequest _openCursor_2(IDBKeyRange range) native "openCursor";
+ @Returns('IDBRequest') @Creates('IDBRequest') @Creates('IDBCursor')
IDBRequest _openCursor_3(IDBKeyRange range, direction) native "openCursor";
+ @Returns('IDBRequest') @Creates('IDBRequest') @Creates('IDBCursor')
IDBRequest _openCursor_4(key) native "openCursor";
+ @Returns('IDBRequest') @Creates('IDBRequest') @Creates('IDBCursor')
IDBRequest _openCursor_5(key, direction) native "openCursor";
- /** @domName IDBIndex.openKeyCursor */
+ /// @domName IDBIndex.openKeyCursor; @docsEditable true
IDBRequest openKeyCursor([key_OR_range, String direction]) {
if (!?key_OR_range &&
!?direction) {
@@ -9970,12 +10385,17 @@
var key_2 = _convertDartToNative_IDBKey(key_OR_range);
return _openKeyCursor_5(key_2, direction);
}
- throw const Exception("Incorrect number or type of arguments");
+ throw new ArgumentError("Incorrect number or type of arguments");
}
+ @Returns('IDBRequest') @Creates('IDBRequest') @Creates('IDBCursor')
IDBRequest _openKeyCursor_1() native "openKeyCursor";
+ @Returns('IDBRequest') @Creates('IDBRequest') @Creates('IDBCursor')
IDBRequest _openKeyCursor_2(IDBKeyRange range) native "openKeyCursor";
+ @Returns('IDBRequest') @Creates('IDBRequest') @Creates('IDBCursor')
IDBRequest _openKeyCursor_3(IDBKeyRange range, direction) native "openKeyCursor";
+ @Returns('IDBRequest') @Creates('IDBRequest') @Creates('IDBCursor')
IDBRequest _openKeyCursor_4(key) native "openKeyCursor";
+ @Returns('IDBRequest') @Creates('IDBRequest') @Creates('IDBCursor')
IDBRequest _openKeyCursor_5(key, direction) native "openKeyCursor";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -9983,7 +10403,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName IDBKey
+/// @domName IDBKey; @docsEditable true
class IDBKey native "*IDBKey" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -10019,21 +10439,21 @@
lower, upper, lowerOpen, upperOpen);
- /** @domName IDBKeyRange.lower */
+ /// @domName IDBKeyRange.lower; @docsEditable true
dynamic get lower => _convertNativeToDart_IDBKey(this._lower);
dynamic get _lower => JS("dynamic", "#.lower", this);
- /** @domName IDBKeyRange.lowerOpen */
+ /// @domName IDBKeyRange.lowerOpen; @docsEditable true
final bool lowerOpen;
- /** @domName IDBKeyRange.upper */
+ /// @domName IDBKeyRange.upper; @docsEditable true
dynamic get upper => _convertNativeToDart_IDBKey(this._upper);
dynamic get _upper => JS("dynamic", "#.upper", this);
- /** @domName IDBKeyRange.upperOpen */
+ /// @domName IDBKeyRange.upperOpen; @docsEditable true
final bool upperOpen;
- /** @domName IDBKeyRange.bound_ */
+ /// @domName IDBKeyRange.bound_; @docsEditable true
static IDBKeyRange bound_(/*IDBKey*/ lower, /*IDBKey*/ upper, [bool lowerOpen, bool upperOpen]) {
if (?upperOpen) {
var lower_1 = _convertDartToNative_IDBKey(lower);
@@ -10049,11 +10469,11 @@
var upper_6 = _convertDartToNative_IDBKey(upper);
return _bound__3(lower_5, upper_6);
}
- IDBKeyRange _bound__1(lower, upper, lowerOpen, upperOpen) native "bound";
- IDBKeyRange _bound__2(lower, upper, lowerOpen) native "bound";
- IDBKeyRange _bound__3(lower, upper) native "bound";
+ static IDBKeyRange _bound__1(lower, upper, lowerOpen, upperOpen) native "bound";
+ static IDBKeyRange _bound__2(lower, upper, lowerOpen) native "bound";
+ static IDBKeyRange _bound__3(lower, upper) native "bound";
- /** @domName IDBKeyRange.lowerBound_ */
+ /// @domName IDBKeyRange.lowerBound_; @docsEditable true
static IDBKeyRange lowerBound_(/*IDBKey*/ bound, [bool open]) {
if (?open) {
var bound_1 = _convertDartToNative_IDBKey(bound);
@@ -10062,17 +10482,17 @@
var bound_2 = _convertDartToNative_IDBKey(bound);
return _lowerBound__2(bound_2);
}
- IDBKeyRange _lowerBound__1(bound, open) native "lowerBound";
- IDBKeyRange _lowerBound__2(bound) native "lowerBound";
+ static IDBKeyRange _lowerBound__1(bound, open) native "lowerBound";
+ static IDBKeyRange _lowerBound__2(bound) native "lowerBound";
- /** @domName IDBKeyRange.only_ */
+ /// @domName IDBKeyRange.only_; @docsEditable true
static IDBKeyRange only_(/*IDBKey*/ value) {
var value_1 = _convertDartToNative_IDBKey(value);
return _only__1(value_1);
}
- IDBKeyRange _only__1(value) native "only";
+ static IDBKeyRange _only__1(value) native "only";
- /** @domName IDBKeyRange.upperBound_ */
+ /// @domName IDBKeyRange.upperBound_; @docsEditable true
static IDBKeyRange upperBound_(/*IDBKey*/ bound, [bool open]) {
if (?open) {
var bound_1 = _convertDartToNative_IDBKey(bound);
@@ -10081,8 +10501,8 @@
var bound_2 = _convertDartToNative_IDBKey(bound);
return _upperBound__2(bound_2);
}
- IDBKeyRange _upperBound__1(bound, open) native "upperBound";
- IDBKeyRange _upperBound__2(bound) native "upperBound";
+ static IDBKeyRange _upperBound__1(bound, open) native "upperBound";
+ static IDBKeyRange _upperBound__2(bound) native "upperBound";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -10090,25 +10510,26 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName IDBObjectStore
+/// @domName IDBObjectStore; @docsEditable true
class IDBObjectStore native "*IDBObjectStore" {
- /** @domName IDBObjectStore.autoIncrement */
+ /// @domName IDBObjectStore.autoIncrement; @docsEditable true
final bool autoIncrement;
- /** @domName IDBObjectStore.indexNames */
+ /// @domName IDBObjectStore.indexNames; @docsEditable true
+ @Returns('_DOMStringList') @Creates('_DOMStringList')
final List<String> indexNames;
- /** @domName IDBObjectStore.keyPath */
+ /// @domName IDBObjectStore.keyPath; @docsEditable true
final dynamic keyPath;
- /** @domName IDBObjectStore.name */
+ /// @domName IDBObjectStore.name; @docsEditable true
final String name;
- /** @domName IDBObjectStore.transaction */
+ /// @domName IDBObjectStore.transaction; @docsEditable true
final IDBTransaction transaction;
- /** @domName IDBObjectStore.add */
+ /// @domName IDBObjectStore.add; @docsEditable true
IDBRequest add(/*any*/ value, [/*IDBKey*/ key]) {
if (?key) {
var value_1 = _convertDartToNative_SerializedScriptValue(value);
@@ -10118,13 +10539,15 @@
var value_3 = _convertDartToNative_SerializedScriptValue(value);
return _add_2(value_3);
}
+ @Returns('IDBRequest') @Creates('IDBRequest') @_annotation_Creates_IDBKey
IDBRequest _add_1(value, key) native "add";
+ @Returns('IDBRequest') @Creates('IDBRequest') @_annotation_Creates_IDBKey
IDBRequest _add_2(value) native "add";
- /** @domName IDBObjectStore.clear */
+ /// @domName IDBObjectStore.clear; @docsEditable true
IDBRequest clear() native;
- /** @domName IDBObjectStore.count */
+ /// @domName IDBObjectStore.count; @docsEditable true
IDBRequest count([key_OR_range]) {
if (!?key_OR_range) {
return _count_1();
@@ -10136,13 +10559,13 @@
var key_1 = _convertDartToNative_IDBKey(key_OR_range);
return _count_3(key_1);
}
- throw const Exception("Incorrect number or type of arguments");
+ throw new ArgumentError("Incorrect number or type of arguments");
}
IDBRequest _count_1() native "count";
IDBRequest _count_2(IDBKeyRange range) native "count";
IDBRequest _count_3(key) native "count";
- /** @domName IDBObjectStore.createIndex */
+ /// @domName IDBObjectStore.createIndex; @docsEditable true
IDBIndex createIndex(String name, keyPath, [Map options]) {
if ((?keyPath && (keyPath is List<String> || keyPath == null)) &&
!?options) {
@@ -10162,14 +10585,14 @@
var options_4 = _convertDartToNative_Dictionary(options);
return _createIndex_4(name, keyPath, options_4);
}
- throw const Exception("Incorrect number or type of arguments");
+ throw new ArgumentError("Incorrect number or type of arguments");
}
IDBIndex _createIndex_1(name, List keyPath) native "createIndex";
IDBIndex _createIndex_2(name, List keyPath, options) native "createIndex";
IDBIndex _createIndex_3(name, String keyPath) native "createIndex";
IDBIndex _createIndex_4(name, String keyPath, options) native "createIndex";
- /** @domName IDBObjectStore.delete */
+ /// @domName IDBObjectStore.delete; @docsEditable true
IDBRequest delete(key_OR_keyRange) {
if ((?key_OR_keyRange && (key_OR_keyRange is IDBKeyRange || key_OR_keyRange == null))) {
return _delete_1(key_OR_keyRange);
@@ -10178,15 +10601,15 @@
var key_1 = _convertDartToNative_IDBKey(key_OR_keyRange);
return _delete_2(key_1);
}
- throw const Exception("Incorrect number or type of arguments");
+ throw new ArgumentError("Incorrect number or type of arguments");
}
IDBRequest _delete_1(IDBKeyRange keyRange) native "delete";
IDBRequest _delete_2(key) native "delete";
- /** @domName IDBObjectStore.deleteIndex */
+ /// @domName IDBObjectStore.deleteIndex; @docsEditable true
void deleteIndex(String name) native;
- /** @domName IDBObjectStore.getObject */
+ /// @domName IDBObjectStore.getObject; @docsEditable true
IDBRequest getObject(key) {
if ((?key && (key is IDBKeyRange || key == null))) {
return _getObject_1(key);
@@ -10195,15 +10618,17 @@
var key_1 = _convertDartToNative_IDBKey(key);
return _getObject_2(key_1);
}
- throw const Exception("Incorrect number or type of arguments");
+ throw new ArgumentError("Incorrect number or type of arguments");
}
+ @Returns('IDBRequest') @Creates('IDBRequest') @_annotation_Creates_SerializedScriptValue
IDBRequest _getObject_1(IDBKeyRange key) native "get";
+ @Returns('IDBRequest') @Creates('IDBRequest') @_annotation_Creates_SerializedScriptValue
IDBRequest _getObject_2(key) native "get";
- /** @domName IDBObjectStore.index */
+ /// @domName IDBObjectStore.index; @docsEditable true
IDBIndex index(String name) native;
- /** @domName IDBObjectStore.openCursor */
+ /// @domName IDBObjectStore.openCursor; @docsEditable true
IDBRequest openCursor([key_OR_range, String direction]) {
if (!?key_OR_range &&
!?direction) {
@@ -10225,15 +10650,20 @@
var key_2 = _convertDartToNative_IDBKey(key_OR_range);
return _openCursor_5(key_2, direction);
}
- throw const Exception("Incorrect number or type of arguments");
+ throw new ArgumentError("Incorrect number or type of arguments");
}
+ @Returns('IDBRequest') @Creates('IDBRequest') @Creates('IDBCursor')
IDBRequest _openCursor_1() native "openCursor";
+ @Returns('IDBRequest') @Creates('IDBRequest') @Creates('IDBCursor')
IDBRequest _openCursor_2(IDBKeyRange range) native "openCursor";
+ @Returns('IDBRequest') @Creates('IDBRequest') @Creates('IDBCursor')
IDBRequest _openCursor_3(IDBKeyRange range, direction) native "openCursor";
+ @Returns('IDBRequest') @Creates('IDBRequest') @Creates('IDBCursor')
IDBRequest _openCursor_4(key) native "openCursor";
+ @Returns('IDBRequest') @Creates('IDBRequest') @Creates('IDBCursor')
IDBRequest _openCursor_5(key, direction) native "openCursor";
- /** @domName IDBObjectStore.put */
+ /// @domName IDBObjectStore.put; @docsEditable true
IDBRequest put(/*any*/ value, [/*IDBKey*/ key]) {
if (?key) {
var value_1 = _convertDartToNative_SerializedScriptValue(value);
@@ -10243,7 +10673,9 @@
var value_3 = _convertDartToNative_SerializedScriptValue(value);
return _put_2(value_3);
}
+ @Returns('IDBRequest') @Creates('IDBRequest') @_annotation_Creates_IDBKey
IDBRequest _put_1(value, key) native "put";
+ @Returns('IDBRequest') @Creates('IDBRequest') @_annotation_Creates_IDBKey
IDBRequest _put_2(value) native "put";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -10251,12 +10683,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName IDBOpenDBRequest
+/// @domName IDBOpenDBRequest; @docsEditable true
class IDBOpenDBRequest extends IDBRequest implements EventTarget native "*IDBOpenDBRequest" {
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
IDBOpenDBRequestEvents get on =>
new IDBOpenDBRequestEvents(this);
}
@@ -10273,44 +10703,43 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName IDBRequest
+/// @domName IDBRequest; @docsEditable true
class IDBRequest extends EventTarget native "*IDBRequest" {
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
IDBRequestEvents get on =>
new IDBRequestEvents(this);
- /** @domName IDBRequest.error */
+ /// @domName IDBRequest.error; @docsEditable true
final DOMError error;
- /** @domName IDBRequest.errorCode */
+ /// @domName IDBRequest.errorCode; @docsEditable true
final int errorCode;
- /** @domName IDBRequest.readyState */
+ /// @domName IDBRequest.readyState; @docsEditable true
final String readyState;
- /** @domName IDBRequest.result */
+ /// @domName IDBRequest.result; @docsEditable true
dynamic get result => _convertNativeToDart_IDBAny(this._result);
dynamic get _result => JS("dynamic", "#.result", this);
- /** @domName IDBRequest.source */
+ /// @domName IDBRequest.source; @docsEditable true
+ @Creates('Null')
final dynamic source;
- /** @domName IDBRequest.transaction */
+ /// @domName IDBRequest.transaction; @docsEditable true
final IDBTransaction transaction;
- /** @domName IDBRequest.webkitErrorMessage */
+ /// @domName IDBRequest.webkitErrorMessage; @docsEditable true
final String webkitErrorMessage;
- /** @domName IDBRequest.addEventListener */
+ /// @domName IDBRequest.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName IDBRequest.dispatchEvent */
+ /// @domName IDBRequest.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event evt) native "dispatchEvent";
- /** @domName IDBRequest.removeEventListener */
+ /// @domName IDBRequest.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
}
@@ -10326,12 +10755,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName IDBTransaction
+/// @domName IDBTransaction; @docsEditable true
class IDBTransaction extends EventTarget native "*IDBTransaction" {
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
IDBTransactionEvents get on =>
new IDBTransactionEvents(this);
@@ -10341,28 +10768,28 @@
static const int VERSION_CHANGE = 2;
- /** @domName IDBTransaction.db */
+ /// @domName IDBTransaction.db; @docsEditable true
final IDBDatabase db;
- /** @domName IDBTransaction.error */
+ /// @domName IDBTransaction.error; @docsEditable true
final DOMError error;
- /** @domName IDBTransaction.mode */
+ /// @domName IDBTransaction.mode; @docsEditable true
final String mode;
- /** @domName IDBTransaction.abort */
+ /// @domName IDBTransaction.abort; @docsEditable true
void abort() native;
- /** @domName IDBTransaction.addEventListener */
+ /// @domName IDBTransaction.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName IDBTransaction.dispatchEvent */
+ /// @domName IDBTransaction.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event evt) native "dispatchEvent";
- /** @domName IDBTransaction.objectStore */
+ /// @domName IDBTransaction.objectStore; @docsEditable true
IDBObjectStore objectStore(String name) native;
- /** @domName IDBTransaction.removeEventListener */
+ /// @domName IDBTransaction.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
}
@@ -10380,13 +10807,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName IDBVersionChangeEvent
+/// @domName IDBVersionChangeEvent; @docsEditable true
class IDBUpgradeNeededEvent extends Event native "*IDBVersionChangeEvent" {
- /** @domName IDBVersionChangeEvent.newVersion */
+ /// @domName IDBVersionChangeEvent.newVersion; @docsEditable true
final int newVersion;
- /** @domName IDBVersionChangeEvent.oldVersion */
+ /// @domName IDBVersionChangeEvent.oldVersion; @docsEditable true
final int oldVersion;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -10394,10 +10821,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName IDBVersionChangeEvent
+/// @domName IDBVersionChangeEvent; @docsEditable true
class IDBVersionChangeEvent extends Event native "*IDBVersionChangeEvent" {
- /** @domName IDBVersionChangeEvent.version */
+ /// @domName IDBVersionChangeEvent.version; @docsEditable true
final String version;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -10405,12 +10832,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName IDBVersionChangeRequest
+/// @domName IDBVersionChangeRequest; @docsEditable true
class IDBVersionChangeRequest extends IDBRequest implements EventTarget native "*IDBVersionChangeRequest" {
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
IDBVersionChangeRequestEvents get on =>
new IDBVersionChangeRequestEvents(this);
}
@@ -10425,49 +10850,49 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLIFrameElement
+/// @domName HTMLIFrameElement; @docsEditable true
class IFrameElement extends Element implements Element native "*HTMLIFrameElement" {
- factory IFrameElement() => _Elements.createIFrameElement();
+ factory IFrameElement() => document.$dom_createElement("iframe");
- /** @domName HTMLIFrameElement.align */
+ /// @domName HTMLIFrameElement.align; @docsEditable true
String align;
- /** @domName HTMLIFrameElement.contentWindow */
+ /// @domName HTMLIFrameElement.contentWindow; @docsEditable true
Window get contentWindow => _convertNativeToDart_Window(this._contentWindow);
dynamic get _contentWindow => JS("dynamic", "#.contentWindow", this);
- /** @domName HTMLIFrameElement.frameBorder */
+ /// @domName HTMLIFrameElement.frameBorder; @docsEditable true
String frameBorder;
- /** @domName HTMLIFrameElement.height */
+ /// @domName HTMLIFrameElement.height; @docsEditable true
String height;
- /** @domName HTMLIFrameElement.longDesc */
+ /// @domName HTMLIFrameElement.longDesc; @docsEditable true
String longDesc;
- /** @domName HTMLIFrameElement.marginHeight */
+ /// @domName HTMLIFrameElement.marginHeight; @docsEditable true
String marginHeight;
- /** @domName HTMLIFrameElement.marginWidth */
+ /// @domName HTMLIFrameElement.marginWidth; @docsEditable true
String marginWidth;
- /** @domName HTMLIFrameElement.name */
+ /// @domName HTMLIFrameElement.name; @docsEditable true
String name;
- /** @domName HTMLIFrameElement.sandbox */
+ /// @domName HTMLIFrameElement.sandbox; @docsEditable true
String sandbox;
- /** @domName HTMLIFrameElement.scrolling */
+ /// @domName HTMLIFrameElement.scrolling; @docsEditable true
String scrolling;
- /** @domName HTMLIFrameElement.src */
+ /// @domName HTMLIFrameElement.src; @docsEditable true
String src;
- /** @domName HTMLIFrameElement.srcdoc */
+ /// @domName HTMLIFrameElement.srcdoc; @docsEditable true
String srcdoc;
- /** @domName HTMLIFrameElement.width */
+ /// @domName HTMLIFrameElement.width; @docsEditable true
String width;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -10483,15 +10908,15 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName IceCandidate
+/// @domName IceCandidate; @docsEditable true
class IceCandidate native "*IceCandidate" {
factory IceCandidate(String label, String candidateLine) => _IceCandidateFactoryProvider.createIceCandidate(label, candidateLine);
- /** @domName IceCandidate.label */
+ /// @domName IceCandidate.label; @docsEditable true
final String label;
- /** @domName IceCandidate.toSdp */
+ /// @domName IceCandidate.toSdp; @docsEditable true
String toSdp() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -10499,16 +10924,16 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName ImageData
+/// @domName ImageData; @docsEditable true
class ImageData native "*ImageData" {
- /** @domName ImageData.data */
+ /// @domName ImageData.data; @docsEditable true
final Uint8ClampedArray data;
- /** @domName ImageData.height */
+ /// @domName ImageData.height; @docsEditable true
final int height;
- /** @domName ImageData.width */
+ /// @domName ImageData.width; @docsEditable true
final int width;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -10516,77 +10941,72 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLImageElement
+/// @domName HTMLImageElement; @docsEditable true
class ImageElement extends Element implements Element native "*HTMLImageElement" {
factory ImageElement({String src, int width, int height}) {
- if (!?src) {
- return _Elements.createImageElement();
- }
- if (!?width) {
- return _Elements.createImageElement(src);
- }
- if (!?height) {
- return _Elements.createImageElement(src, width);
- }
- return _Elements.createImageElement(src, width, height);
+ var e = document.$dom_createElement("img");
+ if (src != null) e.src = src;
+ if (width != null) e.width = width;
+ if (height != null) e.height = height;
+ return e;
}
- /** @domName HTMLImageElement.align */
+ /// @domName HTMLImageElement.align; @docsEditable true
String align;
- /** @domName HTMLImageElement.alt */
+ /// @domName HTMLImageElement.alt; @docsEditable true
String alt;
- /** @domName HTMLImageElement.border */
+ /// @domName HTMLImageElement.border; @docsEditable true
String border;
- /** @domName HTMLImageElement.complete */
+ /// @domName HTMLImageElement.complete; @docsEditable true
final bool complete;
- /** @domName HTMLImageElement.crossOrigin */
+ /// @domName HTMLImageElement.crossOrigin; @docsEditable true
String crossOrigin;
- /** @domName HTMLImageElement.height */
+ /// @domName HTMLImageElement.height; @docsEditable true
int height;
- /** @domName HTMLImageElement.hspace */
+ /// @domName HTMLImageElement.hspace; @docsEditable true
int hspace;
- /** @domName HTMLImageElement.isMap */
+ /// @domName HTMLImageElement.isMap; @docsEditable true
bool isMap;
- /** @domName HTMLImageElement.longDesc */
+ /// @domName HTMLImageElement.longDesc; @docsEditable true
String longDesc;
- /** @domName HTMLImageElement.lowsrc */
+ /// @domName HTMLImageElement.lowsrc; @docsEditable true
String lowsrc;
- /** @domName HTMLImageElement.name */
+ /// @domName HTMLImageElement.name; @docsEditable true
String name;
- /** @domName HTMLImageElement.naturalHeight */
+ /// @domName HTMLImageElement.naturalHeight; @docsEditable true
final int naturalHeight;
- /** @domName HTMLImageElement.naturalWidth */
+ /// @domName HTMLImageElement.naturalWidth; @docsEditable true
final int naturalWidth;
- /** @domName HTMLImageElement.src */
+ /// @domName HTMLImageElement.src; @docsEditable true
String src;
- /** @domName HTMLImageElement.useMap */
+ /// @domName HTMLImageElement.useMap; @docsEditable true
String useMap;
- /** @domName HTMLImageElement.vspace */
+ /// @domName HTMLImageElement.vspace; @docsEditable true
int vspace;
- /** @domName HTMLImageElement.width */
+ /// @domName HTMLImageElement.width; @docsEditable true
int width;
- /** @domName HTMLImageElement.x */
+ /// @domName HTMLImageElement.x; @docsEditable true
final int x;
- /** @domName HTMLImageElement.y */
+ /// @domName HTMLImageElement.y; @docsEditable true
final int y;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -10594,191 +11014,191 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLInputElement
+/// @domName HTMLInputElement; @docsEditable true
class InputElement extends Element implements Element native "*HTMLInputElement" {
factory InputElement({String type}) {
- if (!?type) {
- return _Elements.createInputElement();
- }
- return _Elements.createInputElement(type);
+ var e = document.$dom_createElement("input");
+ if (type != null) e.type = type;
+ return e;
}
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
InputElementEvents get on =>
new InputElementEvents(this);
- /** @domName HTMLInputElement.accept */
+ /// @domName HTMLInputElement.accept; @docsEditable true
String accept;
- /** @domName HTMLInputElement.align */
+ /// @domName HTMLInputElement.align; @docsEditable true
String align;
- /** @domName HTMLInputElement.alt */
+ /// @domName HTMLInputElement.alt; @docsEditable true
String alt;
- /** @domName HTMLInputElement.autocomplete */
+ /// @domName HTMLInputElement.autocomplete; @docsEditable true
String autocomplete;
- /** @domName HTMLInputElement.autofocus */
+ /// @domName HTMLInputElement.autofocus; @docsEditable true
bool autofocus;
- /** @domName HTMLInputElement.checked */
+ /// @domName HTMLInputElement.checked; @docsEditable true
bool checked;
- /** @domName HTMLInputElement.defaultChecked */
+ /// @domName HTMLInputElement.defaultChecked; @docsEditable true
bool defaultChecked;
- /** @domName HTMLInputElement.defaultValue */
+ /// @domName HTMLInputElement.defaultValue; @docsEditable true
String defaultValue;
- /** @domName HTMLInputElement.dirName */
+ /// @domName HTMLInputElement.dirName; @docsEditable true
String dirName;
- /** @domName HTMLInputElement.disabled */
+ /// @domName HTMLInputElement.disabled; @docsEditable true
bool disabled;
- /** @domName HTMLInputElement.files */
+ /// @domName HTMLInputElement.files; @docsEditable true
+ @Returns('_FileList') @Creates('_FileList')
List<File> files;
- /** @domName HTMLInputElement.form */
+ /// @domName HTMLInputElement.form; @docsEditable true
final FormElement form;
- /** @domName HTMLInputElement.formAction */
+ /// @domName HTMLInputElement.formAction; @docsEditable true
String formAction;
- /** @domName HTMLInputElement.formEnctype */
+ /// @domName HTMLInputElement.formEnctype; @docsEditable true
String formEnctype;
- /** @domName HTMLInputElement.formMethod */
+ /// @domName HTMLInputElement.formMethod; @docsEditable true
String formMethod;
- /** @domName HTMLInputElement.formNoValidate */
+ /// @domName HTMLInputElement.formNoValidate; @docsEditable true
bool formNoValidate;
- /** @domName HTMLInputElement.formTarget */
+ /// @domName HTMLInputElement.formTarget; @docsEditable true
String formTarget;
- /** @domName HTMLInputElement.height */
+ /// @domName HTMLInputElement.height; @docsEditable true
int height;
- /** @domName HTMLInputElement.incremental */
+ /// @domName HTMLInputElement.incremental; @docsEditable true
bool incremental;
- /** @domName HTMLInputElement.indeterminate */
+ /// @domName HTMLInputElement.indeterminate; @docsEditable true
bool indeterminate;
- /** @domName HTMLInputElement.labels */
+ /// @domName HTMLInputElement.labels; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
final List<Node> labels;
- /** @domName HTMLInputElement.list */
+ /// @domName HTMLInputElement.list; @docsEditable true
final Element list;
- /** @domName HTMLInputElement.max */
+ /// @domName HTMLInputElement.max; @docsEditable true
String max;
- /** @domName HTMLInputElement.maxLength */
+ /// @domName HTMLInputElement.maxLength; @docsEditable true
int maxLength;
- /** @domName HTMLInputElement.min */
+ /// @domName HTMLInputElement.min; @docsEditable true
String min;
- /** @domName HTMLInputElement.multiple */
+ /// @domName HTMLInputElement.multiple; @docsEditable true
bool multiple;
- /** @domName HTMLInputElement.name */
+ /// @domName HTMLInputElement.name; @docsEditable true
String name;
- /** @domName HTMLInputElement.pattern */
+ /// @domName HTMLInputElement.pattern; @docsEditable true
String pattern;
- /** @domName HTMLInputElement.placeholder */
+ /// @domName HTMLInputElement.placeholder; @docsEditable true
String placeholder;
- /** @domName HTMLInputElement.readOnly */
+ /// @domName HTMLInputElement.readOnly; @docsEditable true
bool readOnly;
- /** @domName HTMLInputElement.required */
+ /// @domName HTMLInputElement.required; @docsEditable true
bool required;
- /** @domName HTMLInputElement.selectionDirection */
+ /// @domName HTMLInputElement.selectionDirection; @docsEditable true
String selectionDirection;
- /** @domName HTMLInputElement.selectionEnd */
+ /// @domName HTMLInputElement.selectionEnd; @docsEditable true
int selectionEnd;
- /** @domName HTMLInputElement.selectionStart */
+ /// @domName HTMLInputElement.selectionStart; @docsEditable true
int selectionStart;
- /** @domName HTMLInputElement.size */
+ /// @domName HTMLInputElement.size; @docsEditable true
int size;
- /** @domName HTMLInputElement.src */
+ /// @domName HTMLInputElement.src; @docsEditable true
String src;
- /** @domName HTMLInputElement.step */
+ /// @domName HTMLInputElement.step; @docsEditable true
String step;
- /** @domName HTMLInputElement.type */
+ /// @domName HTMLInputElement.type; @docsEditable true
String type;
- /** @domName HTMLInputElement.useMap */
+ /// @domName HTMLInputElement.useMap; @docsEditable true
String useMap;
- /** @domName HTMLInputElement.validationMessage */
+ /// @domName HTMLInputElement.validationMessage; @docsEditable true
final String validationMessage;
- /** @domName HTMLInputElement.validity */
+ /// @domName HTMLInputElement.validity; @docsEditable true
final ValidityState validity;
- /** @domName HTMLInputElement.value */
+ /// @domName HTMLInputElement.value; @docsEditable true
String value;
- /** @domName HTMLInputElement.valueAsDate */
+ /// @domName HTMLInputElement.valueAsDate; @docsEditable true
Date valueAsDate;
- /** @domName HTMLInputElement.valueAsNumber */
+ /// @domName HTMLInputElement.valueAsNumber; @docsEditable true
num valueAsNumber;
- /** @domName HTMLInputElement.webkitEntries */
+ /// @domName HTMLInputElement.webkitEntries; @docsEditable true
+ @Returns('_EntryArray') @Creates('_EntryArray')
final List<Entry> webkitEntries;
- /** @domName HTMLInputElement.webkitGrammar */
+ /// @domName HTMLInputElement.webkitGrammar; @docsEditable true
bool webkitGrammar;
- /** @domName HTMLInputElement.webkitSpeech */
+ /// @domName HTMLInputElement.webkitSpeech; @docsEditable true
bool webkitSpeech;
- /** @domName HTMLInputElement.webkitdirectory */
+ /// @domName HTMLInputElement.webkitdirectory; @docsEditable true
bool webkitdirectory;
- /** @domName HTMLInputElement.width */
+ /// @domName HTMLInputElement.width; @docsEditable true
int width;
- /** @domName HTMLInputElement.willValidate */
+ /// @domName HTMLInputElement.willValidate; @docsEditable true
final bool willValidate;
- /** @domName HTMLInputElement.checkValidity */
+ /// @domName HTMLInputElement.checkValidity; @docsEditable true
bool checkValidity() native;
- /** @domName HTMLInputElement.select */
+ /// @domName HTMLInputElement.select; @docsEditable true
void select() native;
- /** @domName HTMLInputElement.setCustomValidity */
+ /// @domName HTMLInputElement.setCustomValidity; @docsEditable true
void setCustomValidity(String error) native;
- /** @domName HTMLInputElement.setRangeText */
+ /// @domName HTMLInputElement.setRangeText; @docsEditable true
void setRangeText(String replacement, [int start, int end, String selectionMode]) native;
- /** @domName HTMLInputElement.setSelectionRange */
+ /// @domName HTMLInputElement.setSelectionRange; @docsEditable true
void setSelectionRange(int start, int end, [String direction]) native;
- /** @domName HTMLInputElement.stepDown */
+ /// @domName HTMLInputElement.stepDown; @docsEditable true
void stepDown([int n]) native;
- /** @domName HTMLInputElement.stepUp */
+ /// @domName HTMLInputElement.stepUp; @docsEditable true
void stepUp([int n]) native;
}
@@ -10792,7 +11212,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Int16Array
+/// @domName Int16Array; @docsEditable true
class Int16Array extends ArrayBufferView implements JavaScriptIndexingBehavior, List<int> native "*Int16Array" {
factory Int16Array(int length) =>
@@ -10806,13 +11226,12 @@
static const int BYTES_PER_ELEMENT = 2;
- /** @domName Int16Array.length */
+ /// @domName Int16Array.length; @docsEditable true
final int length;
int operator[](int index) => JS("int", "#[#]", this, index);
- void operator[]=(int index, int value) => JS("void", "#[#] = #", this, index, value);
- // -- start List<int> mixins.
+ void operator[]=(int index, int value) { JS("void", "#[#] = #", this, index, value); } // -- start List<int> mixins.
// int is the element type.
// From Iterable<int>:
@@ -10867,6 +11286,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ int get first => this[0];
+
int get last => this[length - 1];
int removeLast() {
@@ -10890,10 +11311,10 @@
// -- end List<int> mixins.
- /** @domName Int16Array.setElements */
+ /// @domName Int16Array.setElements; @docsEditable true
void setElements(Object array, [int offset]) native "set";
- /** @domName Int16Array.subarray */
+ /// @domName Int16Array.subarray; @docsEditable true
Int16Array subarray(int start, [int end]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -10901,7 +11322,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Int32Array
+/// @domName Int32Array; @docsEditable true
class Int32Array extends ArrayBufferView implements JavaScriptIndexingBehavior, List<int> native "*Int32Array" {
factory Int32Array(int length) =>
@@ -10915,13 +11336,12 @@
static const int BYTES_PER_ELEMENT = 4;
- /** @domName Int32Array.length */
+ /// @domName Int32Array.length; @docsEditable true
final int length;
int operator[](int index) => JS("int", "#[#]", this, index);
- void operator[]=(int index, int value) => JS("void", "#[#] = #", this, index, value);
- // -- start List<int> mixins.
+ void operator[]=(int index, int value) { JS("void", "#[#] = #", this, index, value); } // -- start List<int> mixins.
// int is the element type.
// From Iterable<int>:
@@ -10976,6 +11396,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ int get first => this[0];
+
int get last => this[length - 1];
int removeLast() {
@@ -10999,10 +11421,10 @@
// -- end List<int> mixins.
- /** @domName Int32Array.setElements */
+ /// @domName Int32Array.setElements; @docsEditable true
void setElements(Object array, [int offset]) native "set";
- /** @domName Int32Array.subarray */
+ /// @domName Int32Array.subarray; @docsEditable true
Int32Array subarray(int start, [int end]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -11010,7 +11432,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Int8Array
+/// @domName Int8Array; @docsEditable true
class Int8Array extends ArrayBufferView implements JavaScriptIndexingBehavior, List<int> native "*Int8Array" {
factory Int8Array(int length) =>
@@ -11024,13 +11446,12 @@
static const int BYTES_PER_ELEMENT = 1;
- /** @domName Int8Array.length */
+ /// @domName Int8Array.length; @docsEditable true
final int length;
int operator[](int index) => JS("int", "#[#]", this, index);
- void operator[]=(int index, int value) => JS("void", "#[#] = #", this, index, value);
- // -- start List<int> mixins.
+ void operator[]=(int index, int value) { JS("void", "#[#] = #", this, index, value); } // -- start List<int> mixins.
// int is the element type.
// From Iterable<int>:
@@ -11085,6 +11506,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ int get first => this[0];
+
int get last => this[length - 1];
int removeLast() {
@@ -11108,10 +11531,10 @@
// -- end List<int> mixins.
- /** @domName Int8Array.setElements */
+ /// @domName Int8Array.setElements; @docsEditable true
void setElements(Object array, [int offset]) native "set";
- /** @domName Int8Array.subarray */
+ /// @domName Int8Array.subarray; @docsEditable true
Int8Array subarray(int start, [int end]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -11119,7 +11542,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName JavaScriptCallFrame
+/// @domName JavaScriptCallFrame; @docsEditable true
class JavaScriptCallFrame native "*JavaScriptCallFrame" {
static const int CATCH_SCOPE = 4;
@@ -11132,37 +11555,37 @@
static const int WITH_SCOPE = 2;
- /** @domName JavaScriptCallFrame.caller */
+ /// @domName JavaScriptCallFrame.caller; @docsEditable true
final JavaScriptCallFrame caller;
- /** @domName JavaScriptCallFrame.column */
+ /// @domName JavaScriptCallFrame.column; @docsEditable true
final int column;
- /** @domName JavaScriptCallFrame.functionName */
+ /// @domName JavaScriptCallFrame.functionName; @docsEditable true
final String functionName;
- /** @domName JavaScriptCallFrame.line */
+ /// @domName JavaScriptCallFrame.line; @docsEditable true
final int line;
- /** @domName JavaScriptCallFrame.scopeChain */
+ /// @domName JavaScriptCallFrame.scopeChain; @docsEditable true
final List scopeChain;
- /** @domName JavaScriptCallFrame.sourceID */
+ /// @domName JavaScriptCallFrame.sourceID; @docsEditable true
final int sourceID;
- /** @domName JavaScriptCallFrame.thisObject */
+ /// @domName JavaScriptCallFrame.thisObject; @docsEditable true
final Object thisObject;
- /** @domName JavaScriptCallFrame.type */
+ /// @domName JavaScriptCallFrame.type; @docsEditable true
final String type;
- /** @domName JavaScriptCallFrame.evaluate */
+ /// @domName JavaScriptCallFrame.evaluate; @docsEditable true
void evaluate(String script) native;
- /** @domName JavaScriptCallFrame.restart */
+ /// @domName JavaScriptCallFrame.restart; @docsEditable true
Object restart() native;
- /** @domName JavaScriptCallFrame.scopeType */
+ /// @domName JavaScriptCallFrame.scopeType; @docsEditable true
int scopeType(int scopeIndex) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -11170,31 +11593,31 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName KeyboardEvent
+/// @domName KeyboardEvent; @docsEditable true
class KeyboardEvent extends UIEvent native "*KeyboardEvent" {
- /** @domName KeyboardEvent.altGraphKey */
+ /// @domName KeyboardEvent.altGraphKey; @docsEditable true
final bool altGraphKey;
- /** @domName KeyboardEvent.altKey */
+ /// @domName KeyboardEvent.altKey; @docsEditable true
final bool altKey;
- /** @domName KeyboardEvent.ctrlKey */
+ /// @domName KeyboardEvent.ctrlKey; @docsEditable true
final bool ctrlKey;
- /** @domName KeyboardEvent.keyIdentifier */
+ /// @domName KeyboardEvent.keyIdentifier; @docsEditable true
final String keyIdentifier;
- /** @domName KeyboardEvent.keyLocation */
+ /// @domName KeyboardEvent.keyLocation; @docsEditable true
final int keyLocation;
- /** @domName KeyboardEvent.metaKey */
+ /// @domName KeyboardEvent.metaKey; @docsEditable true
final bool metaKey;
- /** @domName KeyboardEvent.shiftKey */
+ /// @domName KeyboardEvent.shiftKey; @docsEditable true
final bool shiftKey;
- /** @domName KeyboardEvent.initKeyboardEvent */
+ /// @domName KeyboardEvent.initKeyboardEvent; @docsEditable true
void initKeyboardEvent(String type, bool canBubble, bool cancelable, LocalWindow view, String keyIdentifier, int keyLocation, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, bool altGraphKey) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -11202,48 +11625,49 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLKeygenElement
+/// @domName HTMLKeygenElement; @docsEditable true
class KeygenElement extends Element implements Element native "*HTMLKeygenElement" {
- factory KeygenElement() => _Elements.createKeygenElement();
+ factory KeygenElement() => document.$dom_createElement("keygen");
- /** @domName HTMLKeygenElement.autofocus */
+ /// @domName HTMLKeygenElement.autofocus; @docsEditable true
bool autofocus;
- /** @domName HTMLKeygenElement.challenge */
+ /// @domName HTMLKeygenElement.challenge; @docsEditable true
String challenge;
- /** @domName HTMLKeygenElement.disabled */
+ /// @domName HTMLKeygenElement.disabled; @docsEditable true
bool disabled;
- /** @domName HTMLKeygenElement.form */
+ /// @domName HTMLKeygenElement.form; @docsEditable true
final FormElement form;
- /** @domName HTMLKeygenElement.keytype */
+ /// @domName HTMLKeygenElement.keytype; @docsEditable true
String keytype;
- /** @domName HTMLKeygenElement.labels */
+ /// @domName HTMLKeygenElement.labels; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
final List<Node> labels;
- /** @domName HTMLKeygenElement.name */
+ /// @domName HTMLKeygenElement.name; @docsEditable true
String name;
- /** @domName HTMLKeygenElement.type */
+ /// @domName HTMLKeygenElement.type; @docsEditable true
final String type;
- /** @domName HTMLKeygenElement.validationMessage */
+ /// @domName HTMLKeygenElement.validationMessage; @docsEditable true
final String validationMessage;
- /** @domName HTMLKeygenElement.validity */
+ /// @domName HTMLKeygenElement.validity; @docsEditable true
final ValidityState validity;
- /** @domName HTMLKeygenElement.willValidate */
+ /// @domName HTMLKeygenElement.willValidate; @docsEditable true
final bool willValidate;
- /** @domName HTMLKeygenElement.checkValidity */
+ /// @domName HTMLKeygenElement.checkValidity; @docsEditable true
bool checkValidity() native;
- /** @domName HTMLKeygenElement.setCustomValidity */
+ /// @domName HTMLKeygenElement.setCustomValidity; @docsEditable true
void setCustomValidity(String error) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -11251,15 +11675,15 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLLIElement
+/// @domName HTMLLIElement; @docsEditable true
class LIElement extends Element implements Element native "*HTMLLIElement" {
- factory LIElement() => _Elements.createLIElement();
+ factory LIElement() => document.$dom_createElement("li");
- /** @domName HTMLLIElement.type */
+ /// @domName HTMLLIElement.type; @docsEditable true
String type;
- /** @domName HTMLLIElement.value */
+ /// @domName HTMLLIElement.value; @docsEditable true
int value;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -11267,18 +11691,18 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLLabelElement
+/// @domName HTMLLabelElement; @docsEditable true
class LabelElement extends Element implements Element native "*HTMLLabelElement" {
- factory LabelElement() => _Elements.createLabelElement();
+ factory LabelElement() => document.$dom_createElement("label");
- /** @domName HTMLLabelElement.control */
+ /// @domName HTMLLabelElement.control; @docsEditable true
final Element control;
- /** @domName HTMLLabelElement.form */
+ /// @domName HTMLLabelElement.form; @docsEditable true
final FormElement form;
- /** @domName HTMLLabelElement.htmlFor */
+ /// @domName HTMLLabelElement.htmlFor; @docsEditable true
String htmlFor;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -11286,15 +11710,15 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLLegendElement
+/// @domName HTMLLegendElement; @docsEditable true
class LegendElement extends Element implements Element native "*HTMLLegendElement" {
- factory LegendElement() => _Elements.createLegendElement();
+ factory LegendElement() => document.$dom_createElement("legend");
- /** @domName HTMLLegendElement.align */
+ /// @domName HTMLLegendElement.align; @docsEditable true
String align;
- /** @domName HTMLLegendElement.form */
+ /// @domName HTMLLegendElement.form; @docsEditable true
final FormElement form;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -11302,42 +11726,42 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLLinkElement
+/// @domName HTMLLinkElement; @docsEditable true
class LinkElement extends Element implements Element native "*HTMLLinkElement" {
- factory LinkElement() => _Elements.createLinkElement();
+ factory LinkElement() => document.$dom_createElement("link");
- /** @domName HTMLLinkElement.charset */
+ /// @domName HTMLLinkElement.charset; @docsEditable true
String charset;
- /** @domName HTMLLinkElement.disabled */
+ /// @domName HTMLLinkElement.disabled; @docsEditable true
bool disabled;
- /** @domName HTMLLinkElement.href */
+ /// @domName HTMLLinkElement.href; @docsEditable true
String href;
- /** @domName HTMLLinkElement.hreflang */
+ /// @domName HTMLLinkElement.hreflang; @docsEditable true
String hreflang;
- /** @domName HTMLLinkElement.media */
+ /// @domName HTMLLinkElement.media; @docsEditable true
String media;
- /** @domName HTMLLinkElement.rel */
+ /// @domName HTMLLinkElement.rel; @docsEditable true
String rel;
- /** @domName HTMLLinkElement.rev */
+ /// @domName HTMLLinkElement.rev; @docsEditable true
String rev;
- /** @domName HTMLLinkElement.sheet */
+ /// @domName HTMLLinkElement.sheet; @docsEditable true
final StyleSheet sheet;
- /** @domName HTMLLinkElement.sizes */
+ /// @domName HTMLLinkElement.sizes; @docsEditable true
DOMSettableTokenList sizes;
- /** @domName HTMLLinkElement.target */
+ /// @domName HTMLLinkElement.target; @docsEditable true
String target;
- /** @domName HTMLLinkElement.type */
+ /// @domName HTMLLinkElement.type; @docsEditable true
String type;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -11345,28 +11769,28 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName History
+/// @domName History; @docsEditable true
class LocalHistory implements History native "*History" {
- /** @domName History.length */
+ /// @domName History.length; @docsEditable true
final int length;
- /** @domName History.state */
+ /// @domName History.state; @docsEditable true
final dynamic state;
- /** @domName History.back */
+ /// @domName History.back; @docsEditable true
void back() native;
- /** @domName History.forward */
+ /// @domName History.forward; @docsEditable true
void forward() native;
- /** @domName History.go */
+ /// @domName History.go; @docsEditable true
void go(int distance) native;
- /** @domName History.pushState */
+ /// @domName History.pushState; @docsEditable true
void pushState(Object data, String title, [String url]) native;
- /** @domName History.replaceState */
+ /// @domName History.replaceState; @docsEditable true
void replaceState(Object data, String title, [String url]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -11374,49 +11798,50 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Location
+/// @domName Location; @docsEditable true
class LocalLocation implements Location native "*Location" {
- /** @domName Location.ancestorOrigins */
+ /// @domName Location.ancestorOrigins; @docsEditable true
+ @Returns('_DOMStringList') @Creates('_DOMStringList')
final List<String> ancestorOrigins;
- /** @domName Location.hash */
+ /// @domName Location.hash; @docsEditable true
String hash;
- /** @domName Location.host */
+ /// @domName Location.host; @docsEditable true
String host;
- /** @domName Location.hostname */
+ /// @domName Location.hostname; @docsEditable true
String hostname;
- /** @domName Location.href */
+ /// @domName Location.href; @docsEditable true
String href;
- /** @domName Location.origin */
+ /// @domName Location.origin; @docsEditable true
final String origin;
- /** @domName Location.pathname */
+ /// @domName Location.pathname; @docsEditable true
String pathname;
- /** @domName Location.port */
+ /// @domName Location.port; @docsEditable true
String port;
- /** @domName Location.protocol */
+ /// @domName Location.protocol; @docsEditable true
String protocol;
- /** @domName Location.search */
+ /// @domName Location.search; @docsEditable true
String search;
- /** @domName Location.assign */
+ /// @domName Location.assign; @docsEditable true
void assign(String url) native;
- /** @domName Location.reload */
+ /// @domName Location.reload; @docsEditable true
void reload() native;
- /** @domName Location.replace */
+ /// @domName Location.replace; @docsEditable true
void replace(String url) native;
- /** @domName Location.toString */
+ /// @domName Location.toString; @docsEditable true
String toString() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -11424,10 +11849,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName LocalMediaStream
+/// @domName LocalMediaStream; @docsEditable true
class LocalMediaStream extends MediaStream implements EventTarget native "*LocalMediaStream" {
- /** @domName LocalMediaStream.stop */
+ /// @domName LocalMediaStream.stop; @docsEditable true
void stop() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -11562,7 +11987,7 @@
* registered under [name].
*/
SendPortSync lookupPort(String name) {
- var port = JSON.parse(localStorage['dart-port:$name']);
+ var port = JSON.parse(document.documentElement.attributes['dart-port:$name']);
return _deserialize(port);
}
@@ -11573,13 +11998,11 @@
*/
void registerPort(String name, var port) {
var serialized = _serialize(port);
- localStorage['dart-port:$name'] = JSON.stringify(serialized);
+ document.documentElement.attributes['dart-port:$name'] = JSON.stringify(serialized);
}
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
LocalWindowEvents get on =>
new LocalWindowEvents(this);
@@ -11587,207 +12010,203 @@
static const int TEMPORARY = 0;
- /** @domName Window.applicationCache */
+ /// @domName Window.applicationCache; @docsEditable true
final DOMApplicationCache applicationCache;
- /** @domName Window.closed */
+ /// @domName Window.closed; @docsEditable true
final bool closed;
- /** @domName Window.console */
+ /// @domName Window.console; @docsEditable true
final Console console;
- /** @domName Window.crypto */
+ /// @domName Window.crypto; @docsEditable true
final Crypto crypto;
- /** @domName Window.defaultStatus */
+ /// @domName Window.defaultStatus; @docsEditable true
String defaultStatus;
- /** @domName Window.defaultstatus */
+ /// @domName Window.defaultstatus; @docsEditable true
String defaultstatus;
- /** @domName Window.devicePixelRatio */
+ /// @domName Window.devicePixelRatio; @docsEditable true
final num devicePixelRatio;
- /** @domName Window.event */
+ /// @domName Window.event; @docsEditable true
final Event event;
- /** @domName Window.history */
+ /// @domName Window.history; @docsEditable true
final LocalHistory history;
- /** @domName Window.innerHeight */
+ /// @domName Window.innerHeight; @docsEditable true
final int innerHeight;
- /** @domName Window.innerWidth */
+ /// @domName Window.innerWidth; @docsEditable true
final int innerWidth;
- /** @domName Window.localStorage */
+ /// @domName Window.localStorage; @docsEditable true
final Storage localStorage;
- /** @domName Window.locationbar */
+ /// @domName Window.locationbar; @docsEditable true
final BarInfo locationbar;
- /** @domName Window.menubar */
+ /// @domName Window.menubar; @docsEditable true
final BarInfo menubar;
- /** @domName Window.name */
+ /// @domName Window.name; @docsEditable true
String name;
- /** @domName Window.navigator */
+ /// @domName Window.navigator; @docsEditable true
final Navigator navigator;
- /** @domName Window.offscreenBuffering */
+ /// @domName Window.offscreenBuffering; @docsEditable true
final bool offscreenBuffering;
- /** @domName Window.opener */
+ /// @domName Window.opener; @docsEditable true
Window get opener => _convertNativeToDart_Window(this._opener);
dynamic get _opener => JS("dynamic", "#.opener", this);
- /** @domName Window.outerHeight */
+ /// @domName Window.outerHeight; @docsEditable true
final int outerHeight;
- /** @domName Window.outerWidth */
+ /// @domName Window.outerWidth; @docsEditable true
final int outerWidth;
- /** @domName DOMWindow.pagePopupController */
+ /// @domName DOMWindow.pagePopupController; @docsEditable true
final PagePopupController pagePopupController;
- /** @domName Window.pageXOffset */
+ /// @domName Window.pageXOffset; @docsEditable true
final int pageXOffset;
- /** @domName Window.pageYOffset */
+ /// @domName Window.pageYOffset; @docsEditable true
final int pageYOffset;
- /** @domName Window.parent */
+ /// @domName Window.parent; @docsEditable true
Window get parent => _convertNativeToDart_Window(this._parent);
dynamic get _parent => JS("dynamic", "#.parent", this);
- /** @domName Window.performance */
+ /// @domName Window.performance; @docsEditable true
final Performance performance;
- /** @domName Window.personalbar */
+ /// @domName Window.personalbar; @docsEditable true
final BarInfo personalbar;
- /** @domName Window.screen */
+ /// @domName Window.screen; @docsEditable true
final Screen screen;
- /** @domName Window.screenLeft */
+ /// @domName Window.screenLeft; @docsEditable true
final int screenLeft;
- /** @domName Window.screenTop */
+ /// @domName Window.screenTop; @docsEditable true
final int screenTop;
- /** @domName Window.screenX */
+ /// @domName Window.screenX; @docsEditable true
final int screenX;
- /** @domName Window.screenY */
+ /// @domName Window.screenY; @docsEditable true
final int screenY;
- /** @domName Window.scrollX */
+ /// @domName Window.scrollX; @docsEditable true
final int scrollX;
- /** @domName Window.scrollY */
+ /// @domName Window.scrollY; @docsEditable true
final int scrollY;
- /** @domName Window.scrollbars */
+ /// @domName Window.scrollbars; @docsEditable true
final BarInfo scrollbars;
- /** @domName Window.self */
+ /// @domName Window.self; @docsEditable true
Window get self => _convertNativeToDart_Window(this._self);
dynamic get _self => JS("dynamic", "#.self", this);
- /** @domName Window.sessionStorage */
+ /// @domName Window.sessionStorage; @docsEditable true
final Storage sessionStorage;
- /** @domName Window.status */
+ /// @domName Window.status; @docsEditable true
String status;
- /** @domName Window.statusbar */
+ /// @domName Window.statusbar; @docsEditable true
final BarInfo statusbar;
- /** @domName Window.styleMedia */
+ /// @domName Window.styleMedia; @docsEditable true
final StyleMedia styleMedia;
- /** @domName Window.toolbar */
+ /// @domName Window.toolbar; @docsEditable true
final BarInfo toolbar;
- /** @domName Window.top */
+ /// @domName Window.top; @docsEditable true
Window get top => _convertNativeToDart_Window(this._top);
dynamic get _top => JS("dynamic", "#.top", this);
- /** @domName DOMWindow.webkitIndexedDB */
+ /// @domName DOMWindow.webkitIndexedDB; @docsEditable true
final IDBFactory webkitIndexedDB;
- /** @domName DOMWindow.webkitNotifications */
+ /// @domName DOMWindow.webkitNotifications; @docsEditable true
final NotificationCenter webkitNotifications;
- /** @domName DOMWindow.webkitStorageInfo */
+ /// @domName DOMWindow.webkitStorageInfo; @docsEditable true
final StorageInfo webkitStorageInfo;
- /** @domName Window.window */
+ /// @domName Window.window; @docsEditable true
Window get window => _convertNativeToDart_Window(this._window);
dynamic get _window => JS("dynamic", "#.window", this);
- /** @domName Window.addEventListener */
+ /// @domName Window.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName Window.alert */
+ /// @domName Window.alert; @docsEditable true
void alert(String message) native;
- /** @domName Window.atob */
+ /// @domName Window.atob; @docsEditable true
String atob(String string) native;
- /** @domName Window.blur */
- void blur() native;
-
- /** @domName Window.btoa */
+ /// @domName Window.btoa; @docsEditable true
String btoa(String string) native;
- /** @domName Window.captureEvents */
+ /// @domName Window.captureEvents; @docsEditable true
void captureEvents() native;
- /** @domName Window.clearInterval */
+ /// @domName Window.clearInterval; @docsEditable true
void clearInterval(int handle) native;
- /** @domName Window.clearTimeout */
+ /// @domName Window.clearTimeout; @docsEditable true
void clearTimeout(int handle) native;
- /** @domName Window.close */
+ /// @domName Window.close; @docsEditable true
void close() native;
- /** @domName Window.confirm */
+ /// @domName Window.confirm; @docsEditable true
bool confirm(String message) native;
- /** @domName Window.dispatchEvent */
+ /// @domName Window.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event evt) native "dispatchEvent";
- /** @domName Window.find */
+ /// @domName Window.find; @docsEditable true
bool find(String string, bool caseSensitive, bool backwards, bool wrap, bool wholeWord, bool searchInFrames, bool showDialog) native;
- /** @domName Window.focus */
- void focus() native;
-
- /** @domName Window.getComputedStyle */
+ /// @domName Window.getComputedStyle; @docsEditable true
CSSStyleDeclaration $dom_getComputedStyle(Element element, String pseudoElement) native "getComputedStyle";
- /** @domName Window.getMatchedCSSRules */
+ /// @domName Window.getMatchedCSSRules; @docsEditable true
+ @Returns('_CSSRuleList') @Creates('_CSSRuleList')
List<CSSRule> getMatchedCSSRules(Element element, String pseudoElement) native;
- /** @domName Window.getSelection */
+ /// @domName Window.getSelection; @docsEditable true
DOMSelection getSelection() native;
- /** @domName Window.matchMedia */
+ /// @domName Window.matchMedia; @docsEditable true
MediaQueryList matchMedia(String query) native;
- /** @domName Window.moveBy */
+ /// @domName Window.moveBy; @docsEditable true
void moveBy(num x, num y) native;
- /** @domName Window.moveTo */
+ /// @domName Window.moveTo; @docsEditable true
void moveTo(num x, num y) native;
- /** @domName DOMWindow.openDatabase */
+ /// @domName DOMWindow.openDatabase; @docsEditable true
+ @Creates('Database') @Creates('DatabaseSync')
Database openDatabase(String name, String version, String displayName, int estimatedSize, [DatabaseCallback creationCallback]) native;
- /** @domName Window.postMessage */
+ /// @domName Window.postMessage; @docsEditable true
void postMessage(/*SerializedScriptValue*/ message, String targetOrigin, [List messagePorts]) {
if (?message &&
!?messagePorts) {
@@ -11800,57 +12219,57 @@
_postMessage_2(message_2, targetOrigin, messagePorts);
return;
}
- throw const Exception("Incorrect number or type of arguments");
+ throw new ArgumentError("Incorrect number or type of arguments");
}
void _postMessage_1(message, targetOrigin) native "postMessage";
void _postMessage_2(message, targetOrigin, List messagePorts) native "postMessage";
- /** @domName Window.print */
+ /// @domName Window.print; @docsEditable true
void print() native;
- /** @domName Window.releaseEvents */
+ /// @domName Window.releaseEvents; @docsEditable true
void releaseEvents() native;
- /** @domName Window.removeEventListener */
+ /// @domName Window.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
- /** @domName Window.resizeBy */
+ /// @domName Window.resizeBy; @docsEditable true
void resizeBy(num x, num y) native;
- /** @domName Window.resizeTo */
+ /// @domName Window.resizeTo; @docsEditable true
void resizeTo(num width, num height) native;
- /** @domName Window.scroll */
+ /// @domName Window.scroll; @docsEditable true
void scroll(int x, int y) native;
- /** @domName Window.scrollBy */
+ /// @domName Window.scrollBy; @docsEditable true
void scrollBy(int x, int y) native;
- /** @domName Window.scrollTo */
+ /// @domName Window.scrollTo; @docsEditable true
void scrollTo(int x, int y) native;
- /** @domName Window.setInterval */
+ /// @domName Window.setInterval; @docsEditable true
int setInterval(TimeoutHandler handler, int timeout) native;
- /** @domName Window.setTimeout */
+ /// @domName Window.setTimeout; @docsEditable true
int setTimeout(TimeoutHandler handler, int timeout) native;
- /** @domName Window.showModalDialog */
+ /// @domName Window.showModalDialog; @docsEditable true
Object showModalDialog(String url, [Object dialogArgs, String featureArgs]) native;
- /** @domName Window.stop */
+ /// @domName Window.stop; @docsEditable true
void stop() native;
- /** @domName Window.webkitConvertPointFromNodeToPage */
+ /// @domName Window.webkitConvertPointFromNodeToPage; @docsEditable true
Point webkitConvertPointFromNodeToPage(Node node, Point p) native;
- /** @domName Window.webkitConvertPointFromPageToNode */
+ /// @domName Window.webkitConvertPointFromPageToNode; @docsEditable true
Point webkitConvertPointFromPageToNode(Node node, Point p) native;
- /** @domName DOMWindow.webkitRequestFileSystem */
+ /// @domName DOMWindow.webkitRequestFileSystem; @docsEditable true
void webkitRequestFileSystem(int type, int size, FileSystemCallback successCallback, [ErrorCallback errorCallback]) native;
- /** @domName DOMWindow.webkitResolveLocalFileSystemURL */
+ /// @domName DOMWindow.webkitResolveLocalFileSystemURL; @docsEditable true
void webkitResolveLocalFileSystemURL(String url, EntryCallback successCallback, [ErrorCallback errorCallback]) native;
}
@@ -12009,15 +12428,15 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLMapElement
+/// @domName HTMLMapElement; @docsEditable true
class MapElement extends Element implements Element native "*HTMLMapElement" {
- factory MapElement() => _Elements.createMapElement();
+ factory MapElement() => document.$dom_createElement("map");
- /** @domName HTMLMapElement.areas */
+ /// @domName HTMLMapElement.areas; @docsEditable true
final HTMLCollection areas;
- /** @domName HTMLMapElement.name */
+ /// @domName HTMLMapElement.name; @docsEditable true
String name;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12025,46 +12444,46 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLMarqueeElement
+/// @domName HTMLMarqueeElement; @docsEditable true
class MarqueeElement extends Element implements Element native "*HTMLMarqueeElement" {
- /** @domName HTMLMarqueeElement.behavior */
+ /// @domName HTMLMarqueeElement.behavior; @docsEditable true
String behavior;
- /** @domName HTMLMarqueeElement.bgColor */
+ /// @domName HTMLMarqueeElement.bgColor; @docsEditable true
String bgColor;
- /** @domName HTMLMarqueeElement.direction */
+ /// @domName HTMLMarqueeElement.direction; @docsEditable true
String direction;
- /** @domName HTMLMarqueeElement.height */
+ /// @domName HTMLMarqueeElement.height; @docsEditable true
String height;
- /** @domName HTMLMarqueeElement.hspace */
+ /// @domName HTMLMarqueeElement.hspace; @docsEditable true
int hspace;
- /** @domName HTMLMarqueeElement.loop */
+ /// @domName HTMLMarqueeElement.loop; @docsEditable true
int loop;
- /** @domName HTMLMarqueeElement.scrollAmount */
+ /// @domName HTMLMarqueeElement.scrollAmount; @docsEditable true
int scrollAmount;
- /** @domName HTMLMarqueeElement.scrollDelay */
+ /// @domName HTMLMarqueeElement.scrollDelay; @docsEditable true
int scrollDelay;
- /** @domName HTMLMarqueeElement.trueSpeed */
+ /// @domName HTMLMarqueeElement.trueSpeed; @docsEditable true
bool trueSpeed;
- /** @domName HTMLMarqueeElement.vspace */
+ /// @domName HTMLMarqueeElement.vspace; @docsEditable true
int vspace;
- /** @domName HTMLMarqueeElement.width */
+ /// @domName HTMLMarqueeElement.width; @docsEditable true
String width;
- /** @domName HTMLMarqueeElement.start */
+ /// @domName HTMLMarqueeElement.start; @docsEditable true
void start() native;
- /** @domName HTMLMarqueeElement.stop */
+ /// @domName HTMLMarqueeElement.stop; @docsEditable true
void stop() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12072,54 +12491,54 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MediaController
+/// @domName MediaController; @docsEditable true
class MediaController extends EventTarget native "*MediaController" {
factory MediaController() => _MediaControllerFactoryProvider.createMediaController();
- /** @domName MediaController.buffered */
+ /// @domName MediaController.buffered; @docsEditable true
final TimeRanges buffered;
- /** @domName MediaController.currentTime */
+ /// @domName MediaController.currentTime; @docsEditable true
num currentTime;
- /** @domName MediaController.defaultPlaybackRate */
+ /// @domName MediaController.defaultPlaybackRate; @docsEditable true
num defaultPlaybackRate;
- /** @domName MediaController.duration */
+ /// @domName MediaController.duration; @docsEditable true
final num duration;
- /** @domName MediaController.muted */
+ /// @domName MediaController.muted; @docsEditable true
bool muted;
- /** @domName MediaController.paused */
+ /// @domName MediaController.paused; @docsEditable true
final bool paused;
- /** @domName MediaController.playbackRate */
+ /// @domName MediaController.playbackRate; @docsEditable true
num playbackRate;
- /** @domName MediaController.played */
+ /// @domName MediaController.played; @docsEditable true
final TimeRanges played;
- /** @domName MediaController.seekable */
+ /// @domName MediaController.seekable; @docsEditable true
final TimeRanges seekable;
- /** @domName MediaController.volume */
+ /// @domName MediaController.volume; @docsEditable true
num volume;
- /** @domName MediaController.addEventListener */
+ /// @domName MediaController.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName MediaController.dispatchEvent */
+ /// @domName MediaController.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event evt) native "dispatchEvent";
- /** @domName MediaController.pause */
+ /// @domName MediaController.pause; @docsEditable true
void pause() native;
- /** @domName MediaController.play */
+ /// @domName MediaController.play; @docsEditable true
void play() native;
- /** @domName MediaController.removeEventListener */
+ /// @domName MediaController.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12127,12 +12546,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLMediaElement
+/// @domName HTMLMediaElement; @docsEditable true
class MediaElement extends Element implements Element native "*HTMLMediaElement" {
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
MediaElementEvents get on =>
new MediaElementEvents(this);
@@ -12154,124 +12571,124 @@
static const int NETWORK_NO_SOURCE = 3;
- /** @domName HTMLMediaElement.autoplay */
+ /// @domName HTMLMediaElement.autoplay; @docsEditable true
bool autoplay;
- /** @domName HTMLMediaElement.buffered */
+ /// @domName HTMLMediaElement.buffered; @docsEditable true
final TimeRanges buffered;
- /** @domName HTMLMediaElement.controller */
+ /// @domName HTMLMediaElement.controller; @docsEditable true
MediaController controller;
- /** @domName HTMLMediaElement.controls */
+ /// @domName HTMLMediaElement.controls; @docsEditable true
bool controls;
- /** @domName HTMLMediaElement.currentSrc */
+ /// @domName HTMLMediaElement.currentSrc; @docsEditable true
final String currentSrc;
- /** @domName HTMLMediaElement.currentTime */
+ /// @domName HTMLMediaElement.currentTime; @docsEditable true
num currentTime;
- /** @domName HTMLMediaElement.defaultMuted */
+ /// @domName HTMLMediaElement.defaultMuted; @docsEditable true
bool defaultMuted;
- /** @domName HTMLMediaElement.defaultPlaybackRate */
+ /// @domName HTMLMediaElement.defaultPlaybackRate; @docsEditable true
num defaultPlaybackRate;
- /** @domName HTMLMediaElement.duration */
+ /// @domName HTMLMediaElement.duration; @docsEditable true
final num duration;
- /** @domName HTMLMediaElement.ended */
+ /// @domName HTMLMediaElement.ended; @docsEditable true
final bool ended;
- /** @domName HTMLMediaElement.error */
+ /// @domName HTMLMediaElement.error; @docsEditable true
final MediaError error;
- /** @domName HTMLMediaElement.initialTime */
+ /// @domName HTMLMediaElement.initialTime; @docsEditable true
final num initialTime;
- /** @domName HTMLMediaElement.loop */
+ /// @domName HTMLMediaElement.loop; @docsEditable true
bool loop;
- /** @domName HTMLMediaElement.mediaGroup */
+ /// @domName HTMLMediaElement.mediaGroup; @docsEditable true
String mediaGroup;
- /** @domName HTMLMediaElement.muted */
+ /// @domName HTMLMediaElement.muted; @docsEditable true
bool muted;
- /** @domName HTMLMediaElement.networkState */
+ /// @domName HTMLMediaElement.networkState; @docsEditable true
final int networkState;
- /** @domName HTMLMediaElement.paused */
+ /// @domName HTMLMediaElement.paused; @docsEditable true
final bool paused;
- /** @domName HTMLMediaElement.playbackRate */
+ /// @domName HTMLMediaElement.playbackRate; @docsEditable true
num playbackRate;
- /** @domName HTMLMediaElement.played */
+ /// @domName HTMLMediaElement.played; @docsEditable true
final TimeRanges played;
- /** @domName HTMLMediaElement.preload */
+ /// @domName HTMLMediaElement.preload; @docsEditable true
String preload;
- /** @domName HTMLMediaElement.readyState */
+ /// @domName HTMLMediaElement.readyState; @docsEditable true
final int readyState;
- /** @domName HTMLMediaElement.seekable */
+ /// @domName HTMLMediaElement.seekable; @docsEditable true
final TimeRanges seekable;
- /** @domName HTMLMediaElement.seeking */
+ /// @domName HTMLMediaElement.seeking; @docsEditable true
final bool seeking;
- /** @domName HTMLMediaElement.src */
+ /// @domName HTMLMediaElement.src; @docsEditable true
String src;
- /** @domName HTMLMediaElement.startTime */
+ /// @domName HTMLMediaElement.startTime; @docsEditable true
final num startTime;
- /** @domName HTMLMediaElement.textTracks */
+ /// @domName HTMLMediaElement.textTracks; @docsEditable true
final TextTrackList textTracks;
- /** @domName HTMLMediaElement.volume */
+ /// @domName HTMLMediaElement.volume; @docsEditable true
num volume;
- /** @domName HTMLMediaElement.webkitAudioDecodedByteCount */
+ /// @domName HTMLMediaElement.webkitAudioDecodedByteCount; @docsEditable true
final int webkitAudioDecodedByteCount;
- /** @domName HTMLMediaElement.webkitClosedCaptionsVisible */
+ /// @domName HTMLMediaElement.webkitClosedCaptionsVisible; @docsEditable true
bool webkitClosedCaptionsVisible;
- /** @domName HTMLMediaElement.webkitHasClosedCaptions */
+ /// @domName HTMLMediaElement.webkitHasClosedCaptions; @docsEditable true
final bool webkitHasClosedCaptions;
- /** @domName HTMLMediaElement.webkitPreservesPitch */
+ /// @domName HTMLMediaElement.webkitPreservesPitch; @docsEditable true
bool webkitPreservesPitch;
- /** @domName HTMLMediaElement.webkitVideoDecodedByteCount */
+ /// @domName HTMLMediaElement.webkitVideoDecodedByteCount; @docsEditable true
final int webkitVideoDecodedByteCount;
- /** @domName HTMLMediaElement.addTextTrack */
+ /// @domName HTMLMediaElement.addTextTrack; @docsEditable true
TextTrack addTextTrack(String kind, [String label, String language]) native;
- /** @domName HTMLMediaElement.canPlayType */
+ /// @domName HTMLMediaElement.canPlayType; @docsEditable true
String canPlayType(String type, String keySystem) native;
- /** @domName HTMLMediaElement.load */
+ /// @domName HTMLMediaElement.load; @docsEditable true
void load() native;
- /** @domName HTMLMediaElement.pause */
+ /// @domName HTMLMediaElement.pause; @docsEditable true
void pause() native;
- /** @domName HTMLMediaElement.play */
+ /// @domName HTMLMediaElement.play; @docsEditable true
void play() native;
- /** @domName HTMLMediaElement.webkitAddKey */
+ /// @domName HTMLMediaElement.webkitAddKey; @docsEditable true
void webkitAddKey(String keySystem, Uint8Array key, [Uint8Array initData, String sessionId]) native;
- /** @domName HTMLMediaElement.webkitCancelKeyRequest */
+ /// @domName HTMLMediaElement.webkitCancelKeyRequest; @docsEditable true
void webkitCancelKeyRequest(String keySystem, String sessionId) native;
- /** @domName HTMLMediaElement.webkitGenerateKeyRequest */
+ /// @domName HTMLMediaElement.webkitGenerateKeyRequest; @docsEditable true
void webkitGenerateKeyRequest(String keySystem, [Uint8Array initData]) native;
}
@@ -12333,10 +12750,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MediaElementAudioSourceNode
+/// @domName MediaElementAudioSourceNode; @docsEditable true
class MediaElementAudioSourceNode extends AudioSourceNode native "*MediaElementAudioSourceNode" {
- /** @domName MediaElementAudioSourceNode.mediaElement */
+ /// @domName MediaElementAudioSourceNode.mediaElement; @docsEditable true
final MediaElement mediaElement;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12344,7 +12761,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MediaError
+/// @domName MediaError; @docsEditable true
class MediaError native "*MediaError" {
static const int MEDIA_ERR_ABORTED = 1;
@@ -12357,7 +12774,7 @@
static const int MEDIA_ERR_SRC_NOT_SUPPORTED = 4;
- /** @domName MediaError.code */
+ /// @domName MediaError.code; @docsEditable true
final int code;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12365,7 +12782,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MediaKeyError
+/// @domName MediaKeyError; @docsEditable true
class MediaKeyError native "*MediaKeyError" {
static const int MEDIA_KEYERR_CLIENT = 2;
@@ -12380,7 +12797,7 @@
static const int MEDIA_KEYERR_UNKNOWN = 1;
- /** @domName MediaKeyError.code */
+ /// @domName MediaKeyError.code; @docsEditable true
final int code;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12388,28 +12805,28 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MediaKeyEvent
+/// @domName MediaKeyEvent; @docsEditable true
class MediaKeyEvent extends Event native "*MediaKeyEvent" {
- /** @domName MediaKeyEvent.defaultURL */
+ /// @domName MediaKeyEvent.defaultURL; @docsEditable true
final String defaultURL;
- /** @domName MediaKeyEvent.errorCode */
+ /// @domName MediaKeyEvent.errorCode; @docsEditable true
final MediaKeyError errorCode;
- /** @domName MediaKeyEvent.initData */
+ /// @domName MediaKeyEvent.initData; @docsEditable true
final Uint8Array initData;
- /** @domName MediaKeyEvent.keySystem */
+ /// @domName MediaKeyEvent.keySystem; @docsEditable true
final String keySystem;
- /** @domName MediaKeyEvent.message */
+ /// @domName MediaKeyEvent.message; @docsEditable true
final Uint8Array message;
- /** @domName MediaKeyEvent.sessionId */
+ /// @domName MediaKeyEvent.sessionId; @docsEditable true
final String sessionId;
- /** @domName MediaKeyEvent.systemCode */
+ /// @domName MediaKeyEvent.systemCode; @docsEditable true
final int systemCode;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12417,22 +12834,22 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MediaList
+/// @domName MediaList; @docsEditable true
class MediaList native "*MediaList" {
- /** @domName MediaList.length */
+ /// @domName MediaList.length; @docsEditable true
final int length;
- /** @domName MediaList.mediaText */
+ /// @domName MediaList.mediaText; @docsEditable true
String mediaText;
- /** @domName MediaList.appendMedium */
+ /// @domName MediaList.appendMedium; @docsEditable true
void appendMedium(String newMedium) native;
- /** @domName MediaList.deleteMedium */
+ /// @domName MediaList.deleteMedium; @docsEditable true
void deleteMedium(String oldMedium) native;
- /** @domName MediaList.item */
+ /// @domName MediaList.item; @docsEditable true
String item(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12440,19 +12857,19 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MediaQueryList
+/// @domName MediaQueryList; @docsEditable true
class MediaQueryList native "*MediaQueryList" {
- /** @domName MediaQueryList.matches */
+ /// @domName MediaQueryList.matches; @docsEditable true
final bool matches;
- /** @domName MediaQueryList.media */
+ /// @domName MediaQueryList.media; @docsEditable true
final String media;
- /** @domName MediaQueryList.addListener */
+ /// @domName MediaQueryList.addListener; @docsEditable true
void addListener(MediaQueryListListener listener) native;
- /** @domName MediaQueryList.removeListener */
+ /// @domName MediaQueryList.removeListener; @docsEditable true
void removeListener(MediaQueryListListener listener) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12463,7 +12880,7 @@
/// @domName MediaQueryListListener
abstract class MediaQueryListListener {
- /** @domName MediaQueryListListener.queryChanged */
+ /// @domName MediaQueryListListener.queryChanged; @docsEditable true
void queryChanged(MediaQueryList list);
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12471,39 +12888,39 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MediaSource
+/// @domName MediaSource; @docsEditable true
class MediaSource extends EventTarget native "*MediaSource" {
factory MediaSource() => _MediaSourceFactoryProvider.createMediaSource();
- /** @domName MediaSource.activeSourceBuffers */
+ /// @domName MediaSource.activeSourceBuffers; @docsEditable true
final SourceBufferList activeSourceBuffers;
- /** @domName MediaSource.duration */
+ /// @domName MediaSource.duration; @docsEditable true
num duration;
- /** @domName MediaSource.readyState */
+ /// @domName MediaSource.readyState; @docsEditable true
final String readyState;
- /** @domName MediaSource.sourceBuffers */
+ /// @domName MediaSource.sourceBuffers; @docsEditable true
final SourceBufferList sourceBuffers;
- /** @domName MediaSource.addEventListener */
+ /// @domName MediaSource.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName MediaSource.addSourceBuffer */
+ /// @domName MediaSource.addSourceBuffer; @docsEditable true
SourceBuffer addSourceBuffer(String type) native;
- /** @domName MediaSource.dispatchEvent */
+ /// @domName MediaSource.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event event) native "dispatchEvent";
- /** @domName MediaSource.endOfStream */
+ /// @domName MediaSource.endOfStream; @docsEditable true
void endOfStream(String error) native;
- /** @domName MediaSource.removeEventListener */
+ /// @domName MediaSource.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
- /** @domName MediaSource.removeSourceBuffer */
+ /// @domName MediaSource.removeSourceBuffer; @docsEditable true
void removeSourceBuffer(SourceBuffer buffer) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12511,14 +12928,12 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MediaStream
+/// @domName MediaStream; @docsEditable true
class MediaStream extends EventTarget native "*MediaStream" {
factory MediaStream(MediaStreamTrackList audioTracks, MediaStreamTrackList videoTracks) => _MediaStreamFactoryProvider.createMediaStream(audioTracks, videoTracks);
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
MediaStreamEvents get on =>
new MediaStreamEvents(this);
@@ -12526,25 +12941,25 @@
static const int LIVE = 1;
- /** @domName MediaStream.audioTracks */
+ /// @domName MediaStream.audioTracks; @docsEditable true
final MediaStreamTrackList audioTracks;
- /** @domName MediaStream.label */
+ /// @domName MediaStream.label; @docsEditable true
final String label;
- /** @domName MediaStream.readyState */
+ /// @domName MediaStream.readyState; @docsEditable true
final int readyState;
- /** @domName MediaStream.videoTracks */
+ /// @domName MediaStream.videoTracks; @docsEditable true
final MediaStreamTrackList videoTracks;
- /** @domName MediaStream.addEventListener */
+ /// @domName MediaStream.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName MediaStream.dispatchEvent */
+ /// @domName MediaStream.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event event) native "dispatchEvent";
- /** @domName MediaStream.removeEventListener */
+ /// @domName MediaStream.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
}
@@ -12558,10 +12973,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MediaStreamAudioSourceNode
+/// @domName MediaStreamAudioSourceNode; @docsEditable true
class MediaStreamAudioSourceNode extends AudioSourceNode native "*MediaStreamAudioSourceNode" {
- /** @domName MediaStreamAudioSourceNode.mediaStream */
+ /// @domName MediaStreamAudioSourceNode.mediaStream; @docsEditable true
final MediaStream mediaStream;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12569,10 +12984,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MediaStreamEvent
+/// @domName MediaStreamEvent; @docsEditable true
class MediaStreamEvent extends Event native "*MediaStreamEvent" {
- /** @domName MediaStreamEvent.stream */
+ /// @domName MediaStreamEvent.stream; @docsEditable true
final MediaStream stream;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12580,12 +12995,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MediaStreamTrack
+/// @domName MediaStreamTrack; @docsEditable true
class MediaStreamTrack extends EventTarget native "*MediaStreamTrack" {
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
MediaStreamTrackEvents get on =>
new MediaStreamTrackEvents(this);
@@ -12595,25 +13008,25 @@
static const int MUTED = 1;
- /** @domName MediaStreamTrack.enabled */
+ /// @domName MediaStreamTrack.enabled; @docsEditable true
bool enabled;
- /** @domName MediaStreamTrack.kind */
+ /// @domName MediaStreamTrack.kind; @docsEditable true
final String kind;
- /** @domName MediaStreamTrack.label */
+ /// @domName MediaStreamTrack.label; @docsEditable true
final String label;
- /** @domName MediaStreamTrack.readyState */
+ /// @domName MediaStreamTrack.readyState; @docsEditable true
final int readyState;
- /** @domName MediaStreamTrack.addEventListener */
+ /// @domName MediaStreamTrack.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName MediaStreamTrack.dispatchEvent */
+ /// @domName MediaStreamTrack.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event event) native "dispatchEvent";
- /** @domName MediaStreamTrack.removeEventListener */
+ /// @domName MediaStreamTrack.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
}
@@ -12631,10 +13044,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MediaStreamTrackEvent
+/// @domName MediaStreamTrackEvent; @docsEditable true
class MediaStreamTrackEvent extends Event native "*MediaStreamTrackEvent" {
- /** @domName MediaStreamTrackEvent.track */
+ /// @domName MediaStreamTrackEvent.track; @docsEditable true
final MediaStreamTrack track;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12642,34 +13055,32 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MediaStreamTrackList
+/// @domName MediaStreamTrackList; @docsEditable true
class MediaStreamTrackList extends EventTarget native "*MediaStreamTrackList" {
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
MediaStreamTrackListEvents get on =>
new MediaStreamTrackListEvents(this);
- /** @domName MediaStreamTrackList.length */
+ /// @domName MediaStreamTrackList.length; @docsEditable true
final int length;
- /** @domName MediaStreamTrackList.add */
+ /// @domName MediaStreamTrackList.add; @docsEditable true
void add(MediaStreamTrack track) native;
- /** @domName MediaStreamTrackList.addEventListener */
+ /// @domName MediaStreamTrackList.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName MediaStreamTrackList.dispatchEvent */
+ /// @domName MediaStreamTrackList.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event event) native "dispatchEvent";
- /** @domName MediaStreamTrackList.item */
+ /// @domName MediaStreamTrackList.item; @docsEditable true
MediaStreamTrack item(int index) native;
- /** @domName MediaStreamTrackList.remove */
+ /// @domName MediaStreamTrackList.remove; @docsEditable true
void remove(MediaStreamTrack track) native;
- /** @domName MediaStreamTrackList.removeEventListener */
+ /// @domName MediaStreamTrackList.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
}
@@ -12685,16 +13096,16 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MemoryInfo
+/// @domName MemoryInfo; @docsEditable true
class MemoryInfo native "*MemoryInfo" {
- /** @domName MemoryInfo.jsHeapSizeLimit */
+ /// @domName MemoryInfo.jsHeapSizeLimit; @docsEditable true
final int jsHeapSizeLimit;
- /** @domName MemoryInfo.totalJSHeapSize */
+ /// @domName MemoryInfo.totalJSHeapSize; @docsEditable true
final int totalJSHeapSize;
- /** @domName MemoryInfo.usedJSHeapSize */
+ /// @domName MemoryInfo.usedJSHeapSize; @docsEditable true
final int usedJSHeapSize;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12702,12 +13113,12 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLMenuElement
+/// @domName HTMLMenuElement; @docsEditable true
class MenuElement extends Element implements Element native "*HTMLMenuElement" {
- factory MenuElement() => _Elements.createMenuElement();
+ factory MenuElement() => document.$dom_createElement("menu");
- /** @domName HTMLMenuElement.compact */
+ /// @domName HTMLMenuElement.compact; @docsEditable true
bool compact;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12715,15 +13126,15 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MessageChannel
+/// @domName MessageChannel; @docsEditable true
class MessageChannel native "*MessageChannel" {
factory MessageChannel() => _MessageChannelFactoryProvider.createMessageChannel();
- /** @domName MessageChannel.port1 */
+ /// @domName MessageChannel.port1; @docsEditable true
final MessagePort port1;
- /** @domName MessageChannel.port2 */
+ /// @domName MessageChannel.port2; @docsEditable true
final MessagePort port2;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12731,30 +13142,31 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MessageEvent
+/// @domName MessageEvent; @docsEditable true
class MessageEvent extends Event native "*MessageEvent" {
- /** @domName MessageEvent.data */
+ /// @domName MessageEvent.data; @docsEditable true
dynamic get data => _convertNativeToDart_SerializedScriptValue(this._data);
dynamic get _data => JS("dynamic", "#.data", this);
- /** @domName MessageEvent.lastEventId */
+ /// @domName MessageEvent.lastEventId; @docsEditable true
final String lastEventId;
- /** @domName MessageEvent.origin */
+ /// @domName MessageEvent.origin; @docsEditable true
final String origin;
- /** @domName MessageEvent.ports */
+ /// @domName MessageEvent.ports; @docsEditable true
+ @Creates('=List')
final List ports;
- /** @domName MessageEvent.source */
+ /// @domName MessageEvent.source; @docsEditable true
Window get source => _convertNativeToDart_Window(this._source);
dynamic get _source => JS("dynamic", "#.source", this);
- /** @domName MessageEvent.initMessageEvent */
+ /// @domName MessageEvent.initMessageEvent; @docsEditable true
void initMessageEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Object dataArg, String originArg, String lastEventIdArg, LocalWindow sourceArg, List messagePorts) native;
- /** @domName MessageEvent.webkitInitMessageEvent */
+ /// @domName MessageEvent.webkitInitMessageEvent; @docsEditable true
void webkitInitMessageEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Object dataArg, String originArg, String lastEventIdArg, LocalWindow sourceArg, List transferables) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12762,25 +13174,23 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MessagePort
+/// @domName MessagePort; @docsEditable true
class MessagePort extends EventTarget native "*MessagePort" {
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
MessagePortEvents get on =>
new MessagePortEvents(this);
- /** @domName MessagePort.addEventListener */
+ /// @domName MessagePort.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName MessagePort.close */
+ /// @domName MessagePort.close; @docsEditable true
void close() native;
- /** @domName MessagePort.dispatchEvent */
+ /// @domName MessagePort.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event evt) native "dispatchEvent";
- /** @domName MessagePort.postMessage */
+ /// @domName MessagePort.postMessage; @docsEditable true
void postMessage(/*any*/ message, [List messagePorts]) {
if (?messagePorts) {
var message_1 = _convertDartToNative_SerializedScriptValue(message);
@@ -12794,10 +13204,10 @@
void _postMessage_1(message, List messagePorts) native "postMessage";
void _postMessage_2(message) native "postMessage";
- /** @domName MessagePort.removeEventListener */
+ /// @domName MessagePort.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
- /** @domName MessagePort.start */
+ /// @domName MessagePort.start; @docsEditable true
void start() native;
}
@@ -12811,19 +13221,19 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLMetaElement
+/// @domName HTMLMetaElement; @docsEditable true
class MetaElement extends Element implements Element native "*HTMLMetaElement" {
- /** @domName HTMLMetaElement.content */
+ /// @domName HTMLMetaElement.content; @docsEditable true
String content;
- /** @domName HTMLMetaElement.httpEquiv */
+ /// @domName HTMLMetaElement.httpEquiv; @docsEditable true
String httpEquiv;
- /** @domName HTMLMetaElement.name */
+ /// @domName HTMLMetaElement.name; @docsEditable true
String name;
- /** @domName HTMLMetaElement.scheme */
+ /// @domName HTMLMetaElement.scheme; @docsEditable true
String scheme;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12831,13 +13241,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Metadata
+/// @domName Metadata; @docsEditable true
class Metadata native "*Metadata" {
- /** @domName Metadata.modificationTime */
+ /// @domName Metadata.modificationTime; @docsEditable true
final Date modificationTime;
- /** @domName Metadata.size */
+ /// @domName Metadata.size; @docsEditable true
final int size;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12853,30 +13263,31 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLMeterElement
+/// @domName HTMLMeterElement; @docsEditable true
class MeterElement extends Element implements Element native "*HTMLMeterElement" {
- factory MeterElement() => _Elements.createMeterElement();
+ factory MeterElement() => document.$dom_createElement("meter");
- /** @domName HTMLMeterElement.high */
+ /// @domName HTMLMeterElement.high; @docsEditable true
num high;
- /** @domName HTMLMeterElement.labels */
+ /// @domName HTMLMeterElement.labels; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
final List<Node> labels;
- /** @domName HTMLMeterElement.low */
+ /// @domName HTMLMeterElement.low; @docsEditable true
num low;
- /** @domName HTMLMeterElement.max */
+ /// @domName HTMLMeterElement.max; @docsEditable true
num max;
- /** @domName HTMLMeterElement.min */
+ /// @domName HTMLMeterElement.min; @docsEditable true
num min;
- /** @domName HTMLMeterElement.optimum */
+ /// @domName HTMLMeterElement.optimum; @docsEditable true
num optimum;
- /** @domName HTMLMeterElement.value */
+ /// @domName HTMLMeterElement.value; @docsEditable true
num value;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12884,13 +13295,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLModElement
+/// @domName HTMLModElement; @docsEditable true
class ModElement extends Element implements Element native "*HTMLModElement" {
- /** @domName HTMLModElement.cite */
+ /// @domName HTMLModElement.cite; @docsEditable true
String cite;
- /** @domName HTMLModElement.dateTime */
+ /// @domName HTMLModElement.dateTime; @docsEditable true
String dateTime;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -12910,59 +13321,59 @@
ctrlKey, altKey, shiftKey, metaKey,
relatedTarget);
- /** @domName MouseEvent.altKey */
+ /// @domName MouseEvent.altKey; @docsEditable true
final bool altKey;
- /** @domName MouseEvent.button */
+ /// @domName MouseEvent.button; @docsEditable true
final int button;
- /** @domName MouseEvent.clientX */
+ /// @domName MouseEvent.clientX; @docsEditable true
final int clientX;
- /** @domName MouseEvent.clientY */
+ /// @domName MouseEvent.clientY; @docsEditable true
final int clientY;
- /** @domName MouseEvent.ctrlKey */
+ /// @domName MouseEvent.ctrlKey; @docsEditable true
final bool ctrlKey;
- /** @domName MouseEvent.dataTransfer */
+ /// @domName MouseEvent.dataTransfer; @docsEditable true
final Clipboard dataTransfer;
- /** @domName MouseEvent.fromElement */
+ /// @domName MouseEvent.fromElement; @docsEditable true
final Node fromElement;
- /** @domName MouseEvent.metaKey */
+ /// @domName MouseEvent.metaKey; @docsEditable true
final bool metaKey;
- /** @domName MouseEvent.relatedTarget */
+ /// @domName MouseEvent.relatedTarget; @docsEditable true
EventTarget get relatedTarget => _convertNativeToDart_EventTarget(this._relatedTarget);
dynamic get _relatedTarget => JS("dynamic", "#.relatedTarget", this);
- /** @domName MouseEvent.screenX */
+ /// @domName MouseEvent.screenX; @docsEditable true
final int screenX;
- /** @domName MouseEvent.screenY */
+ /// @domName MouseEvent.screenY; @docsEditable true
final int screenY;
- /** @domName MouseEvent.shiftKey */
+ /// @domName MouseEvent.shiftKey; @docsEditable true
final bool shiftKey;
- /** @domName MouseEvent.toElement */
+ /// @domName MouseEvent.toElement; @docsEditable true
final Node toElement;
- /** @domName MouseEvent.webkitMovementX */
+ /// @domName MouseEvent.webkitMovementX; @docsEditable true
final int webkitMovementX;
- /** @domName MouseEvent.webkitMovementY */
+ /// @domName MouseEvent.webkitMovementY; @docsEditable true
final int webkitMovementY;
- /** @domName MouseEvent.x */
+ /// @domName MouseEvent.x; @docsEditable true
final int x;
- /** @domName MouseEvent.y */
+ /// @domName MouseEvent.y; @docsEditable true
final int y;
- /** @domName MouseEvent.initMouseEvent */
+ /// @domName MouseEvent.initMouseEvent; @docsEditable true
void $dom_initMouseEvent(String type, bool canBubble, bool cancelable, LocalWindow view, int detail, int screenX, int screenY, int clientX, int clientY, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, int button, EventTarget relatedTarget) {
var relatedTarget_1 = _convertDartToNative_EventTarget(relatedTarget);
_$dom_initMouseEvent_1(type, canBubble, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget_1);
@@ -13012,7 +13423,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MutationEvent
+/// @domName MutationEvent; @docsEditable true
class MutationEvent extends Event native "*MutationEvent" {
static const int ADDITION = 2;
@@ -13021,22 +13432,22 @@
static const int REMOVAL = 3;
- /** @domName MutationEvent.attrChange */
+ /// @domName MutationEvent.attrChange; @docsEditable true
final int attrChange;
- /** @domName MutationEvent.attrName */
+ /// @domName MutationEvent.attrName; @docsEditable true
final String attrName;
- /** @domName MutationEvent.newValue */
+ /// @domName MutationEvent.newValue; @docsEditable true
final String newValue;
- /** @domName MutationEvent.prevValue */
+ /// @domName MutationEvent.prevValue; @docsEditable true
final String prevValue;
- /** @domName MutationEvent.relatedNode */
+ /// @domName MutationEvent.relatedNode; @docsEditable true
final Node relatedNode;
- /** @domName MutationEvent.initMutationEvent */
+ /// @domName MutationEvent.initMutationEvent; @docsEditable true
void initMutationEvent(String type, bool canBubble, bool cancelable, Node relatedNode, String prevValue, String newValue, String attrName, int attrChange) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -13048,10 +13459,10 @@
factory MutationObserver(MutationCallback callback) => _MutationObserverFactoryProvider.createMutationObserver(callback);
- /** @domName MutationObserver.disconnect */
+ /// @domName MutationObserver.disconnect; @docsEditable true
void disconnect() native;
- /** @domName MutationObserver._observe */
+ /// @domName MutationObserver._observe; @docsEditable true
void _observe(Node target, Map options) {
var options_1 = _convertDartToNative_Dictionary(options);
__observe_1(target, options_1);
@@ -13059,7 +13470,7 @@
}
void __observe_1(Node target, options) native "observe";
- /** @domName MutationObserver.takeRecords */
+ /// @domName MutationObserver.takeRecords; @docsEditable true
List<MutationRecord> takeRecords() native;
void observe(Node target,
@@ -13128,34 +13539,36 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MutationRecord
+/// @domName MutationRecord; @docsEditable true
class MutationRecord native "*MutationRecord" {
- /** @domName MutationRecord.addedNodes */
+ /// @domName MutationRecord.addedNodes; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
final List<Node> addedNodes;
- /** @domName MutationRecord.attributeName */
+ /// @domName MutationRecord.attributeName; @docsEditable true
final String attributeName;
- /** @domName MutationRecord.attributeNamespace */
+ /// @domName MutationRecord.attributeNamespace; @docsEditable true
final String attributeNamespace;
- /** @domName MutationRecord.nextSibling */
+ /// @domName MutationRecord.nextSibling; @docsEditable true
final Node nextSibling;
- /** @domName MutationRecord.oldValue */
+ /// @domName MutationRecord.oldValue; @docsEditable true
final String oldValue;
- /** @domName MutationRecord.previousSibling */
+ /// @domName MutationRecord.previousSibling; @docsEditable true
final Node previousSibling;
- /** @domName MutationRecord.removedNodes */
+ /// @domName MutationRecord.removedNodes; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
final List<Node> removedNodes;
- /** @domName MutationRecord.target */
+ /// @domName MutationRecord.target; @docsEditable true
final Node target;
- /** @domName MutationRecord.type */
+ /// @domName MutationRecord.type; @docsEditable true
final String type;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -13163,10 +13576,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName NamedNodeMap
+/// @domName NamedNodeMap; @docsEditable true
class NamedNodeMap implements JavaScriptIndexingBehavior, List<Node> native "*NamedNodeMap" {
- /** @domName NamedNodeMap.length */
+ /// @domName NamedNodeMap.length; @docsEditable true
final int length;
Node operator[](int index) => JS("Node", "#[#]", this, index);
@@ -13229,6 +13642,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ Node get first => this[0];
+
Node get last => this[length - 1];
Node removeLast() {
@@ -13252,25 +13667,25 @@
// -- end List<Node> mixins.
- /** @domName NamedNodeMap.getNamedItem */
+ /// @domName NamedNodeMap.getNamedItem; @docsEditable true
Node getNamedItem(String name) native;
- /** @domName NamedNodeMap.getNamedItemNS */
+ /// @domName NamedNodeMap.getNamedItemNS; @docsEditable true
Node getNamedItemNS(String namespaceURI, String localName) native;
- /** @domName NamedNodeMap.item */
+ /// @domName NamedNodeMap.item; @docsEditable true
Node item(int index) native;
- /** @domName NamedNodeMap.removeNamedItem */
+ /// @domName NamedNodeMap.removeNamedItem; @docsEditable true
Node removeNamedItem(String name) native;
- /** @domName NamedNodeMap.removeNamedItemNS */
+ /// @domName NamedNodeMap.removeNamedItemNS; @docsEditable true
Node removeNamedItemNS(String namespaceURI, String localName) native;
- /** @domName NamedNodeMap.setNamedItem */
+ /// @domName NamedNodeMap.setNamedItem; @docsEditable true
Node setNamedItem(Node node) native;
- /** @domName NamedNodeMap.setNamedItemNS */
+ /// @domName NamedNodeMap.setNamedItemNS; @docsEditable true
Node setNamedItemNS(Node node) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -13278,67 +13693,68 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Navigator
+/// @domName Navigator; @docsEditable true
class Navigator native "*Navigator" {
- /** @domName Navigator.appCodeName */
+ /// @domName Navigator.appCodeName; @docsEditable true
final String appCodeName;
- /** @domName Navigator.appName */
+ /// @domName Navigator.appName; @docsEditable true
final String appName;
- /** @domName Navigator.appVersion */
+ /// @domName Navigator.appVersion; @docsEditable true
final String appVersion;
- /** @domName Navigator.cookieEnabled */
+ /// @domName Navigator.cookieEnabled; @docsEditable true
final bool cookieEnabled;
- /** @domName Navigator.geolocation */
+ /// @domName Navigator.geolocation; @docsEditable true
final Geolocation geolocation;
- /** @domName Navigator.language */
+ /// @domName Navigator.language; @docsEditable true
final String language;
- /** @domName Navigator.mimeTypes */
+ /// @domName Navigator.mimeTypes; @docsEditable true
final DOMMimeTypeArray mimeTypes;
- /** @domName Navigator.onLine */
+ /// @domName Navigator.onLine; @docsEditable true
final bool onLine;
- /** @domName Navigator.platform */
+ /// @domName Navigator.platform; @docsEditable true
final String platform;
- /** @domName Navigator.plugins */
+ /// @domName Navigator.plugins; @docsEditable true
final DOMPluginArray plugins;
- /** @domName Navigator.product */
+ /// @domName Navigator.product; @docsEditable true
final String product;
- /** @domName Navigator.productSub */
+ /// @domName Navigator.productSub; @docsEditable true
final String productSub;
- /** @domName Navigator.userAgent */
+ /// @domName Navigator.userAgent; @docsEditable true
final String userAgent;
- /** @domName Navigator.vendor */
+ /// @domName Navigator.vendor; @docsEditable true
final String vendor;
- /** @domName Navigator.vendorSub */
+ /// @domName Navigator.vendorSub; @docsEditable true
final String vendorSub;
- /** @domName Navigator.webkitBattery */
+ /// @domName Navigator.webkitBattery; @docsEditable true
final BatteryManager webkitBattery;
- /** @domName Navigator.getStorageUpdates */
+ /// @domName Navigator.getStorageUpdates; @docsEditable true
void getStorageUpdates() native;
- /** @domName Navigator.javaEnabled */
+ /// @domName Navigator.javaEnabled; @docsEditable true
bool javaEnabled() native;
- /** @domName Navigator.webkitGetGamepads */
+ /// @domName Navigator.webkitGetGamepads; @docsEditable true
+ @Returns('_GamepadList') @Creates('_GamepadList')
List<Gamepad> webkitGetGamepads() native;
- /** @domName Navigator.webkitGetUserMedia */
+ /// @domName Navigator.webkitGetUserMedia; @docsEditable true
void webkitGetUserMedia(Map options, NavigatorUserMediaSuccessCallback successCallback, [NavigatorUserMediaErrorCallback errorCallback]) {
if (?errorCallback) {
var options_1 = _convertDartToNative_Dictionary(options);
@@ -13357,12 +13773,12 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName NavigatorUserMediaError
+/// @domName NavigatorUserMediaError; @docsEditable true
class NavigatorUserMediaError native "*NavigatorUserMediaError" {
static const int PERMISSION_DENIED = 1;
- /** @domName NavigatorUserMediaError.code */
+ /// @domName NavigatorUserMediaError.code; @docsEditable true
final int code;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -13442,7 +13858,7 @@
Collection map(f(Node element)) => _Collections.map(this, [], f);
Collection<Node> filter(bool f(Node element)) =>
- new _NodeListWrapper(_Collections.filter(this, <Node>[], f));
+ _Collections.filter(this, <Node>[], f);
bool every(bool f(Node element)) => _Collections.every(this, f);
@@ -13478,7 +13894,7 @@
"Cannot insertRange on immutable List.");
}
List<Node> getRange(int start, int rangeLength) =>
- new _NodeListWrapper(_Lists.getRange(this, start, rangeLength, <Node>[]));
+ _Lists.getRange(this, start, rangeLength, <Node>[]);
// -- end List<Node> mixins.
@@ -13568,69 +13984,69 @@
static const int TEXT_NODE = 3;
- /** @domName Node.attributes */
+ /// @domName Node.attributes; @docsEditable true
NamedNodeMap get $dom_attributes => JS("NamedNodeMap", "#.attributes", this);
- /** @domName Node.childNodes */
- List<Node> get $dom_childNodes => JS("List<Node>", "#.childNodes", this);
+ /// @domName Node.childNodes; @docsEditable true
+ List<Node> get $dom_childNodes => JS("_NodeList", "#.childNodes", this);
- /** @domName Node.firstChild */
+ /// @domName Node.firstChild; @docsEditable true
Node get $dom_firstChild => JS("Node", "#.firstChild", this);
- /** @domName Node.lastChild */
+ /// @domName Node.lastChild; @docsEditable true
Node get $dom_lastChild => JS("Node", "#.lastChild", this);
- /** @domName Node.nextSibling */
+ /// @domName Node.nextSibling; @docsEditable true
Node get nextNode => JS("Node", "#.nextSibling", this);
- /** @domName Node.nodeType */
+ /// @domName Node.nodeType; @docsEditable true
final int nodeType;
- /** @domName Node.ownerDocument */
+ /// @domName Node.ownerDocument; @docsEditable true
Document get document => JS("Document", "#.ownerDocument", this);
- /** @domName Node.parentNode */
+ /// @domName Node.parentNode; @docsEditable true
Node get parent => JS("Node", "#.parentNode", this);
- /** @domName Node.previousSibling */
+ /// @domName Node.previousSibling; @docsEditable true
Node get previousNode => JS("Node", "#.previousSibling", this);
- /** @domName Node.textContent */
+ /// @domName Node.textContent; @docsEditable true
String get text => JS("String", "#.textContent", this);
- /** @domName Node.textContent */
+ /// @domName Node.textContent; @docsEditable true
void set text(String value) {
JS("void", "#.textContent = #", this, value);
}
- /** @domName Node.addEventListener */
+ /// @domName Node.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName Node.appendChild */
+ /// @domName Node.appendChild; @docsEditable true
Node $dom_appendChild(Node newChild) native "appendChild";
- /** @domName Node.cloneNode */
+ /// @domName Node.cloneNode; @docsEditable true
Node clone(bool deep) native "cloneNode";
- /** @domName Node.contains */
+ /// @domName Node.contains; @docsEditable true
bool contains(Node other) native;
- /** @domName Node.dispatchEvent */
+ /// @domName Node.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event event) native "dispatchEvent";
- /** @domName Node.hasChildNodes */
+ /// @domName Node.hasChildNodes; @docsEditable true
bool hasChildNodes() native;
- /** @domName Node.insertBefore */
+ /// @domName Node.insertBefore; @docsEditable true
Node insertBefore(Node newChild, Node refChild) native;
- /** @domName Node.removeChild */
+ /// @domName Node.removeChild; @docsEditable true
Node $dom_removeChild(Node oldChild) native "removeChild";
- /** @domName Node.removeEventListener */
+ /// @domName Node.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
- /** @domName Node.replaceChild */
+ /// @domName Node.replaceChild; @docsEditable true
Node $dom_replaceChild(Node newChild, Node oldChild) native "replaceChild";
}
@@ -13639,7 +14055,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName NodeFilter
+/// @domName NodeFilter; @docsEditable true
class NodeFilter native "*NodeFilter" {
static const int FILTER_ACCEPT = 1;
@@ -13674,7 +14090,7 @@
static const int SHOW_TEXT = 0x00000004;
- /** @domName NodeFilter.acceptNode */
+ /// @domName NodeFilter.acceptNode; @docsEditable true
int acceptNode(Node n) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -13682,34 +14098,34 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName NodeIterator
+/// @domName NodeIterator; @docsEditable true
class NodeIterator native "*NodeIterator" {
- /** @domName NodeIterator.expandEntityReferences */
+ /// @domName NodeIterator.expandEntityReferences; @docsEditable true
final bool expandEntityReferences;
- /** @domName NodeIterator.filter */
+ /// @domName NodeIterator.filter; @docsEditable true
final NodeFilter filter;
- /** @domName NodeIterator.pointerBeforeReferenceNode */
+ /// @domName NodeIterator.pointerBeforeReferenceNode; @docsEditable true
final bool pointerBeforeReferenceNode;
- /** @domName NodeIterator.referenceNode */
+ /// @domName NodeIterator.referenceNode; @docsEditable true
final Node referenceNode;
- /** @domName NodeIterator.root */
+ /// @domName NodeIterator.root; @docsEditable true
final Node root;
- /** @domName NodeIterator.whatToShow */
+ /// @domName NodeIterator.whatToShow; @docsEditable true
final int whatToShow;
- /** @domName NodeIterator.detach */
+ /// @domName NodeIterator.detach; @docsEditable true
void detach() native;
- /** @domName NodeIterator.nextNode */
+ /// @domName NodeIterator.nextNode; @docsEditable true
Node nextNode() native;
- /** @domName NodeIterator.previousNode */
+ /// @domName NodeIterator.previousNode; @docsEditable true
Node previousNode() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -13717,199 +14133,13 @@
// BSD-style license that can be found in the LICENSE file.
-// TODO(nweiz): when all implementations we target have the same name for the
-// implementation of List<E>, extend that rather than wrapping.
-class _ListWrapper<E> implements List<E> {
- List _list;
-
- _ListWrapper(List this._list);
-
- Iterator<E> iterator() => _list.iterator();
-
- bool contains(E element) => _list.contains(element);
-
- void forEach(void f(E element)) => _list.forEach(f);
-
- Collection map(f(E element)) => _list.map(f);
-
- List<E> filter(bool f(E element)) => _list.filter(f);
-
- bool every(bool f(E element)) => _list.every(f);
-
- bool some(bool f(E element)) => _list.some(f);
-
- bool get isEmpty => _list.isEmpty;
-
- int get length => _list.length;
-
- E operator [](int index) => _list[index];
-
- void operator []=(int index, E value) { _list[index] = value; }
-
- void set length(int newLength) { _list.length = newLength; }
-
- void add(E value) => _list.add(value);
-
- void addLast(E value) => _list.addLast(value);
-
- void addAll(Collection<E> collection) => _list.addAll(collection);
-
- void sort([Comparator<E> compare = Comparable.compare]) => _list.sort(compare);
-
- int indexOf(E element, [int start = 0]) => _list.indexOf(element, start);
-
- int lastIndexOf(E element, [int start = 0]) =>
- _list.lastIndexOf(element, start);
-
- void clear() => _list.clear();
-
- E removeLast() => _list.removeLast();
-
- E get last => _list.last;
-
- List<E> getRange(int start, int rangeLength) =>
- _list.getRange(start, rangeLength);
-
- void setRange(int start, int rangeLength, List<E> from, [int startFrom = 0])
- => _list.setRange(start, rangeLength, from, startFrom);
-
- void removeRange(int start, int rangeLength) =>
- _list.removeRange(start, rangeLength);
-
- void insertRange(int start, int rangeLength, [E initialValue = null]) =>
- _list.insertRange(start, rangeLength, initialValue);
-
- E get first => _list[0];
-}
-
-/**
- * This class is used to insure the results of list operations are NodeLists
- * instead of lists.
- */
-class _NodeListWrapper extends _ListWrapper<Node> implements List {
- _NodeListWrapper(List list) : super(list);
-
- List<Node> filter(bool f(Node element)) =>
- new _NodeListWrapper(_list.filter(f));
-
- List<Node> getRange(int start, int rangeLength) =>
- new _NodeListWrapper(_list.getRange(start, rangeLength));
-}
-
-class NodeList implements JavaScriptIndexingBehavior, List<Node> native "*NodeList" {
- Node _parent;
-
- // -- start List<Node> mixins.
- // Node is the element type.
-
- // From Iterable<Node>:
-
- Iterator<Node> iterator() {
- // Note: NodeLists are not fixed size. And most probably length shouldn't
- // be cached in both iterator _and_ forEach method. For now caching it
- // for consistency.
- return new FixedSizeListIterator<Node>(this);
- }
-
- // From Collection<Node>:
-
- void add(Node value) {
- _parent.$dom_appendChild(value);
- }
-
- void addLast(Node value) {
- _parent.$dom_appendChild(value);
- }
-
- void addAll(Collection<Node> collection) {
- for (Node node in collection) {
- _parent.$dom_appendChild(node);
- }
- }
-
- Node removeLast() {
- final result = this.last;
- if (result != null) {
- _parent.$dom_removeChild(result);
- }
- return result;
- }
-
- void clear() {
- _parent.text = '';
- }
-
- void operator []=(int index, Node value) {
- _parent.$dom_replaceChild(value, this[index]);
- }
-
- bool contains(Node element) => _Collections.contains(this, element);
-
- void forEach(void f(Node element)) => _Collections.forEach(this, f);
-
- Collection map(f(Node element)) => _Collections.map(this, [], f);
-
- Collection<Node> filter(bool f(Node element)) =>
- new _NodeListWrapper(_Collections.filter(this, <Node>[], f));
-
- bool every(bool f(Node element)) => _Collections.every(this, f);
-
- bool some(bool f(Node element)) => _Collections.some(this, f);
-
- bool get isEmpty => this.length == 0;
-
- // From List<Node>:
-
- void sort([Comparator<Node> compare = Comparable.compare]) {
- throw new UnsupportedError("Cannot sort immutable List.");
- }
-
- int indexOf(Node element, [int start = 0]) =>
- _Lists.indexOf(this, element, start, this.length);
-
- int lastIndexOf(Node element, [int start = 0]) =>
- _Lists.lastIndexOf(this, element, start);
-
- Node get last => this[length - 1];
- Node get first => this[0];
-
- // FIXME: implement thesee.
- void setRange(int start, int rangeLength, List<Node> from, [int startFrom]) {
- throw new UnsupportedError("Cannot setRange on immutable List.");
- }
- void removeRange(int start, int rangeLength) {
- throw new UnsupportedError("Cannot removeRange on immutable List.");
- }
- void insertRange(int start, int rangeLength, [Node initialValue]) {
- throw new UnsupportedError("Cannot insertRange on immutable List.");
- }
- List<Node> getRange(int start, int rangeLength) =>
- new _NodeListWrapper(_Lists.getRange(this, start, rangeLength, <Node>[]));
-
- // -- end List<Node> mixins.
-
-
- /** @domName NodeList.length */
- final int length;
-
- Node operator[](int index) => JS("Node", "#[#]", this, index);
-
- /** @domName NodeList.item */
- Node _item(int index) native "item";
-
-}
-// Copyright (c) 2012, 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.
-
-
-/// @domName Notation
+/// @domName Notation; @docsEditable true
class Notation extends Node native "*Notation" {
- /** @domName Notation.publicId */
+ /// @domName Notation.publicId; @docsEditable true
final String publicId;
- /** @domName Notation.systemId */
+ /// @domName Notation.systemId; @docsEditable true
final String systemId;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -13917,7 +14147,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Notification
+/// @domName Notification; @docsEditable true
class Notification extends EventTarget native "*Notification" {
factory Notification(String title, [Map options]) {
@@ -13927,43 +14157,41 @@
return _NotificationFactoryProvider.createNotification(title, options);
}
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
NotificationEvents get on =>
new NotificationEvents(this);
- /** @domName Notification.dir */
+ /// @domName Notification.dir; @docsEditable true
String dir;
- /** @domName Notification.permission */
+ /// @domName Notification.permission; @docsEditable true
final String permission;
- /** @domName Notification.replaceId */
+ /// @domName Notification.replaceId; @docsEditable true
String replaceId;
- /** @domName Notification.tag */
+ /// @domName Notification.tag; @docsEditable true
String tag;
- /** @domName Notification.addEventListener */
+ /// @domName Notification.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName Notification.cancel */
+ /// @domName Notification.cancel; @docsEditable true
void cancel() native;
- /** @domName Notification.close */
+ /// @domName Notification.close; @docsEditable true
void close() native;
- /** @domName Notification.dispatchEvent */
+ /// @domName Notification.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event evt) native "dispatchEvent";
- /** @domName Notification.removeEventListener */
+ /// @domName Notification.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
- /** @domName Notification.requestPermission */
+ /// @domName Notification.requestPermission; @docsEditable true
static void requestPermission(NotificationPermissionCallback callback) native;
- /** @domName Notification.show */
+ /// @domName Notification.show; @docsEditable true
void show() native;
}
@@ -13985,19 +14213,19 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName NotificationCenter
+/// @domName NotificationCenter; @docsEditable true
class NotificationCenter native "*NotificationCenter" {
- /** @domName NotificationCenter.checkPermission */
+ /// @domName NotificationCenter.checkPermission; @docsEditable true
int checkPermission() native;
- /** @domName NotificationCenter.createHTMLNotification */
+ /// @domName NotificationCenter.createHTMLNotification; @docsEditable true
Notification createHTMLNotification(String url) native;
- /** @domName NotificationCenter.createNotification */
+ /// @domName NotificationCenter.createNotification; @docsEditable true
Notification createNotification(String iconUrl, String title, String body) native;
- /** @domName NotificationCenter.requestPermission */
+ /// @domName NotificationCenter.requestPermission; @docsEditable true
void requestPermission(VoidCallback callback) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14013,7 +14241,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName OESElementIndexUint
+/// @domName OESElementIndexUint; @docsEditable true
class OESElementIndexUint native "*OESElementIndexUint" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14021,7 +14249,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName OESStandardDerivatives
+/// @domName OESStandardDerivatives; @docsEditable true
class OESStandardDerivatives native "*OESStandardDerivatives" {
static const int FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8B8B;
@@ -14031,7 +14259,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName OESTextureFloat
+/// @domName OESTextureFloat; @docsEditable true
class OESTextureFloat native "*OESTextureFloat" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14039,21 +14267,21 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName OESVertexArrayObject
+/// @domName OESVertexArrayObject; @docsEditable true
class OESVertexArrayObject native "*OESVertexArrayObject" {
static const int VERTEX_ARRAY_BINDING_OES = 0x85B5;
- /** @domName OESVertexArrayObject.bindVertexArrayOES */
+ /// @domName OESVertexArrayObject.bindVertexArrayOES; @docsEditable true
void bindVertexArrayOES(WebGLVertexArrayObjectOES arrayObject) native;
- /** @domName OESVertexArrayObject.createVertexArrayOES */
+ /// @domName OESVertexArrayObject.createVertexArrayOES; @docsEditable true
WebGLVertexArrayObjectOES createVertexArrayOES() native;
- /** @domName OESVertexArrayObject.deleteVertexArrayOES */
+ /// @domName OESVertexArrayObject.deleteVertexArrayOES; @docsEditable true
void deleteVertexArrayOES(WebGLVertexArrayObjectOES arrayObject) native;
- /** @domName OESVertexArrayObject.isVertexArrayOES */
+ /// @domName OESVertexArrayObject.isVertexArrayOES; @docsEditable true
bool isVertexArrayOES(WebGLVertexArrayObjectOES arrayObject) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14061,21 +14289,21 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLOListElement
+/// @domName HTMLOListElement; @docsEditable true
class OListElement extends Element implements Element native "*HTMLOListElement" {
- factory OListElement() => _Elements.createOListElement();
+ factory OListElement() => document.$dom_createElement("ol");
- /** @domName HTMLOListElement.compact */
+ /// @domName HTMLOListElement.compact; @docsEditable true
bool compact;
- /** @domName HTMLOListElement.reversed */
+ /// @domName HTMLOListElement.reversed; @docsEditable true
bool reversed;
- /** @domName HTMLOListElement.start */
+ /// @domName HTMLOListElement.start; @docsEditable true
int start;
- /** @domName HTMLOListElement.type */
+ /// @domName HTMLOListElement.type; @docsEditable true
String type;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14083,75 +14311,75 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLObjectElement
+/// @domName HTMLObjectElement; @docsEditable true
class ObjectElement extends Element implements Element native "*HTMLObjectElement" {
- factory ObjectElement() => _Elements.createObjectElement();
+ factory ObjectElement() => document.$dom_createElement("object");
- /** @domName HTMLObjectElement.align */
+ /// @domName HTMLObjectElement.align; @docsEditable true
String align;
- /** @domName HTMLObjectElement.archive */
+ /// @domName HTMLObjectElement.archive; @docsEditable true
String archive;
- /** @domName HTMLObjectElement.border */
+ /// @domName HTMLObjectElement.border; @docsEditable true
String border;
- /** @domName HTMLObjectElement.code */
+ /// @domName HTMLObjectElement.code; @docsEditable true
String code;
- /** @domName HTMLObjectElement.codeBase */
+ /// @domName HTMLObjectElement.codeBase; @docsEditable true
String codeBase;
- /** @domName HTMLObjectElement.codeType */
+ /// @domName HTMLObjectElement.codeType; @docsEditable true
String codeType;
- /** @domName HTMLObjectElement.data */
+ /// @domName HTMLObjectElement.data; @docsEditable true
String data;
- /** @domName HTMLObjectElement.declare */
+ /// @domName HTMLObjectElement.declare; @docsEditable true
bool declare;
- /** @domName HTMLObjectElement.form */
+ /// @domName HTMLObjectElement.form; @docsEditable true
final FormElement form;
- /** @domName HTMLObjectElement.height */
+ /// @domName HTMLObjectElement.height; @docsEditable true
String height;
- /** @domName HTMLObjectElement.hspace */
+ /// @domName HTMLObjectElement.hspace; @docsEditable true
int hspace;
- /** @domName HTMLObjectElement.name */
+ /// @domName HTMLObjectElement.name; @docsEditable true
String name;
- /** @domName HTMLObjectElement.standby */
+ /// @domName HTMLObjectElement.standby; @docsEditable true
String standby;
- /** @domName HTMLObjectElement.type */
+ /// @domName HTMLObjectElement.type; @docsEditable true
String type;
- /** @domName HTMLObjectElement.useMap */
+ /// @domName HTMLObjectElement.useMap; @docsEditable true
String useMap;
- /** @domName HTMLObjectElement.validationMessage */
+ /// @domName HTMLObjectElement.validationMessage; @docsEditable true
final String validationMessage;
- /** @domName HTMLObjectElement.validity */
+ /// @domName HTMLObjectElement.validity; @docsEditable true
final ValidityState validity;
- /** @domName HTMLObjectElement.vspace */
+ /// @domName HTMLObjectElement.vspace; @docsEditable true
int vspace;
- /** @domName HTMLObjectElement.width */
+ /// @domName HTMLObjectElement.width; @docsEditable true
String width;
- /** @domName HTMLObjectElement.willValidate */
+ /// @domName HTMLObjectElement.willValidate; @docsEditable true
final bool willValidate;
- /** @domName HTMLObjectElement.checkValidity */
+ /// @domName HTMLObjectElement.checkValidity; @docsEditable true
bool checkValidity() native;
- /** @domName HTMLObjectElement.setCustomValidity */
+ /// @domName HTMLObjectElement.setCustomValidity; @docsEditable true
void setCustomValidity(String error) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14159,10 +14387,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName OfflineAudioCompletionEvent
+/// @domName OfflineAudioCompletionEvent; @docsEditable true
class OfflineAudioCompletionEvent extends Event native "*OfflineAudioCompletionEvent" {
- /** @domName OfflineAudioCompletionEvent.renderedBuffer */
+ /// @domName OfflineAudioCompletionEvent.renderedBuffer; @docsEditable true
final AudioBuffer renderedBuffer;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14170,15 +14398,15 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLOptGroupElement
+/// @domName HTMLOptGroupElement; @docsEditable true
class OptGroupElement extends Element implements Element native "*HTMLOptGroupElement" {
- factory OptGroupElement() => _Elements.createOptGroupElement();
+ factory OptGroupElement() => document.$dom_createElement("optgroup");
- /** @domName HTMLOptGroupElement.disabled */
+ /// @domName HTMLOptGroupElement.disabled; @docsEditable true
bool disabled;
- /** @domName HTMLOptGroupElement.label */
+ /// @domName HTMLOptGroupElement.label; @docsEditable true
String label;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14186,7 +14414,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLOptionElement
+/// @domName HTMLOptionElement; @docsEditable true
class OptionElement extends Element implements Element native "*HTMLOptionElement" {
factory OptionElement([String data, String value, bool defaultSelected, bool selected]) {
@@ -14205,25 +14433,25 @@
return _OptionElementFactoryProvider.createOptionElement(data, value, defaultSelected, selected);
}
- /** @domName HTMLOptionElement.defaultSelected */
+ /// @domName HTMLOptionElement.defaultSelected; @docsEditable true
bool defaultSelected;
- /** @domName HTMLOptionElement.disabled */
+ /// @domName HTMLOptionElement.disabled; @docsEditable true
bool disabled;
- /** @domName HTMLOptionElement.form */
+ /// @domName HTMLOptionElement.form; @docsEditable true
final FormElement form;
- /** @domName HTMLOptionElement.index */
+ /// @domName HTMLOptionElement.index; @docsEditable true
final int index;
- /** @domName HTMLOptionElement.label */
+ /// @domName HTMLOptionElement.label; @docsEditable true
String label;
- /** @domName HTMLOptionElement.selected */
+ /// @domName HTMLOptionElement.selected; @docsEditable true
bool selected;
- /** @domName HTMLOptionElement.value */
+ /// @domName HTMLOptionElement.value; @docsEditable true
String value;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14231,7 +14459,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName OscillatorNode
+/// @domName OscillatorNode; @docsEditable true
class OscillatorNode extends AudioSourceNode native "*OscillatorNode" {
static const int CUSTOM = 4;
@@ -14252,25 +14480,25 @@
static const int UNSCHEDULED_STATE = 0;
- /** @domName OscillatorNode.detune */
+ /// @domName OscillatorNode.detune; @docsEditable true
final AudioParam detune;
- /** @domName OscillatorNode.frequency */
+ /// @domName OscillatorNode.frequency; @docsEditable true
final AudioParam frequency;
- /** @domName OscillatorNode.playbackState */
+ /// @domName OscillatorNode.playbackState; @docsEditable true
final int playbackState;
- /** @domName OscillatorNode.type */
+ /// @domName OscillatorNode.type; @docsEditable true
int type;
- /** @domName OscillatorNode.setWaveTable */
+ /// @domName OscillatorNode.setWaveTable; @docsEditable true
void setWaveTable(WaveTable waveTable) native;
- /** @domName OscillatorNode.start */
+ /// @domName OscillatorNode.start; @docsEditable true
void start(num when) native;
- /** @domName OscillatorNode.stop */
+ /// @domName OscillatorNode.stop; @docsEditable true
void stop(num when) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14278,45 +14506,46 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLOutputElement
+/// @domName HTMLOutputElement; @docsEditable true
class OutputElement extends Element implements Element native "*HTMLOutputElement" {
- factory OutputElement() => _Elements.createOutputElement();
+ factory OutputElement() => document.$dom_createElement("output");
- /** @domName HTMLOutputElement.defaultValue */
+ /// @domName HTMLOutputElement.defaultValue; @docsEditable true
String defaultValue;
- /** @domName HTMLOutputElement.form */
+ /// @domName HTMLOutputElement.form; @docsEditable true
final FormElement form;
- /** @domName HTMLOutputElement.htmlFor */
+ /// @domName HTMLOutputElement.htmlFor; @docsEditable true
DOMSettableTokenList htmlFor;
- /** @domName HTMLOutputElement.labels */
+ /// @domName HTMLOutputElement.labels; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
final List<Node> labels;
- /** @domName HTMLOutputElement.name */
+ /// @domName HTMLOutputElement.name; @docsEditable true
String name;
- /** @domName HTMLOutputElement.type */
+ /// @domName HTMLOutputElement.type; @docsEditable true
final String type;
- /** @domName HTMLOutputElement.validationMessage */
+ /// @domName HTMLOutputElement.validationMessage; @docsEditable true
final String validationMessage;
- /** @domName HTMLOutputElement.validity */
+ /// @domName HTMLOutputElement.validity; @docsEditable true
final ValidityState validity;
- /** @domName HTMLOutputElement.value */
+ /// @domName HTMLOutputElement.value; @docsEditable true
String value;
- /** @domName HTMLOutputElement.willValidate */
+ /// @domName HTMLOutputElement.willValidate; @docsEditable true
final bool willValidate;
- /** @domName HTMLOutputElement.checkValidity */
+ /// @domName HTMLOutputElement.checkValidity; @docsEditable true
bool checkValidity() native;
- /** @domName HTMLOutputElement.setCustomValidity */
+ /// @domName HTMLOutputElement.setCustomValidity; @docsEditable true
void setCustomValidity(String error) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14324,7 +14553,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName OverflowEvent
+/// @domName OverflowEvent; @docsEditable true
class OverflowEvent extends Event native "*OverflowEvent" {
static const int BOTH = 2;
@@ -14333,13 +14562,13 @@
static const int VERTICAL = 1;
- /** @domName OverflowEvent.horizontalOverflow */
+ /// @domName OverflowEvent.horizontalOverflow; @docsEditable true
final bool horizontalOverflow;
- /** @domName OverflowEvent.orient */
+ /// @domName OverflowEvent.orient; @docsEditable true
final int orient;
- /** @domName OverflowEvent.verticalOverflow */
+ /// @domName OverflowEvent.verticalOverflow; @docsEditable true
final bool verticalOverflow;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14347,13 +14576,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName PagePopupController
+/// @domName PagePopupController; @docsEditable true
class PagePopupController native "*PagePopupController" {
- /** @domName PagePopupController.localizeNumberString */
+ /// @domName PagePopupController.localizeNumberString; @docsEditable true
String localizeNumberString(String numberString) native;
- /** @domName PagePopupController.setValueAndClosePopup */
+ /// @domName PagePopupController.setValueAndClosePopup; @docsEditable true
void setValueAndClosePopup(int numberValue, String stringValue) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14361,10 +14590,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName PageTransitionEvent
+/// @domName PageTransitionEvent; @docsEditable true
class PageTransitionEvent extends Event native "*PageTransitionEvent" {
- /** @domName PageTransitionEvent.persisted */
+ /// @domName PageTransitionEvent.persisted; @docsEditable true
final bool persisted;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14372,7 +14601,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName PannerNode
+/// @domName PannerNode; @docsEditable true
class PannerNode extends AudioNode native "*PannerNode" {
static const int EQUALPOWER = 0;
@@ -14387,43 +14616,43 @@
static const int SOUNDFIELD = 2;
- /** @domName PannerNode.coneGain */
+ /// @domName PannerNode.coneGain; @docsEditable true
final AudioGain coneGain;
- /** @domName PannerNode.coneInnerAngle */
+ /// @domName PannerNode.coneInnerAngle; @docsEditable true
num coneInnerAngle;
- /** @domName PannerNode.coneOuterAngle */
+ /// @domName PannerNode.coneOuterAngle; @docsEditable true
num coneOuterAngle;
- /** @domName PannerNode.coneOuterGain */
+ /// @domName PannerNode.coneOuterGain; @docsEditable true
num coneOuterGain;
- /** @domName PannerNode.distanceGain */
+ /// @domName PannerNode.distanceGain; @docsEditable true
final AudioGain distanceGain;
- /** @domName PannerNode.distanceModel */
+ /// @domName PannerNode.distanceModel; @docsEditable true
int distanceModel;
- /** @domName PannerNode.maxDistance */
+ /// @domName PannerNode.maxDistance; @docsEditable true
num maxDistance;
- /** @domName PannerNode.panningModel */
+ /// @domName PannerNode.panningModel; @docsEditable true
int panningModel;
- /** @domName PannerNode.refDistance */
+ /// @domName PannerNode.refDistance; @docsEditable true
num refDistance;
- /** @domName PannerNode.rolloffFactor */
+ /// @domName PannerNode.rolloffFactor; @docsEditable true
num rolloffFactor;
- /** @domName PannerNode.setOrientation */
+ /// @domName PannerNode.setOrientation; @docsEditable true
void setOrientation(num x, num y, num z) native;
- /** @domName PannerNode.setPosition */
+ /// @domName PannerNode.setPosition; @docsEditable true
void setPosition(num x, num y, num z) native;
- /** @domName PannerNode.setVelocity */
+ /// @domName PannerNode.setVelocity; @docsEditable true
void setVelocity(num x, num y, num z) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14431,12 +14660,12 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLParagraphElement
+/// @domName HTMLParagraphElement; @docsEditable true
class ParagraphElement extends Element implements Element native "*HTMLParagraphElement" {
- factory ParagraphElement() => _Elements.createParagraphElement();
+ factory ParagraphElement() => document.$dom_createElement("p");
- /** @domName HTMLParagraphElement.align */
+ /// @domName HTMLParagraphElement.align; @docsEditable true
String align;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14444,21 +14673,21 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLParamElement
+/// @domName HTMLParamElement; @docsEditable true
class ParamElement extends Element implements Element native "*HTMLParamElement" {
- factory ParamElement() => _Elements.createParamElement();
+ factory ParamElement() => document.$dom_createElement("param");
- /** @domName HTMLParamElement.name */
+ /// @domName HTMLParamElement.name; @docsEditable true
String name;
- /** @domName HTMLParamElement.type */
+ /// @domName HTMLParamElement.type; @docsEditable true
String type;
- /** @domName HTMLParamElement.value */
+ /// @domName HTMLParamElement.value; @docsEditable true
String value;
- /** @domName HTMLParamElement.valueType */
+ /// @domName HTMLParamElement.valueType; @docsEditable true
String valueType;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14466,14 +14695,12 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName PeerConnection00
+/// @domName PeerConnection00; @docsEditable true
class PeerConnection00 extends EventTarget native "*PeerConnection00" {
factory PeerConnection00(String serverConfiguration, IceCallback iceCallback) => _PeerConnection00FactoryProvider.createPeerConnection00(serverConfiguration, iceCallback);
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
PeerConnection00Events get on =>
new PeerConnection00Events(this);
@@ -14505,28 +14732,30 @@
static const int SDP_PRANSWER = 0x200;
- /** @domName PeerConnection00.iceState */
+ /// @domName PeerConnection00.iceState; @docsEditable true
final int iceState;
- /** @domName PeerConnection00.localDescription */
+ /// @domName PeerConnection00.localDescription; @docsEditable true
final SessionDescription localDescription;
- /** @domName PeerConnection00.localStreams */
+ /// @domName PeerConnection00.localStreams; @docsEditable true
+ @Returns('_MediaStreamList') @Creates('_MediaStreamList')
final List<MediaStream> localStreams;
- /** @domName PeerConnection00.readyState */
+ /// @domName PeerConnection00.readyState; @docsEditable true
final int readyState;
- /** @domName PeerConnection00.remoteDescription */
+ /// @domName PeerConnection00.remoteDescription; @docsEditable true
final SessionDescription remoteDescription;
- /** @domName PeerConnection00.remoteStreams */
+ /// @domName PeerConnection00.remoteStreams; @docsEditable true
+ @Returns('_MediaStreamList') @Creates('_MediaStreamList')
final List<MediaStream> remoteStreams;
- /** @domName PeerConnection00.addEventListener */
+ /// @domName PeerConnection00.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName PeerConnection00.addStream */
+ /// @domName PeerConnection00.addStream; @docsEditable true
void addStream(MediaStream stream, [Map mediaStreamHints]) {
if (?mediaStreamHints) {
var mediaStreamHints_1 = _convertDartToNative_Dictionary(mediaStreamHints);
@@ -14539,10 +14768,10 @@
void _addStream_1(MediaStream stream, mediaStreamHints) native "addStream";
void _addStream_2(MediaStream stream) native "addStream";
- /** @domName PeerConnection00.close */
+ /// @domName PeerConnection00.close; @docsEditable true
void close() native;
- /** @domName PeerConnection00.createAnswer */
+ /// @domName PeerConnection00.createAnswer; @docsEditable true
SessionDescription createAnswer(String offer, [Map mediaHints]) {
if (?mediaHints) {
var mediaHints_1 = _convertDartToNative_Dictionary(mediaHints);
@@ -14553,7 +14782,7 @@
SessionDescription _createAnswer_1(offer, mediaHints) native "createAnswer";
SessionDescription _createAnswer_2(offer) native "createAnswer";
- /** @domName PeerConnection00.createOffer */
+ /// @domName PeerConnection00.createOffer; @docsEditable true
SessionDescription createOffer([Map mediaHints]) {
if (?mediaHints) {
var mediaHints_1 = _convertDartToNative_Dictionary(mediaHints);
@@ -14564,25 +14793,25 @@
SessionDescription _createOffer_1(mediaHints) native "createOffer";
SessionDescription _createOffer_2() native "createOffer";
- /** @domName PeerConnection00.dispatchEvent */
+ /// @domName PeerConnection00.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event event) native "dispatchEvent";
- /** @domName PeerConnection00.processIceMessage */
+ /// @domName PeerConnection00.processIceMessage; @docsEditable true
void processIceMessage(IceCandidate candidate) native;
- /** @domName PeerConnection00.removeEventListener */
+ /// @domName PeerConnection00.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
- /** @domName PeerConnection00.removeStream */
+ /// @domName PeerConnection00.removeStream; @docsEditable true
void removeStream(MediaStream stream) native;
- /** @domName PeerConnection00.setLocalDescription */
+ /// @domName PeerConnection00.setLocalDescription; @docsEditable true
void setLocalDescription(int action, SessionDescription desc) native;
- /** @domName PeerConnection00.setRemoteDescription */
+ /// @domName PeerConnection00.setRemoteDescription; @docsEditable true
void setRemoteDescription(int action, SessionDescription desc) native;
- /** @domName PeerConnection00.startIce */
+ /// @domName PeerConnection00.startIce; @docsEditable true
void startIce([Map iceOptions]) {
if (?iceOptions) {
var iceOptions_1 = _convertDartToNative_Dictionary(iceOptions);
@@ -14614,19 +14843,19 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Performance
+/// @domName Performance; @docsEditable true
class Performance extends EventTarget native "*Performance" {
- /** @domName Performance.memory */
+ /// @domName Performance.memory; @docsEditable true
final MemoryInfo memory;
- /** @domName Performance.navigation */
+ /// @domName Performance.navigation; @docsEditable true
final PerformanceNavigation navigation;
- /** @domName Performance.timing */
+ /// @domName Performance.timing; @docsEditable true
final PerformanceTiming timing;
- /** @domName Performance.now */
+ /// @domName Performance.now; @docsEditable true
num now() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14634,7 +14863,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName PerformanceNavigation
+/// @domName PerformanceNavigation; @docsEditable true
class PerformanceNavigation native "*PerformanceNavigation" {
static const int TYPE_BACK_FORWARD = 2;
@@ -14645,10 +14874,10 @@
static const int TYPE_RESERVED = 255;
- /** @domName PerformanceNavigation.redirectCount */
+ /// @domName PerformanceNavigation.redirectCount; @docsEditable true
final int redirectCount;
- /** @domName PerformanceNavigation.type */
+ /// @domName PerformanceNavigation.type; @docsEditable true
final int type;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14656,70 +14885,70 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName PerformanceTiming
+/// @domName PerformanceTiming; @docsEditable true
class PerformanceTiming native "*PerformanceTiming" {
- /** @domName PerformanceTiming.connectEnd */
+ /// @domName PerformanceTiming.connectEnd; @docsEditable true
final int connectEnd;
- /** @domName PerformanceTiming.connectStart */
+ /// @domName PerformanceTiming.connectStart; @docsEditable true
final int connectStart;
- /** @domName PerformanceTiming.domComplete */
+ /// @domName PerformanceTiming.domComplete; @docsEditable true
final int domComplete;
- /** @domName PerformanceTiming.domContentLoadedEventEnd */
+ /// @domName PerformanceTiming.domContentLoadedEventEnd; @docsEditable true
final int domContentLoadedEventEnd;
- /** @domName PerformanceTiming.domContentLoadedEventStart */
+ /// @domName PerformanceTiming.domContentLoadedEventStart; @docsEditable true
final int domContentLoadedEventStart;
- /** @domName PerformanceTiming.domInteractive */
+ /// @domName PerformanceTiming.domInteractive; @docsEditable true
final int domInteractive;
- /** @domName PerformanceTiming.domLoading */
+ /// @domName PerformanceTiming.domLoading; @docsEditable true
final int domLoading;
- /** @domName PerformanceTiming.domainLookupEnd */
+ /// @domName PerformanceTiming.domainLookupEnd; @docsEditable true
final int domainLookupEnd;
- /** @domName PerformanceTiming.domainLookupStart */
+ /// @domName PerformanceTiming.domainLookupStart; @docsEditable true
final int domainLookupStart;
- /** @domName PerformanceTiming.fetchStart */
+ /// @domName PerformanceTiming.fetchStart; @docsEditable true
final int fetchStart;
- /** @domName PerformanceTiming.loadEventEnd */
+ /// @domName PerformanceTiming.loadEventEnd; @docsEditable true
final int loadEventEnd;
- /** @domName PerformanceTiming.loadEventStart */
+ /// @domName PerformanceTiming.loadEventStart; @docsEditable true
final int loadEventStart;
- /** @domName PerformanceTiming.navigationStart */
+ /// @domName PerformanceTiming.navigationStart; @docsEditable true
final int navigationStart;
- /** @domName PerformanceTiming.redirectEnd */
+ /// @domName PerformanceTiming.redirectEnd; @docsEditable true
final int redirectEnd;
- /** @domName PerformanceTiming.redirectStart */
+ /// @domName PerformanceTiming.redirectStart; @docsEditable true
final int redirectStart;
- /** @domName PerformanceTiming.requestStart */
+ /// @domName PerformanceTiming.requestStart; @docsEditable true
final int requestStart;
- /** @domName PerformanceTiming.responseEnd */
+ /// @domName PerformanceTiming.responseEnd; @docsEditable true
final int responseEnd;
- /** @domName PerformanceTiming.responseStart */
+ /// @domName PerformanceTiming.responseStart; @docsEditable true
final int responseStart;
- /** @domName PerformanceTiming.secureConnectionStart */
+ /// @domName PerformanceTiming.secureConnectionStart; @docsEditable true
final int secureConnectionStart;
- /** @domName PerformanceTiming.unloadEventEnd */
+ /// @domName PerformanceTiming.unloadEventEnd; @docsEditable true
final int unloadEventEnd;
- /** @domName PerformanceTiming.unloadEventStart */
+ /// @domName PerformanceTiming.unloadEventStart; @docsEditable true
final int unloadEventStart;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14732,10 +14961,10 @@
class Point native "*WebKitPoint" {
factory Point(num x, num y) => _PointFactoryProvider.createPoint(x, y);
- /** @domName WebKitPoint.x */
+ /// @domName WebKitPoint.x; @docsEditable true
num x;
- /** @domName WebKitPoint.y */
+ /// @domName WebKitPoint.y; @docsEditable true
num y;
}
@@ -14744,10 +14973,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName PopStateEvent
+/// @domName PopStateEvent; @docsEditable true
class PopStateEvent extends Event native "*PopStateEvent" {
- /** @domName PopStateEvent.state */
+ /// @domName PopStateEvent.state; @docsEditable true
dynamic get state => _convertNativeToDart_SerializedScriptValue(this._state);
dynamic get _state => JS("dynamic", "#.state", this);
}
@@ -14764,7 +14993,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName PositionError
+/// @domName PositionError; @docsEditable true
class PositionError native "*PositionError" {
static const int PERMISSION_DENIED = 1;
@@ -14773,10 +15002,10 @@
static const int TIMEOUT = 3;
- /** @domName PositionError.code */
+ /// @domName PositionError.code; @docsEditable true
final int code;
- /** @domName PositionError.message */
+ /// @domName PositionError.message; @docsEditable true
final String message;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14792,15 +15021,15 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLPreElement
+/// @domName HTMLPreElement; @docsEditable true
class PreElement extends Element implements Element native "*HTMLPreElement" {
- factory PreElement() => _Elements.createPreElement();
+ factory PreElement() => document.$dom_createElement("pre");
- /** @domName HTMLPreElement.width */
+ /// @domName HTMLPreElement.width; @docsEditable true
int width;
- /** @domName HTMLPreElement.wrap */
+ /// @domName HTMLPreElement.wrap; @docsEditable true
bool wrap;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14808,16 +15037,16 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName ProcessingInstruction
+/// @domName ProcessingInstruction; @docsEditable true
class ProcessingInstruction extends Node native "*ProcessingInstruction" {
- /** @domName ProcessingInstruction.data */
+ /// @domName ProcessingInstruction.data; @docsEditable true
String data;
- /** @domName ProcessingInstruction.sheet */
+ /// @domName ProcessingInstruction.sheet; @docsEditable true
final StyleSheet sheet;
- /** @domName ProcessingInstruction.target */
+ /// @domName ProcessingInstruction.target; @docsEditable true
final String target;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14825,21 +15054,22 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLProgressElement
+/// @domName HTMLProgressElement; @docsEditable true
class ProgressElement extends Element implements Element native "*HTMLProgressElement" {
- factory ProgressElement() => _Elements.createProgressElement();
+ factory ProgressElement() => document.$dom_createElement("progress");
- /** @domName HTMLProgressElement.labels */
+ /// @domName HTMLProgressElement.labels; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
final List<Node> labels;
- /** @domName HTMLProgressElement.max */
+ /// @domName HTMLProgressElement.max; @docsEditable true
num max;
- /** @domName HTMLProgressElement.position */
+ /// @domName HTMLProgressElement.position; @docsEditable true
final num position;
- /** @domName HTMLProgressElement.value */
+ /// @domName HTMLProgressElement.value; @docsEditable true
num value;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14847,16 +15077,16 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName ProgressEvent
+/// @domName ProgressEvent; @docsEditable true
class ProgressEvent extends Event native "*ProgressEvent" {
- /** @domName ProgressEvent.lengthComputable */
+ /// @domName ProgressEvent.lengthComputable; @docsEditable true
final bool lengthComputable;
- /** @domName ProgressEvent.loaded */
+ /// @domName ProgressEvent.loaded; @docsEditable true
final int loaded;
- /** @domName ProgressEvent.total */
+ /// @domName ProgressEvent.total; @docsEditable true
final int total;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14864,10 +15094,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLQuoteElement
+/// @domName HTMLQuoteElement; @docsEditable true
class QuoteElement extends Element implements Element native "*HTMLQuoteElement" {
- /** @domName HTMLQuoteElement.cite */
+ /// @domName HTMLQuoteElement.cite; @docsEditable true
String cite;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14875,16 +15105,16 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName RGBColor
+/// @domName RGBColor; @docsEditable true
class RGBColor native "*RGBColor" {
- /** @domName RGBColor.blue */
+ /// @domName RGBColor.blue; @docsEditable true
final CSSPrimitiveValue blue;
- /** @domName RGBColor.green */
+ /// @domName RGBColor.green; @docsEditable true
final CSSPrimitiveValue green;
- /** @domName RGBColor.red */
+ /// @domName RGBColor.red; @docsEditable true
final CSSPrimitiveValue red;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14892,43 +15122,41 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName RTCDataChannel
+/// @domName RTCDataChannel; @docsEditable true
class RTCDataChannel extends EventTarget native "*RTCDataChannel" {
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
RTCDataChannelEvents get on =>
new RTCDataChannelEvents(this);
- /** @domName RTCDataChannel.binaryType */
+ /// @domName RTCDataChannel.binaryType; @docsEditable true
String binaryType;
- /** @domName RTCDataChannel.bufferedAmount */
+ /// @domName RTCDataChannel.bufferedAmount; @docsEditable true
final int bufferedAmount;
- /** @domName RTCDataChannel.label */
+ /// @domName RTCDataChannel.label; @docsEditable true
final String label;
- /** @domName RTCDataChannel.readyState */
+ /// @domName RTCDataChannel.readyState; @docsEditable true
final String readyState;
- /** @domName RTCDataChannel.reliable */
+ /// @domName RTCDataChannel.reliable; @docsEditable true
final bool reliable;
- /** @domName RTCDataChannel.addEventListener */
+ /// @domName RTCDataChannel.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName RTCDataChannel.close */
+ /// @domName RTCDataChannel.close; @docsEditable true
void close() native;
- /** @domName RTCDataChannel.dispatchEvent */
+ /// @domName RTCDataChannel.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event event) native "dispatchEvent";
- /** @domName RTCDataChannel.removeEventListener */
+ /// @domName RTCDataChannel.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
- /** @domName RTCDataChannel.send */
+ /// @domName RTCDataChannel.send; @docsEditable true
void send(data) native;
}
@@ -14948,10 +15176,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName RTCDataChannelEvent
+/// @domName RTCDataChannelEvent; @docsEditable true
class RTCDataChannelEvent extends Event native "*RTCDataChannelEvent" {
- /** @domName RTCDataChannelEvent.channel */
+ /// @domName RTCDataChannelEvent.channel; @docsEditable true
final RTCDataChannel channel;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14967,18 +15195,18 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName RTCIceCandidate
+/// @domName RTCIceCandidate; @docsEditable true
class RTCIceCandidate native "*RTCIceCandidate" {
factory RTCIceCandidate(Map dictionary) => _RTCIceCandidateFactoryProvider.createRTCIceCandidate(dictionary);
- /** @domName RTCIceCandidate.candidate */
+ /// @domName RTCIceCandidate.candidate; @docsEditable true
final String candidate;
- /** @domName RTCIceCandidate.sdpMLineIndex */
+ /// @domName RTCIceCandidate.sdpMLineIndex; @docsEditable true
final int sdpMLineIndex;
- /** @domName RTCIceCandidate.sdpMid */
+ /// @domName RTCIceCandidate.sdpMid; @docsEditable true
final String sdpMid;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14986,10 +15214,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName RTCIceCandidateEvent
+/// @domName RTCIceCandidateEvent; @docsEditable true
class RTCIceCandidateEvent extends Event native "*RTCIceCandidateEvent" {
- /** @domName RTCIceCandidateEvent.candidate */
+ /// @domName RTCIceCandidateEvent.candidate; @docsEditable true
final RTCIceCandidate candidate;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -14997,7 +15225,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName RTCPeerConnection
+/// @domName RTCPeerConnection; @docsEditable true
class RTCPeerConnection extends EventTarget native "*RTCPeerConnection" {
factory RTCPeerConnection(Map rtcIceServers, [Map mediaConstraints]) {
@@ -15007,37 +15235,37 @@
return _RTCPeerConnectionFactoryProvider.createRTCPeerConnection(rtcIceServers, mediaConstraints);
}
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
RTCPeerConnectionEvents get on =>
new RTCPeerConnectionEvents(this);
- /** @domName RTCPeerConnection.iceState */
+ /// @domName RTCPeerConnection.iceState; @docsEditable true
final String iceState;
- /** @domName RTCPeerConnection.localDescription */
+ /// @domName RTCPeerConnection.localDescription; @docsEditable true
final RTCSessionDescription localDescription;
- /** @domName RTCPeerConnection.localStreams */
+ /// @domName RTCPeerConnection.localStreams; @docsEditable true
+ @Returns('_MediaStreamList') @Creates('_MediaStreamList')
final List<MediaStream> localStreams;
- /** @domName RTCPeerConnection.readyState */
+ /// @domName RTCPeerConnection.readyState; @docsEditable true
final String readyState;
- /** @domName RTCPeerConnection.remoteDescription */
+ /// @domName RTCPeerConnection.remoteDescription; @docsEditable true
final RTCSessionDescription remoteDescription;
- /** @domName RTCPeerConnection.remoteStreams */
+ /// @domName RTCPeerConnection.remoteStreams; @docsEditable true
+ @Returns('_MediaStreamList') @Creates('_MediaStreamList')
final List<MediaStream> remoteStreams;
- /** @domName RTCPeerConnection.addEventListener */
+ /// @domName RTCPeerConnection.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName RTCPeerConnection.addIceCandidate */
+ /// @domName RTCPeerConnection.addIceCandidate; @docsEditable true
void addIceCandidate(RTCIceCandidate candidate) native;
- /** @domName RTCPeerConnection.addStream */
+ /// @domName RTCPeerConnection.addStream; @docsEditable true
void addStream(MediaStream stream, [Map mediaConstraints]) {
if (?mediaConstraints) {
var mediaConstraints_1 = _convertDartToNative_Dictionary(mediaConstraints);
@@ -15050,10 +15278,10 @@
void _addStream_1(MediaStream stream, mediaConstraints) native "addStream";
void _addStream_2(MediaStream stream) native "addStream";
- /** @domName RTCPeerConnection.close */
+ /// @domName RTCPeerConnection.close; @docsEditable true
void close() native;
- /** @domName RTCPeerConnection.createAnswer */
+ /// @domName RTCPeerConnection.createAnswer; @docsEditable true
void createAnswer(RTCSessionDescriptionCallback successCallback, [RTCErrorCallback failureCallback, Map mediaConstraints]) {
if (?mediaConstraints) {
var mediaConstraints_1 = _convertDartToNative_Dictionary(mediaConstraints);
@@ -15066,7 +15294,7 @@
void _createAnswer_1(RTCSessionDescriptionCallback successCallback, RTCErrorCallback failureCallback, mediaConstraints) native "createAnswer";
void _createAnswer_2(RTCSessionDescriptionCallback successCallback, RTCErrorCallback failureCallback) native "createAnswer";
- /** @domName RTCPeerConnection.createDataChannel */
+ /// @domName RTCPeerConnection.createDataChannel; @docsEditable true
RTCDataChannel createDataChannel(String label, [Map options]) {
if (?options) {
var options_1 = _convertDartToNative_Dictionary(options);
@@ -15077,7 +15305,7 @@
RTCDataChannel _createDataChannel_1(label, options) native "createDataChannel";
RTCDataChannel _createDataChannel_2(label) native "createDataChannel";
- /** @domName RTCPeerConnection.createOffer */
+ /// @domName RTCPeerConnection.createOffer; @docsEditable true
void createOffer(RTCSessionDescriptionCallback successCallback, [RTCErrorCallback failureCallback, Map mediaConstraints]) {
if (?mediaConstraints) {
var mediaConstraints_1 = _convertDartToNative_Dictionary(mediaConstraints);
@@ -15090,25 +15318,25 @@
void _createOffer_1(RTCSessionDescriptionCallback successCallback, RTCErrorCallback failureCallback, mediaConstraints) native "createOffer";
void _createOffer_2(RTCSessionDescriptionCallback successCallback, RTCErrorCallback failureCallback) native "createOffer";
- /** @domName RTCPeerConnection.dispatchEvent */
+ /// @domName RTCPeerConnection.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event event) native "dispatchEvent";
- /** @domName RTCPeerConnection.getStats */
+ /// @domName RTCPeerConnection.getStats; @docsEditable true
void getStats(RTCStatsCallback successCallback, MediaStreamTrack selector) native;
- /** @domName RTCPeerConnection.removeEventListener */
+ /// @domName RTCPeerConnection.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
- /** @domName RTCPeerConnection.removeStream */
+ /// @domName RTCPeerConnection.removeStream; @docsEditable true
void removeStream(MediaStream stream) native;
- /** @domName RTCPeerConnection.setLocalDescription */
+ /// @domName RTCPeerConnection.setLocalDescription; @docsEditable true
void setLocalDescription(RTCSessionDescription description, [VoidCallback successCallback, RTCErrorCallback failureCallback]) native;
- /** @domName RTCPeerConnection.setRemoteDescription */
+ /// @domName RTCPeerConnection.setRemoteDescription; @docsEditable true
void setRemoteDescription(RTCSessionDescription description, [VoidCallback successCallback, RTCErrorCallback failureCallback]) native;
- /** @domName RTCPeerConnection.updateIce */
+ /// @domName RTCPeerConnection.updateIce; @docsEditable true
void updateIce([Map configuration, Map mediaConstraints]) {
if (?mediaConstraints) {
var configuration_1 = _convertDartToNative_Dictionary(configuration);
@@ -15151,15 +15379,15 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName RTCSessionDescription
+/// @domName RTCSessionDescription; @docsEditable true
class RTCSessionDescription native "*RTCSessionDescription" {
factory RTCSessionDescription(Map dictionary) => _RTCSessionDescriptionFactoryProvider.createRTCSessionDescription(dictionary);
- /** @domName RTCSessionDescription.sdp */
+ /// @domName RTCSessionDescription.sdp; @docsEditable true
String sdp;
- /** @domName RTCSessionDescription.type */
+ /// @domName RTCSessionDescription.type; @docsEditable true
String type;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15183,13 +15411,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName RTCStatsElement
+/// @domName RTCStatsElement; @docsEditable true
class RTCStatsElement native "*RTCStatsElement" {
- /** @domName RTCStatsElement.timestamp */
+ /// @domName RTCStatsElement.timestamp; @docsEditable true
final Date timestamp;
- /** @domName RTCStatsElement.stat */
+ /// @domName RTCStatsElement.stat; @docsEditable true
String stat(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15197,13 +15425,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName RTCStatsReport
+/// @domName RTCStatsReport; @docsEditable true
class RTCStatsReport native "*RTCStatsReport" {
- /** @domName RTCStatsReport.local */
+ /// @domName RTCStatsReport.local; @docsEditable true
final RTCStatsElement local;
- /** @domName RTCStatsReport.remote */
+ /// @domName RTCStatsReport.remote; @docsEditable true
final RTCStatsElement remote;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15211,10 +15439,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName RTCStatsResponse
+/// @domName RTCStatsResponse; @docsEditable true
class RTCStatsResponse native "*RTCStatsResponse" {
- /** @domName RTCStatsResponse.result */
+ /// @domName RTCStatsResponse.result; @docsEditable true
List<RTCStatsReport> result() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15222,10 +15450,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName RadioNodeList
-class RadioNodeList extends NodeList native "*RadioNodeList" {
+/// @domName RadioNodeList; @docsEditable true
+class RadioNodeList extends _NodeList native "*RadioNodeList" {
- /** @domName RadioNodeList.value */
+ /// @domName RadioNodeList.value; @docsEditable true
String value;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15233,7 +15461,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Range
+/// @domName Range; @docsEditable true
class Range native "*Range" {
static const int END_TO_END = 2;
@@ -15252,97 +15480,98 @@
static const int START_TO_START = 0;
- /** @domName Range.collapsed */
+ /// @domName Range.collapsed; @docsEditable true
final bool collapsed;
- /** @domName Range.commonAncestorContainer */
+ /// @domName Range.commonAncestorContainer; @docsEditable true
final Node commonAncestorContainer;
- /** @domName Range.endContainer */
+ /// @domName Range.endContainer; @docsEditable true
final Node endContainer;
- /** @domName Range.endOffset */
+ /// @domName Range.endOffset; @docsEditable true
final int endOffset;
- /** @domName Range.startContainer */
+ /// @domName Range.startContainer; @docsEditable true
final Node startContainer;
- /** @domName Range.startOffset */
+ /// @domName Range.startOffset; @docsEditable true
final int startOffset;
- /** @domName Range.cloneContents */
+ /// @domName Range.cloneContents; @docsEditable true
DocumentFragment cloneContents() native;
- /** @domName Range.cloneRange */
+ /// @domName Range.cloneRange; @docsEditable true
Range cloneRange() native;
- /** @domName Range.collapse */
+ /// @domName Range.collapse; @docsEditable true
void collapse(bool toStart) native;
- /** @domName Range.compareNode */
+ /// @domName Range.compareNode; @docsEditable true
int compareNode(Node refNode) native;
- /** @domName Range.comparePoint */
+ /// @domName Range.comparePoint; @docsEditable true
int comparePoint(Node refNode, int offset) native;
- /** @domName Range.createContextualFragment */
+ /// @domName Range.createContextualFragment; @docsEditable true
DocumentFragment createContextualFragment(String html) native;
- /** @domName Range.deleteContents */
+ /// @domName Range.deleteContents; @docsEditable true
void deleteContents() native;
- /** @domName Range.detach */
+ /// @domName Range.detach; @docsEditable true
void detach() native;
- /** @domName Range.expand */
+ /// @domName Range.expand; @docsEditable true
void expand(String unit) native;
- /** @domName Range.extractContents */
+ /// @domName Range.extractContents; @docsEditable true
DocumentFragment extractContents() native;
- /** @domName Range.getBoundingClientRect */
+ /// @domName Range.getBoundingClientRect; @docsEditable true
ClientRect getBoundingClientRect() native;
- /** @domName Range.getClientRects */
+ /// @domName Range.getClientRects; @docsEditable true
+ @Returns('_ClientRectList') @Creates('_ClientRectList')
List<ClientRect> getClientRects() native;
- /** @domName Range.insertNode */
+ /// @domName Range.insertNode; @docsEditable true
void insertNode(Node newNode) native;
- /** @domName Range.intersectsNode */
+ /// @domName Range.intersectsNode; @docsEditable true
bool intersectsNode(Node refNode) native;
- /** @domName Range.isPointInRange */
+ /// @domName Range.isPointInRange; @docsEditable true
bool isPointInRange(Node refNode, int offset) native;
- /** @domName Range.selectNode */
+ /// @domName Range.selectNode; @docsEditable true
void selectNode(Node refNode) native;
- /** @domName Range.selectNodeContents */
+ /// @domName Range.selectNodeContents; @docsEditable true
void selectNodeContents(Node refNode) native;
- /** @domName Range.setEnd */
+ /// @domName Range.setEnd; @docsEditable true
void setEnd(Node refNode, int offset) native;
- /** @domName Range.setEndAfter */
+ /// @domName Range.setEndAfter; @docsEditable true
void setEndAfter(Node refNode) native;
- /** @domName Range.setEndBefore */
+ /// @domName Range.setEndBefore; @docsEditable true
void setEndBefore(Node refNode) native;
- /** @domName Range.setStart */
+ /// @domName Range.setStart; @docsEditable true
void setStart(Node refNode, int offset) native;
- /** @domName Range.setStartAfter */
+ /// @domName Range.setStartAfter; @docsEditable true
void setStartAfter(Node refNode) native;
- /** @domName Range.setStartBefore */
+ /// @domName Range.setStartBefore; @docsEditable true
void setStartBefore(Node refNode) native;
- /** @domName Range.surroundContents */
+ /// @domName Range.surroundContents; @docsEditable true
void surroundContents(Node newParent) native;
- /** @domName Range.toString */
+ /// @domName Range.toString; @docsEditable true
String toString() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15350,23 +15579,23 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName RangeException
+/// @domName RangeException; @docsEditable true
class RangeException native "*RangeException" {
static const int BAD_BOUNDARYPOINTS_ERR = 1;
static const int INVALID_NODE_TYPE_ERR = 2;
- /** @domName RangeException.code */
+ /// @domName RangeException.code; @docsEditable true
final int code;
- /** @domName RangeException.message */
+ /// @domName RangeException.message; @docsEditable true
final String message;
- /** @domName RangeException.name */
+ /// @domName RangeException.name; @docsEditable true
final String name;
- /** @domName RangeException.toString */
+ /// @domName RangeException.toString; @docsEditable true
String toString() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15374,19 +15603,19 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Rect
+/// @domName Rect; @docsEditable true
class Rect native "*Rect" {
- /** @domName Rect.bottom */
+ /// @domName Rect.bottom; @docsEditable true
final CSSPrimitiveValue bottom;
- /** @domName Rect.left */
+ /// @domName Rect.left; @docsEditable true
final CSSPrimitiveValue left;
- /** @domName Rect.right */
+ /// @domName Rect.right; @docsEditable true
final CSSPrimitiveValue right;
- /** @domName Rect.top */
+ /// @domName Rect.top; @docsEditable true
final CSSPrimitiveValue top;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15402,7 +15631,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SQLError
+/// @domName SQLError; @docsEditable true
class SQLError native "*SQLError" {
static const int CONSTRAINT_ERR = 6;
@@ -15421,10 +15650,10 @@
static const int VERSION_ERR = 2;
- /** @domName SQLError.code */
+ /// @domName SQLError.code; @docsEditable true
final int code;
- /** @domName SQLError.message */
+ /// @domName SQLError.message; @docsEditable true
final String message;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15432,7 +15661,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SQLException
+/// @domName SQLException; @docsEditable true
class SQLException native "*SQLException" {
static const int CONSTRAINT_ERR = 6;
@@ -15451,10 +15680,10 @@
static const int VERSION_ERR = 2;
- /** @domName SQLException.code */
+ /// @domName SQLException.code; @docsEditable true
final int code;
- /** @domName SQLException.message */
+ /// @domName SQLException.message; @docsEditable true
final String message;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15462,16 +15691,16 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SQLResultSet
+/// @domName SQLResultSet; @docsEditable true
class SQLResultSet native "*SQLResultSet" {
- /** @domName SQLResultSet.insertId */
+ /// @domName SQLResultSet.insertId; @docsEditable true
final int insertId;
- /** @domName SQLResultSet.rows */
+ /// @domName SQLResultSet.rows; @docsEditable true
final SQLResultSetRowList rows;
- /** @domName SQLResultSet.rowsAffected */
+ /// @domName SQLResultSet.rowsAffected; @docsEditable true
final int rowsAffected;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15479,10 +15708,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SQLResultSetRowList
+/// @domName SQLResultSetRowList; @docsEditable true
class SQLResultSetRowList implements JavaScriptIndexingBehavior, List<Map> native "*SQLResultSetRowList" {
- /** @domName SQLResultSetRowList.length */
+ /// @domName SQLResultSetRowList.length; @docsEditable true
final int length;
Map operator[](int index) => JS("Map", "#[#]", this, index);
@@ -15545,6 +15774,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ Map get first => this[0];
+
Map get last => this[length - 1];
Map removeLast() {
@@ -15568,10 +15799,11 @@
// -- end List<Map> mixins.
- /** @domName SQLResultSetRowList.item */
+ /// @domName SQLResultSetRowList.item; @docsEditable true
Map item(int index) {
return _convertNativeToDart_Dictionary(_item_1(index));
}
+ @Creates('=Object')
_item_1(index) native "item";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15595,10 +15827,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SQLTransaction
+/// @domName SQLTransaction; @docsEditable true
class SQLTransaction native "*SQLTransaction" {
- /** @domName SQLTransaction.executeSql */
+ /// @domName SQLTransaction.executeSql; @docsEditable true
void executeSql(String sqlStatement, List arguments, [SQLStatementCallback callback, SQLStatementErrorCallback errorCallback]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15622,10 +15854,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SQLTransactionSync
+/// @domName SQLTransactionSync; @docsEditable true
class SQLTransactionSync native "*SQLTransactionSync" {
- /** @domName SQLTransactionSync.executeSql */
+ /// @domName SQLTransactionSync.executeSql; @docsEditable true
SQLResultSet executeSql(String sqlStatement, List arguments) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15641,31 +15873,31 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Screen
+/// @domName Screen; @docsEditable true
class Screen native "*Screen" {
- /** @domName Screen.availHeight */
+ /// @domName Screen.availHeight; @docsEditable true
final int availHeight;
- /** @domName Screen.availLeft */
+ /// @domName Screen.availLeft; @docsEditable true
final int availLeft;
- /** @domName Screen.availTop */
+ /// @domName Screen.availTop; @docsEditable true
final int availTop;
- /** @domName Screen.availWidth */
+ /// @domName Screen.availWidth; @docsEditable true
final int availWidth;
- /** @domName Screen.colorDepth */
+ /// @domName Screen.colorDepth; @docsEditable true
final int colorDepth;
- /** @domName Screen.height */
+ /// @domName Screen.height; @docsEditable true
final int height;
- /** @domName Screen.pixelDepth */
+ /// @domName Screen.pixelDepth; @docsEditable true
final int pixelDepth;
- /** @domName Screen.width */
+ /// @domName Screen.width; @docsEditable true
final int width;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15673,33 +15905,33 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLScriptElement
+/// @domName HTMLScriptElement; @docsEditable true
class ScriptElement extends Element implements Element native "*HTMLScriptElement" {
- factory ScriptElement() => _Elements.createScriptElement();
+ factory ScriptElement() => document.$dom_createElement("script");
- /** @domName HTMLScriptElement.async */
+ /// @domName HTMLScriptElement.async; @docsEditable true
bool async;
- /** @domName HTMLScriptElement.charset */
+ /// @domName HTMLScriptElement.charset; @docsEditable true
String charset;
- /** @domName HTMLScriptElement.crossOrigin */
+ /// @domName HTMLScriptElement.crossOrigin; @docsEditable true
String crossOrigin;
- /** @domName HTMLScriptElement.defer */
+ /// @domName HTMLScriptElement.defer; @docsEditable true
bool defer;
- /** @domName HTMLScriptElement.event */
+ /// @domName HTMLScriptElement.event; @docsEditable true
String event;
- /** @domName HTMLScriptElement.htmlFor */
+ /// @domName HTMLScriptElement.htmlFor; @docsEditable true
String htmlFor;
- /** @domName HTMLScriptElement.src */
+ /// @domName HTMLScriptElement.src; @docsEditable true
String src;
- /** @domName HTMLScriptElement.type */
+ /// @domName HTMLScriptElement.type; @docsEditable true
String type;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15707,16 +15939,14 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName ScriptProcessorNode
+/// @domName ScriptProcessorNode; @docsEditable true
class ScriptProcessorNode extends AudioNode implements EventTarget native "*ScriptProcessorNode" {
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
ScriptProcessorNodeEvents get on =>
new ScriptProcessorNodeEvents(this);
- /** @domName ScriptProcessorNode.bufferSize */
+ /// @domName ScriptProcessorNode.bufferSize; @docsEditable true
final int bufferSize;
}
@@ -15730,16 +15960,16 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName ScriptProfile
+/// @domName ScriptProfile; @docsEditable true
class ScriptProfile native "*ScriptProfile" {
- /** @domName ScriptProfile.head */
+ /// @domName ScriptProfile.head; @docsEditable true
final ScriptProfileNode head;
- /** @domName ScriptProfile.title */
+ /// @domName ScriptProfile.title; @docsEditable true
final String title;
- /** @domName ScriptProfile.uid */
+ /// @domName ScriptProfile.uid; @docsEditable true
final int uid;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15747,34 +15977,34 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName ScriptProfileNode
+/// @domName ScriptProfileNode; @docsEditable true
class ScriptProfileNode native "*ScriptProfileNode" {
- /** @domName ScriptProfileNode.callUID */
+ /// @domName ScriptProfileNode.callUID; @docsEditable true
final int callUID;
- /** @domName ScriptProfileNode.functionName */
+ /// @domName ScriptProfileNode.functionName; @docsEditable true
final String functionName;
- /** @domName ScriptProfileNode.lineNumber */
+ /// @domName ScriptProfileNode.lineNumber; @docsEditable true
final int lineNumber;
- /** @domName ScriptProfileNode.numberOfCalls */
+ /// @domName ScriptProfileNode.numberOfCalls; @docsEditable true
final int numberOfCalls;
- /** @domName ScriptProfileNode.selfTime */
+ /// @domName ScriptProfileNode.selfTime; @docsEditable true
final num selfTime;
- /** @domName ScriptProfileNode.totalTime */
+ /// @domName ScriptProfileNode.totalTime; @docsEditable true
final num totalTime;
- /** @domName ScriptProfileNode.url */
+ /// @domName ScriptProfileNode.url; @docsEditable true
final String url;
- /** @domName ScriptProfileNode.visible */
+ /// @domName ScriptProfileNode.visible; @docsEditable true
final bool visible;
- /** @domName ScriptProfileNode.children */
+ /// @domName ScriptProfileNode.children; @docsEditable true
List<ScriptProfileNode> children() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15784,63 +16014,64 @@
class SelectElement extends Element implements Element native "*HTMLSelectElement" {
- factory SelectElement() => _Elements.createSelectElement();
+ factory SelectElement() => document.$dom_createElement("select");
- /** @domName HTMLSelectElement.autofocus */
+ /// @domName HTMLSelectElement.autofocus; @docsEditable true
bool autofocus;
- /** @domName HTMLSelectElement.disabled */
+ /// @domName HTMLSelectElement.disabled; @docsEditable true
bool disabled;
- /** @domName HTMLSelectElement.form */
+ /// @domName HTMLSelectElement.form; @docsEditable true
final FormElement form;
- /** @domName HTMLSelectElement.labels */
+ /// @domName HTMLSelectElement.labels; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
final List<Node> labels;
- /** @domName HTMLSelectElement.length */
+ /// @domName HTMLSelectElement.length; @docsEditable true
int length;
- /** @domName HTMLSelectElement.multiple */
+ /// @domName HTMLSelectElement.multiple; @docsEditable true
bool multiple;
- /** @domName HTMLSelectElement.name */
+ /// @domName HTMLSelectElement.name; @docsEditable true
String name;
- /** @domName HTMLSelectElement.required */
+ /// @domName HTMLSelectElement.required; @docsEditable true
bool required;
- /** @domName HTMLSelectElement.selectedIndex */
+ /// @domName HTMLSelectElement.selectedIndex; @docsEditable true
int selectedIndex;
- /** @domName HTMLSelectElement.size */
+ /// @domName HTMLSelectElement.size; @docsEditable true
int size;
- /** @domName HTMLSelectElement.type */
+ /// @domName HTMLSelectElement.type; @docsEditable true
final String type;
- /** @domName HTMLSelectElement.validationMessage */
+ /// @domName HTMLSelectElement.validationMessage; @docsEditable true
final String validationMessage;
- /** @domName HTMLSelectElement.validity */
+ /// @domName HTMLSelectElement.validity; @docsEditable true
final ValidityState validity;
- /** @domName HTMLSelectElement.value */
+ /// @domName HTMLSelectElement.value; @docsEditable true
String value;
- /** @domName HTMLSelectElement.willValidate */
+ /// @domName HTMLSelectElement.willValidate; @docsEditable true
final bool willValidate;
- /** @domName HTMLSelectElement.checkValidity */
+ /// @domName HTMLSelectElement.checkValidity; @docsEditable true
bool checkValidity() native;
- /** @domName HTMLSelectElement.item */
+ /// @domName HTMLSelectElement.item; @docsEditable true
Node item(int index) native;
- /** @domName HTMLSelectElement.namedItem */
+ /// @domName HTMLSelectElement.namedItem; @docsEditable true
Node namedItem(String name) native;
- /** @domName HTMLSelectElement.setCustomValidity */
+ /// @domName HTMLSelectElement.setCustomValidity; @docsEditable true
void setCustomValidity(String error) native;
@@ -15864,15 +16095,15 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SessionDescription
+/// @domName SessionDescription; @docsEditable true
class SessionDescription native "*SessionDescription" {
factory SessionDescription(String sdp) => _SessionDescriptionFactoryProvider.createSessionDescription(sdp);
- /** @domName SessionDescription.addCandidate */
+ /// @domName SessionDescription.addCandidate; @docsEditable true
void addCandidate(IceCandidate candidate) native;
- /** @domName SessionDescription.toSdp */
+ /// @domName SessionDescription.toSdp; @docsEditable true
String toSdp() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15880,10 +16111,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLShadowElement
+/// @domName HTMLShadowElement; @docsEditable true
class ShadowElement extends Element implements Element native "*HTMLShadowElement" {
- /** @domName HTMLShadowElement.resetStyleInheritance */
+ /// @domName HTMLShadowElement.resetStyleInheritance; @docsEditable true
bool resetStyleInheritance;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15897,31 +16128,33 @@
factory ShadowRoot(Element host) => _ShadowRootFactoryProvider.createShadowRoot(host);
- /** @domName ShadowRoot.activeElement */
+ /// @domName ShadowRoot.activeElement; @docsEditable true
final Element activeElement;
- /** @domName ShadowRoot.applyAuthorStyles */
+ /// @domName ShadowRoot.applyAuthorStyles; @docsEditable true
bool applyAuthorStyles;
- /** @domName ShadowRoot.innerHTML */
+ /// @domName ShadowRoot.innerHTML; @docsEditable true
String innerHTML;
- /** @domName ShadowRoot.resetStyleInheritance */
+ /// @domName ShadowRoot.resetStyleInheritance; @docsEditable true
bool resetStyleInheritance;
- /** @domName ShadowRoot.cloneNode */
+ /// @domName ShadowRoot.cloneNode; @docsEditable true
Node clone(bool deep) native "cloneNode";
- /** @domName ShadowRoot.getElementById */
+ /// @domName ShadowRoot.getElementById; @docsEditable true
Element $dom_getElementById(String elementId) native "getElementById";
- /** @domName ShadowRoot.getElementsByClassName */
+ /// @domName ShadowRoot.getElementsByClassName; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
List<Node> $dom_getElementsByClassName(String className) native "getElementsByClassName";
- /** @domName ShadowRoot.getElementsByTagName */
+ /// @domName ShadowRoot.getElementsByTagName; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
List<Node> $dom_getElementsByTagName(String tagName) native "getElementsByTagName";
- /** @domName ShadowRoot.getSelection */
+ /// @domName ShadowRoot.getSelection; @docsEditable true
DOMSelection getSelection() native;
static bool get supported =>
@@ -15932,7 +16165,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SharedWorker
+/// @domName SharedWorker; @docsEditable true
class SharedWorker extends AbstractWorker native "*SharedWorker" {
factory SharedWorker(String scriptURL, [String name]) {
@@ -15942,7 +16175,7 @@
return _SharedWorkerFactoryProvider.createSharedWorker(scriptURL, name);
}
- /** @domName SharedWorker.port */
+ /// @domName SharedWorker.port; @docsEditable true
final MessagePort port;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15950,16 +16183,14 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SharedWorkerContext
+/// @domName SharedWorkerContext; @docsEditable true
class SharedWorkerContext extends WorkerContext native "*SharedWorkerContext" {
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
SharedWorkerContextEvents get on =>
new SharedWorkerContextEvents(this);
- /** @domName SharedWorkerContext.name */
+ /// @domName SharedWorkerContext.name; @docsEditable true
final String name;
}
@@ -15973,19 +16204,19 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SourceBuffer
+/// @domName SourceBuffer; @docsEditable true
class SourceBuffer native "*SourceBuffer" {
- /** @domName SourceBuffer.buffered */
+ /// @domName SourceBuffer.buffered; @docsEditable true
final TimeRanges buffered;
- /** @domName SourceBuffer.timestampOffset */
+ /// @domName SourceBuffer.timestampOffset; @docsEditable true
num timestampOffset;
- /** @domName SourceBuffer.abort */
+ /// @domName SourceBuffer.abort; @docsEditable true
void abort() native;
- /** @domName SourceBuffer.append */
+ /// @domName SourceBuffer.append; @docsEditable true
void append(Uint8Array data) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -15993,10 +16224,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SourceBufferList
+/// @domName SourceBufferList; @docsEditable true
class SourceBufferList extends EventTarget implements JavaScriptIndexingBehavior, List<SourceBuffer> native "*SourceBufferList" {
- /** @domName SourceBufferList.length */
+ /// @domName SourceBufferList.length; @docsEditable true
final int length;
SourceBuffer operator[](int index) => JS("SourceBuffer", "#[#]", this, index);
@@ -16059,6 +16290,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ SourceBuffer get first => this[0];
+
SourceBuffer get last => this[length - 1];
SourceBuffer removeLast() {
@@ -16082,16 +16315,16 @@
// -- end List<SourceBuffer> mixins.
- /** @domName SourceBufferList.addEventListener */
+ /// @domName SourceBufferList.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName SourceBufferList.dispatchEvent */
+ /// @domName SourceBufferList.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event event) native "dispatchEvent";
- /** @domName SourceBufferList.item */
+ /// @domName SourceBufferList.item; @docsEditable true
SourceBuffer item(int index) native;
- /** @domName SourceBufferList.removeEventListener */
+ /// @domName SourceBufferList.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -16099,18 +16332,18 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLSourceElement
+/// @domName HTMLSourceElement; @docsEditable true
class SourceElement extends Element implements Element native "*HTMLSourceElement" {
- factory SourceElement() => _Elements.createSourceElement();
+ factory SourceElement() => document.$dom_createElement("source");
- /** @domName HTMLSourceElement.media */
+ /// @domName HTMLSourceElement.media; @docsEditable true
String media;
- /** @domName HTMLSourceElement.src */
+ /// @domName HTMLSourceElement.src; @docsEditable true
String src;
- /** @domName HTMLSourceElement.type */
+ /// @domName HTMLSourceElement.type; @docsEditable true
String type;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -16118,25 +16351,25 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLSpanElement
+/// @domName HTMLSpanElement; @docsEditable true
class SpanElement extends Element implements Element native "*HTMLSpanElement" {
- factory SpanElement() => _Elements.createSpanElement();
+ factory SpanElement() => document.$dom_createElement("span");
}
// Copyright (c) 2012, 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.
-/// @domName SpeechGrammar
+/// @domName SpeechGrammar; @docsEditable true
class SpeechGrammar native "*SpeechGrammar" {
factory SpeechGrammar() => _SpeechGrammarFactoryProvider.createSpeechGrammar();
- /** @domName SpeechGrammar.src */
+ /// @domName SpeechGrammar.src; @docsEditable true
String src;
- /** @domName SpeechGrammar.weight */
+ /// @domName SpeechGrammar.weight; @docsEditable true
num weight;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -16144,12 +16377,12 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SpeechGrammarList
+/// @domName SpeechGrammarList; @docsEditable true
class SpeechGrammarList implements JavaScriptIndexingBehavior, List<SpeechGrammar> native "*SpeechGrammarList" {
factory SpeechGrammarList() => _SpeechGrammarListFactoryProvider.createSpeechGrammarList();
- /** @domName SpeechGrammarList.length */
+ /// @domName SpeechGrammarList.length; @docsEditable true
final int length;
SpeechGrammar operator[](int index) => JS("SpeechGrammar", "#[#]", this, index);
@@ -16212,6 +16445,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ SpeechGrammar get first => this[0];
+
SpeechGrammar get last => this[length - 1];
SpeechGrammar removeLast() {
@@ -16235,13 +16470,13 @@
// -- end List<SpeechGrammar> mixins.
- /** @domName SpeechGrammarList.addFromString */
+ /// @domName SpeechGrammarList.addFromString; @docsEditable true
void addFromString(String string, [num weight]) native;
- /** @domName SpeechGrammarList.addFromUri */
+ /// @domName SpeechGrammarList.addFromUri; @docsEditable true
void addFromUri(String src, [num weight]) native;
- /** @domName SpeechGrammarList.item */
+ /// @domName SpeechGrammarList.item; @docsEditable true
SpeechGrammar item(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -16249,10 +16484,11 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SpeechInputEvent
+/// @domName SpeechInputEvent; @docsEditable true
class SpeechInputEvent extends Event native "*SpeechInputEvent" {
- /** @domName SpeechInputEvent.results */
+ /// @domName SpeechInputEvent.results; @docsEditable true
+ @Returns('_SpeechInputResultList') @Creates('_SpeechInputResultList')
final List<SpeechInputResult> results;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -16260,13 +16496,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SpeechInputResult
+/// @domName SpeechInputResult; @docsEditable true
class SpeechInputResult native "*SpeechInputResult" {
- /** @domName SpeechInputResult.confidence */
+ /// @domName SpeechInputResult.confidence; @docsEditable true
final num confidence;
- /** @domName SpeechInputResult.utterance */
+ /// @domName SpeechInputResult.utterance; @docsEditable true
final String utterance;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -16274,48 +16510,46 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SpeechRecognition
+/// @domName SpeechRecognition; @docsEditable true
class SpeechRecognition extends EventTarget native "*SpeechRecognition" {
factory SpeechRecognition() => _SpeechRecognitionFactoryProvider.createSpeechRecognition();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
SpeechRecognitionEvents get on =>
new SpeechRecognitionEvents(this);
- /** @domName SpeechRecognition.continuous */
+ /// @domName SpeechRecognition.continuous; @docsEditable true
bool continuous;
- /** @domName SpeechRecognition.grammars */
+ /// @domName SpeechRecognition.grammars; @docsEditable true
SpeechGrammarList grammars;
- /** @domName SpeechRecognition.interimResults */
+ /// @domName SpeechRecognition.interimResults; @docsEditable true
bool interimResults;
- /** @domName SpeechRecognition.lang */
+ /// @domName SpeechRecognition.lang; @docsEditable true
String lang;
- /** @domName SpeechRecognition.maxAlternatives */
+ /// @domName SpeechRecognition.maxAlternatives; @docsEditable true
int maxAlternatives;
- /** @domName SpeechRecognition.abort */
+ /// @domName SpeechRecognition.abort; @docsEditable true
void abort() native;
- /** @domName SpeechRecognition.addEventListener */
+ /// @domName SpeechRecognition.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName SpeechRecognition.dispatchEvent */
+ /// @domName SpeechRecognition.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event evt) native "dispatchEvent";
- /** @domName SpeechRecognition.removeEventListener */
+ /// @domName SpeechRecognition.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
- /** @domName SpeechRecognition.start */
+ /// @domName SpeechRecognition.start; @docsEditable true
void start() native;
- /** @domName SpeechRecognition.stop */
+ /// @domName SpeechRecognition.stop; @docsEditable true
void stop() native;
}
@@ -16349,13 +16583,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SpeechRecognitionAlternative
+/// @domName SpeechRecognitionAlternative; @docsEditable true
class SpeechRecognitionAlternative native "*SpeechRecognitionAlternative" {
- /** @domName SpeechRecognitionAlternative.confidence */
+ /// @domName SpeechRecognitionAlternative.confidence; @docsEditable true
final num confidence;
- /** @domName SpeechRecognitionAlternative.transcript */
+ /// @domName SpeechRecognitionAlternative.transcript; @docsEditable true
final String transcript;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -16363,7 +16597,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SpeechRecognitionError
+/// @domName SpeechRecognitionError; @docsEditable true
class SpeechRecognitionError extends Event native "*SpeechRecognitionError" {
static const int ABORTED = 2;
@@ -16384,10 +16618,10 @@
static const int SERVICE_NOT_ALLOWED = 6;
- /** @domName SpeechRecognitionError.code */
+ /// @domName SpeechRecognitionError.code; @docsEditable true
final int code;
- /** @domName SpeechRecognitionError.message */
+ /// @domName SpeechRecognitionError.message; @docsEditable true
final String message;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -16395,16 +16629,17 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SpeechRecognitionEvent
+/// @domName SpeechRecognitionEvent; @docsEditable true
class SpeechRecognitionEvent extends Event native "*SpeechRecognitionEvent" {
- /** @domName SpeechRecognitionEvent.result */
+ /// @domName SpeechRecognitionEvent.result; @docsEditable true
final SpeechRecognitionResult result;
- /** @domName SpeechRecognitionEvent.resultHistory */
+ /// @domName SpeechRecognitionEvent.resultHistory; @docsEditable true
+ @Returns('_SpeechRecognitionResultList') @Creates('_SpeechRecognitionResultList')
final List<SpeechRecognitionResult> resultHistory;
- /** @domName SpeechRecognitionEvent.resultIndex */
+ /// @domName SpeechRecognitionEvent.resultIndex; @docsEditable true
final int resultIndex;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -16412,19 +16647,19 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SpeechRecognitionResult
+/// @domName SpeechRecognitionResult; @docsEditable true
class SpeechRecognitionResult native "*SpeechRecognitionResult" {
- /** @domName SpeechRecognitionResult.emma */
+ /// @domName SpeechRecognitionResult.emma; @docsEditable true
final Document emma;
- /** @domName SpeechRecognitionResult.finalValue */
+ /// @domName SpeechRecognitionResult.finalValue; @docsEditable true
bool get finalValue => JS("bool", "#.final", this);
- /** @domName SpeechRecognitionResult.length */
+ /// @domName SpeechRecognitionResult.length; @docsEditable true
final int length;
- /** @domName SpeechRecognitionResult.item */
+ /// @domName SpeechRecognitionResult.item; @docsEditable true
SpeechRecognitionAlternative item(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -16441,7 +16676,7 @@
String operator [](String key) => $dom_getItem(key);
- void operator []=(String key, String value) => $dom_setItem(key, value);
+ void operator []=(String key, String value) { $dom_setItem(key, value); }
String putIfAbsent(String key, String ifAbsent()) {
if (!containsKey(key)) this[key] = ifAbsent();
@@ -16481,22 +16716,22 @@
bool get isEmpty => $dom_key(0) == null;
- /** @domName Storage.length */
+ /// @domName Storage.length; @docsEditable true
int get $dom_length => JS("int", "#.length", this);
- /** @domName Storage.clear */
+ /// @domName Storage.clear; @docsEditable true
void $dom_clear() native "clear";
- /** @domName Storage.getItem */
+ /// @domName Storage.getItem; @docsEditable true
String $dom_getItem(String key) native "getItem";
- /** @domName Storage.key */
+ /// @domName Storage.key; @docsEditable true
String $dom_key(int index) native "key";
- /** @domName Storage.removeItem */
+ /// @domName Storage.removeItem; @docsEditable true
void $dom_removeItem(String key) native "removeItem";
- /** @domName Storage.setItem */
+ /// @domName Storage.setItem; @docsEditable true
void $dom_setItem(String key, String data) native "setItem";
}
@@ -16505,25 +16740,25 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName StorageEvent
+/// @domName StorageEvent; @docsEditable true
class StorageEvent extends Event native "*StorageEvent" {
- /** @domName StorageEvent.key */
+ /// @domName StorageEvent.key; @docsEditable true
final String key;
- /** @domName StorageEvent.newValue */
+ /// @domName StorageEvent.newValue; @docsEditable true
final String newValue;
- /** @domName StorageEvent.oldValue */
+ /// @domName StorageEvent.oldValue; @docsEditable true
final String oldValue;
- /** @domName StorageEvent.storageArea */
+ /// @domName StorageEvent.storageArea; @docsEditable true
final Storage storageArea;
- /** @domName StorageEvent.url */
+ /// @domName StorageEvent.url; @docsEditable true
final String url;
- /** @domName StorageEvent.initStorageEvent */
+ /// @domName StorageEvent.initStorageEvent; @docsEditable true
void initStorageEvent(String typeArg, bool canBubbleArg, bool cancelableArg, String keyArg, String oldValueArg, String newValueArg, String urlArg, Storage storageAreaArg) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -16531,17 +16766,17 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName StorageInfo
+/// @domName StorageInfo; @docsEditable true
class StorageInfo native "*StorageInfo" {
static const int PERSISTENT = 1;
static const int TEMPORARY = 0;
- /** @domName StorageInfo.queryUsageAndQuota */
+ /// @domName StorageInfo.queryUsageAndQuota; @docsEditable true
void queryUsageAndQuota(int storageType, [StorageInfoUsageCallback usageCallback, StorageInfoErrorCallback errorCallback]) native;
- /** @domName StorageInfo.requestQuota */
+ /// @domName StorageInfo.requestQuota; @docsEditable true
void requestQuota(int storageType, int newQuotaInBytes, [StorageInfoQuotaCallback quotaCallback, StorageInfoErrorCallback errorCallback]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -16581,24 +16816,24 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLStyleElement
+/// @domName HTMLStyleElement; @docsEditable true
class StyleElement extends Element implements Element native "*HTMLStyleElement" {
- factory StyleElement() => _Elements.createStyleElement();
+ factory StyleElement() => document.$dom_createElement("style");
- /** @domName HTMLStyleElement.disabled */
+ /// @domName HTMLStyleElement.disabled; @docsEditable true
bool disabled;
- /** @domName HTMLStyleElement.media */
+ /// @domName HTMLStyleElement.media; @docsEditable true
String media;
- /** @domName HTMLStyleElement.scoped */
+ /// @domName HTMLStyleElement.scoped; @docsEditable true
bool scoped;
- /** @domName HTMLStyleElement.sheet */
+ /// @domName HTMLStyleElement.sheet; @docsEditable true
final StyleSheet sheet;
- /** @domName HTMLStyleElement.type */
+ /// @domName HTMLStyleElement.type; @docsEditable true
String type;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -16606,13 +16841,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName StyleMedia
+/// @domName StyleMedia; @docsEditable true
class StyleMedia native "*StyleMedia" {
- /** @domName StyleMedia.type */
+ /// @domName StyleMedia.type; @docsEditable true
final String type;
- /** @domName StyleMedia.matchMedium */
+ /// @domName StyleMedia.matchMedium; @docsEditable true
bool matchMedium(String mediaquery) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -16620,28 +16855,28 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName StyleSheet
+/// @domName StyleSheet; @docsEditable true
class StyleSheet native "*StyleSheet" {
- /** @domName StyleSheet.disabled */
+ /// @domName StyleSheet.disabled; @docsEditable true
bool disabled;
- /** @domName StyleSheet.href */
+ /// @domName StyleSheet.href; @docsEditable true
final String href;
- /** @domName StyleSheet.media */
+ /// @domName StyleSheet.media; @docsEditable true
final MediaList media;
- /** @domName StyleSheet.ownerNode */
+ /// @domName StyleSheet.ownerNode; @docsEditable true
final Node ownerNode;
- /** @domName StyleSheet.parentStyleSheet */
+ /// @domName StyleSheet.parentStyleSheet; @docsEditable true
final StyleSheet parentStyleSheet;
- /** @domName StyleSheet.title */
+ /// @domName StyleSheet.title; @docsEditable true
final String title;
- /** @domName StyleSheet.type */
+ /// @domName StyleSheet.type; @docsEditable true
final String type;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -16649,12 +16884,12 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLTableCaptionElement
+/// @domName HTMLTableCaptionElement; @docsEditable true
class TableCaptionElement extends Element implements Element native "*HTMLTableCaptionElement" {
- factory TableCaptionElement() => _Elements.createTableCaptionElement();
+ factory TableCaptionElement() => document.$dom_createElement("caption");
- /** @domName HTMLTableCaptionElement.align */
+ /// @domName HTMLTableCaptionElement.align; @docsEditable true
String align;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -16662,54 +16897,54 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLTableCellElement
+/// @domName HTMLTableCellElement; @docsEditable true
class TableCellElement extends Element implements Element native "*HTMLTableCellElement" {
- factory TableCellElement() => _Elements.createTableCellElement();
+ factory TableCellElement() => document.$dom_createElement("td");
- /** @domName HTMLTableCellElement.abbr */
+ /// @domName HTMLTableCellElement.abbr; @docsEditable true
String abbr;
- /** @domName HTMLTableCellElement.align */
+ /// @domName HTMLTableCellElement.align; @docsEditable true
String align;
- /** @domName HTMLTableCellElement.axis */
+ /// @domName HTMLTableCellElement.axis; @docsEditable true
String axis;
- /** @domName HTMLTableCellElement.bgColor */
+ /// @domName HTMLTableCellElement.bgColor; @docsEditable true
String bgColor;
- /** @domName HTMLTableCellElement.cellIndex */
+ /// @domName HTMLTableCellElement.cellIndex; @docsEditable true
final int cellIndex;
- /** @domName HTMLTableCellElement.ch */
+ /// @domName HTMLTableCellElement.ch; @docsEditable true
String ch;
- /** @domName HTMLTableCellElement.chOff */
+ /// @domName HTMLTableCellElement.chOff; @docsEditable true
String chOff;
- /** @domName HTMLTableCellElement.colSpan */
+ /// @domName HTMLTableCellElement.colSpan; @docsEditable true
int colSpan;
- /** @domName HTMLTableCellElement.headers */
+ /// @domName HTMLTableCellElement.headers; @docsEditable true
String headers;
- /** @domName HTMLTableCellElement.height */
+ /// @domName HTMLTableCellElement.height; @docsEditable true
String height;
- /** @domName HTMLTableCellElement.noWrap */
+ /// @domName HTMLTableCellElement.noWrap; @docsEditable true
bool noWrap;
- /** @domName HTMLTableCellElement.rowSpan */
+ /// @domName HTMLTableCellElement.rowSpan; @docsEditable true
int rowSpan;
- /** @domName HTMLTableCellElement.scope */
+ /// @domName HTMLTableCellElement.scope; @docsEditable true
String scope;
- /** @domName HTMLTableCellElement.vAlign */
+ /// @domName HTMLTableCellElement.vAlign; @docsEditable true
String vAlign;
- /** @domName HTMLTableCellElement.width */
+ /// @domName HTMLTableCellElement.width; @docsEditable true
String width;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -16717,27 +16952,27 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLTableColElement
+/// @domName HTMLTableColElement; @docsEditable true
class TableColElement extends Element implements Element native "*HTMLTableColElement" {
- factory TableColElement() => _Elements.createTableColElement();
+ factory TableColElement() => document.$dom_createElement("col");
- /** @domName HTMLTableColElement.align */
+ /// @domName HTMLTableColElement.align; @docsEditable true
String align;
- /** @domName HTMLTableColElement.ch */
+ /// @domName HTMLTableColElement.ch; @docsEditable true
String ch;
- /** @domName HTMLTableColElement.chOff */
+ /// @domName HTMLTableColElement.chOff; @docsEditable true
String chOff;
- /** @domName HTMLTableColElement.span */
+ /// @domName HTMLTableColElement.span; @docsEditable true
int span;
- /** @domName HTMLTableColElement.vAlign */
+ /// @domName HTMLTableColElement.vAlign; @docsEditable true
String vAlign;
- /** @domName HTMLTableColElement.width */
+ /// @domName HTMLTableColElement.width; @docsEditable true
String width;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -16747,72 +16982,72 @@
class TableElement extends Element implements Element native "*HTMLTableElement" {
- factory TableElement() => _Elements.createTableElement();
+ factory TableElement() => document.$dom_createElement("table");
- /** @domName HTMLTableElement.align */
+ /// @domName HTMLTableElement.align; @docsEditable true
String align;
- /** @domName HTMLTableElement.bgColor */
+ /// @domName HTMLTableElement.bgColor; @docsEditable true
String bgColor;
- /** @domName HTMLTableElement.border */
+ /// @domName HTMLTableElement.border; @docsEditable true
String border;
- /** @domName HTMLTableElement.caption */
+ /// @domName HTMLTableElement.caption; @docsEditable true
TableCaptionElement caption;
- /** @domName HTMLTableElement.cellPadding */
+ /// @domName HTMLTableElement.cellPadding; @docsEditable true
String cellPadding;
- /** @domName HTMLTableElement.cellSpacing */
+ /// @domName HTMLTableElement.cellSpacing; @docsEditable true
String cellSpacing;
- /** @domName HTMLTableElement.frame */
+ /// @domName HTMLTableElement.frame; @docsEditable true
String frame;
- /** @domName HTMLTableElement.rows */
+ /// @domName HTMLTableElement.rows; @docsEditable true
final HTMLCollection rows;
- /** @domName HTMLTableElement.rules */
+ /// @domName HTMLTableElement.rules; @docsEditable true
String rules;
- /** @domName HTMLTableElement.summary */
+ /// @domName HTMLTableElement.summary; @docsEditable true
String summary;
- /** @domName HTMLTableElement.tBodies */
+ /// @domName HTMLTableElement.tBodies; @docsEditable true
final HTMLCollection tBodies;
- /** @domName HTMLTableElement.tFoot */
+ /// @domName HTMLTableElement.tFoot; @docsEditable true
TableSectionElement tFoot;
- /** @domName HTMLTableElement.tHead */
+ /// @domName HTMLTableElement.tHead; @docsEditable true
TableSectionElement tHead;
- /** @domName HTMLTableElement.width */
+ /// @domName HTMLTableElement.width; @docsEditable true
String width;
- /** @domName HTMLTableElement.createCaption */
+ /// @domName HTMLTableElement.createCaption; @docsEditable true
Element createCaption() native;
- /** @domName HTMLTableElement.createTFoot */
+ /// @domName HTMLTableElement.createTFoot; @docsEditable true
Element createTFoot() native;
- /** @domName HTMLTableElement.createTHead */
+ /// @domName HTMLTableElement.createTHead; @docsEditable true
Element createTHead() native;
- /** @domName HTMLTableElement.deleteCaption */
+ /// @domName HTMLTableElement.deleteCaption; @docsEditable true
void deleteCaption() native;
- /** @domName HTMLTableElement.deleteRow */
+ /// @domName HTMLTableElement.deleteRow; @docsEditable true
void deleteRow(int index) native;
- /** @domName HTMLTableElement.deleteTFoot */
+ /// @domName HTMLTableElement.deleteTFoot; @docsEditable true
void deleteTFoot() native;
- /** @domName HTMLTableElement.deleteTHead */
+ /// @domName HTMLTableElement.deleteTHead; @docsEditable true
void deleteTHead() native;
- /** @domName HTMLTableElement.insertRow */
+ /// @domName HTMLTableElement.insertRow; @docsEditable true
Element insertRow(int index) native;
@@ -16832,39 +17067,39 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLTableRowElement
+/// @domName HTMLTableRowElement; @docsEditable true
class TableRowElement extends Element implements Element native "*HTMLTableRowElement" {
- factory TableRowElement() => _Elements.createTableRowElement();
+ factory TableRowElement() => document.$dom_createElement("tr");
- /** @domName HTMLTableRowElement.align */
+ /// @domName HTMLTableRowElement.align; @docsEditable true
String align;
- /** @domName HTMLTableRowElement.bgColor */
+ /// @domName HTMLTableRowElement.bgColor; @docsEditable true
String bgColor;
- /** @domName HTMLTableRowElement.cells */
+ /// @domName HTMLTableRowElement.cells; @docsEditable true
final HTMLCollection cells;
- /** @domName HTMLTableRowElement.ch */
+ /// @domName HTMLTableRowElement.ch; @docsEditable true
String ch;
- /** @domName HTMLTableRowElement.chOff */
+ /// @domName HTMLTableRowElement.chOff; @docsEditable true
String chOff;
- /** @domName HTMLTableRowElement.rowIndex */
+ /// @domName HTMLTableRowElement.rowIndex; @docsEditable true
final int rowIndex;
- /** @domName HTMLTableRowElement.sectionRowIndex */
+ /// @domName HTMLTableRowElement.sectionRowIndex; @docsEditable true
final int sectionRowIndex;
- /** @domName HTMLTableRowElement.vAlign */
+ /// @domName HTMLTableRowElement.vAlign; @docsEditable true
String vAlign;
- /** @domName HTMLTableRowElement.deleteCell */
+ /// @domName HTMLTableRowElement.deleteCell; @docsEditable true
void deleteCell(int index) native;
- /** @domName HTMLTableRowElement.insertCell */
+ /// @domName HTMLTableRowElement.insertCell; @docsEditable true
Element insertCell(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -16872,28 +17107,28 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLTableSectionElement
+/// @domName HTMLTableSectionElement; @docsEditable true
class TableSectionElement extends Element implements Element native "*HTMLTableSectionElement" {
- /** @domName HTMLTableSectionElement.align */
+ /// @domName HTMLTableSectionElement.align; @docsEditable true
String align;
- /** @domName HTMLTableSectionElement.ch */
+ /// @domName HTMLTableSectionElement.ch; @docsEditable true
String ch;
- /** @domName HTMLTableSectionElement.chOff */
+ /// @domName HTMLTableSectionElement.chOff; @docsEditable true
String chOff;
- /** @domName HTMLTableSectionElement.rows */
+ /// @domName HTMLTableSectionElement.rows; @docsEditable true
final HTMLCollection rows;
- /** @domName HTMLTableSectionElement.vAlign */
+ /// @domName HTMLTableSectionElement.vAlign; @docsEditable true
String vAlign;
- /** @domName HTMLTableSectionElement.deleteRow */
+ /// @domName HTMLTableSectionElement.deleteRow; @docsEditable true
void deleteRow(int index) native;
- /** @domName HTMLTableSectionElement.insertRow */
+ /// @domName HTMLTableSectionElement.insertRow; @docsEditable true
Element insertRow(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -16906,13 +17141,13 @@
class Text extends CharacterData native "*Text" {
factory Text(String data) => _TextFactoryProvider.createText(data);
- /** @domName Text.wholeText */
+ /// @domName Text.wholeText; @docsEditable true
final String wholeText;
- /** @domName Text.replaceWholeText */
+ /// @domName Text.replaceWholeText; @docsEditable true
Text replaceWholeText(String content) native;
- /** @domName Text.splitText */
+ /// @domName Text.splitText; @docsEditable true
Text splitText(int offset) native;
}
@@ -16921,93 +17156,94 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLTextAreaElement
+/// @domName HTMLTextAreaElement; @docsEditable true
class TextAreaElement extends Element implements Element native "*HTMLTextAreaElement" {
- factory TextAreaElement() => _Elements.createTextAreaElement();
+ factory TextAreaElement() => document.$dom_createElement("textarea");
- /** @domName HTMLTextAreaElement.autofocus */
+ /// @domName HTMLTextAreaElement.autofocus; @docsEditable true
bool autofocus;
- /** @domName HTMLTextAreaElement.cols */
+ /// @domName HTMLTextAreaElement.cols; @docsEditable true
int cols;
- /** @domName HTMLTextAreaElement.defaultValue */
+ /// @domName HTMLTextAreaElement.defaultValue; @docsEditable true
String defaultValue;
- /** @domName HTMLTextAreaElement.dirName */
+ /// @domName HTMLTextAreaElement.dirName; @docsEditable true
String dirName;
- /** @domName HTMLTextAreaElement.disabled */
+ /// @domName HTMLTextAreaElement.disabled; @docsEditable true
bool disabled;
- /** @domName HTMLTextAreaElement.form */
+ /// @domName HTMLTextAreaElement.form; @docsEditable true
final FormElement form;
- /** @domName HTMLTextAreaElement.labels */
+ /// @domName HTMLTextAreaElement.labels; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
final List<Node> labels;
- /** @domName HTMLTextAreaElement.maxLength */
+ /// @domName HTMLTextAreaElement.maxLength; @docsEditable true
int maxLength;
- /** @domName HTMLTextAreaElement.name */
+ /// @domName HTMLTextAreaElement.name; @docsEditable true
String name;
- /** @domName HTMLTextAreaElement.placeholder */
+ /// @domName HTMLTextAreaElement.placeholder; @docsEditable true
String placeholder;
- /** @domName HTMLTextAreaElement.readOnly */
+ /// @domName HTMLTextAreaElement.readOnly; @docsEditable true
bool readOnly;
- /** @domName HTMLTextAreaElement.required */
+ /// @domName HTMLTextAreaElement.required; @docsEditable true
bool required;
- /** @domName HTMLTextAreaElement.rows */
+ /// @domName HTMLTextAreaElement.rows; @docsEditable true
int rows;
- /** @domName HTMLTextAreaElement.selectionDirection */
+ /// @domName HTMLTextAreaElement.selectionDirection; @docsEditable true
String selectionDirection;
- /** @domName HTMLTextAreaElement.selectionEnd */
+ /// @domName HTMLTextAreaElement.selectionEnd; @docsEditable true
int selectionEnd;
- /** @domName HTMLTextAreaElement.selectionStart */
+ /// @domName HTMLTextAreaElement.selectionStart; @docsEditable true
int selectionStart;
- /** @domName HTMLTextAreaElement.textLength */
+ /// @domName HTMLTextAreaElement.textLength; @docsEditable true
final int textLength;
- /** @domName HTMLTextAreaElement.type */
+ /// @domName HTMLTextAreaElement.type; @docsEditable true
final String type;
- /** @domName HTMLTextAreaElement.validationMessage */
+ /// @domName HTMLTextAreaElement.validationMessage; @docsEditable true
final String validationMessage;
- /** @domName HTMLTextAreaElement.validity */
+ /// @domName HTMLTextAreaElement.validity; @docsEditable true
final ValidityState validity;
- /** @domName HTMLTextAreaElement.value */
+ /// @domName HTMLTextAreaElement.value; @docsEditable true
String value;
- /** @domName HTMLTextAreaElement.willValidate */
+ /// @domName HTMLTextAreaElement.willValidate; @docsEditable true
final bool willValidate;
- /** @domName HTMLTextAreaElement.wrap */
+ /// @domName HTMLTextAreaElement.wrap; @docsEditable true
String wrap;
- /** @domName HTMLTextAreaElement.checkValidity */
+ /// @domName HTMLTextAreaElement.checkValidity; @docsEditable true
bool checkValidity() native;
- /** @domName HTMLTextAreaElement.select */
+ /// @domName HTMLTextAreaElement.select; @docsEditable true
void select() native;
- /** @domName HTMLTextAreaElement.setCustomValidity */
+ /// @domName HTMLTextAreaElement.setCustomValidity; @docsEditable true
void setCustomValidity(String error) native;
- /** @domName HTMLTextAreaElement.setRangeText */
+ /// @domName HTMLTextAreaElement.setRangeText; @docsEditable true
void setRangeText(String replacement, [int start, int end, String selectionMode]) native;
- /** @domName HTMLTextAreaElement.setSelectionRange */
+ /// @domName HTMLTextAreaElement.setSelectionRange; @docsEditable true
void setSelectionRange(int start, int end, [String direction]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -17015,13 +17251,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName TextEvent
+/// @domName TextEvent; @docsEditable true
class TextEvent extends UIEvent native "*TextEvent" {
- /** @domName TextEvent.data */
+ /// @domName TextEvent.data; @docsEditable true
final String data;
- /** @domName TextEvent.initTextEvent */
+ /// @domName TextEvent.initTextEvent; @docsEditable true
void initTextEvent(String typeArg, bool canBubbleArg, bool cancelableArg, LocalWindow viewArg, String dataArg) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -17029,10 +17265,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName TextMetrics
+/// @domName TextMetrics; @docsEditable true
class TextMetrics native "*TextMetrics" {
- /** @domName TextMetrics.width */
+ /// @domName TextMetrics.width; @docsEditable true
final num width;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -17040,46 +17276,44 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName TextTrack
+/// @domName TextTrack; @docsEditable true
class TextTrack extends EventTarget native "*TextTrack" {
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
TextTrackEvents get on =>
new TextTrackEvents(this);
- /** @domName TextTrack.activeCues */
+ /// @domName TextTrack.activeCues; @docsEditable true
final TextTrackCueList activeCues;
- /** @domName TextTrack.cues */
+ /// @domName TextTrack.cues; @docsEditable true
final TextTrackCueList cues;
- /** @domName TextTrack.kind */
+ /// @domName TextTrack.kind; @docsEditable true
final String kind;
- /** @domName TextTrack.label */
+ /// @domName TextTrack.label; @docsEditable true
final String label;
- /** @domName TextTrack.language */
+ /// @domName TextTrack.language; @docsEditable true
final String language;
- /** @domName TextTrack.mode */
+ /// @domName TextTrack.mode; @docsEditable true
String mode;
- /** @domName TextTrack.addCue */
+ /// @domName TextTrack.addCue; @docsEditable true
void addCue(TextTrackCue cue) native;
- /** @domName TextTrack.addEventListener */
+ /// @domName TextTrack.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName TextTrack.dispatchEvent */
+ /// @domName TextTrack.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event evt) native "dispatchEvent";
- /** @domName TextTrack.removeCue */
+ /// @domName TextTrack.removeCue; @docsEditable true
void removeCue(TextTrackCue cue) native;
- /** @domName TextTrack.removeEventListener */
+ /// @domName TextTrack.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
}
@@ -17093,63 +17327,61 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName TextTrackCue
+/// @domName TextTrackCue; @docsEditable true
class TextTrackCue extends EventTarget native "*TextTrackCue" {
factory TextTrackCue(num startTime, num endTime, String text) => _TextTrackCueFactoryProvider.createTextTrackCue(startTime, endTime, text);
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
TextTrackCueEvents get on =>
new TextTrackCueEvents(this);
- /** @domName TextTrackCue.align */
+ /// @domName TextTrackCue.align; @docsEditable true
String align;
- /** @domName TextTrackCue.endTime */
+ /// @domName TextTrackCue.endTime; @docsEditable true
num endTime;
- /** @domName TextTrackCue.id */
+ /// @domName TextTrackCue.id; @docsEditable true
String id;
- /** @domName TextTrackCue.line */
+ /// @domName TextTrackCue.line; @docsEditable true
int line;
- /** @domName TextTrackCue.pauseOnExit */
+ /// @domName TextTrackCue.pauseOnExit; @docsEditable true
bool pauseOnExit;
- /** @domName TextTrackCue.position */
+ /// @domName TextTrackCue.position; @docsEditable true
int position;
- /** @domName TextTrackCue.size */
+ /// @domName TextTrackCue.size; @docsEditable true
int size;
- /** @domName TextTrackCue.snapToLines */
+ /// @domName TextTrackCue.snapToLines; @docsEditable true
bool snapToLines;
- /** @domName TextTrackCue.startTime */
+ /// @domName TextTrackCue.startTime; @docsEditable true
num startTime;
- /** @domName TextTrackCue.text */
+ /// @domName TextTrackCue.text; @docsEditable true
String text;
- /** @domName TextTrackCue.track */
+ /// @domName TextTrackCue.track; @docsEditable true
final TextTrack track;
- /** @domName TextTrackCue.vertical */
+ /// @domName TextTrackCue.vertical; @docsEditable true
String vertical;
- /** @domName TextTrackCue.addEventListener */
+ /// @domName TextTrackCue.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName TextTrackCue.dispatchEvent */
+ /// @domName TextTrackCue.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event evt) native "dispatchEvent";
- /** @domName TextTrackCue.getCueAsHTML */
+ /// @domName TextTrackCue.getCueAsHTML; @docsEditable true
DocumentFragment getCueAsHTML() native;
- /** @domName TextTrackCue.removeEventListener */
+ /// @domName TextTrackCue.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
}
@@ -17165,10 +17397,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName TextTrackCueList
+/// @domName TextTrackCueList; @docsEditable true
class TextTrackCueList implements List<TextTrackCue>, JavaScriptIndexingBehavior native "*TextTrackCueList" {
- /** @domName TextTrackCueList.length */
+ /// @domName TextTrackCueList.length; @docsEditable true
final int length;
TextTrackCue operator[](int index) => JS("TextTrackCue", "#[#]", this, index);
@@ -17231,6 +17463,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ TextTrackCue get first => this[0];
+
TextTrackCue get last => this[length - 1];
TextTrackCue removeLast() {
@@ -17254,10 +17488,10 @@
// -- end List<TextTrackCue> mixins.
- /** @domName TextTrackCueList.getCueById */
+ /// @domName TextTrackCueList.getCueById; @docsEditable true
TextTrackCue getCueById(String id) native;
- /** @domName TextTrackCueList.item */
+ /// @domName TextTrackCueList.item; @docsEditable true
TextTrackCue item(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -17265,16 +17499,14 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName TextTrackList
+/// @domName TextTrackList; @docsEditable true
class TextTrackList extends EventTarget implements JavaScriptIndexingBehavior, List<TextTrack> native "*TextTrackList" {
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
TextTrackListEvents get on =>
new TextTrackListEvents(this);
- /** @domName TextTrackList.length */
+ /// @domName TextTrackList.length; @docsEditable true
final int length;
TextTrack operator[](int index) => JS("TextTrack", "#[#]", this, index);
@@ -17337,6 +17569,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ TextTrack get first => this[0];
+
TextTrack get last => this[length - 1];
TextTrack removeLast() {
@@ -17360,16 +17594,16 @@
// -- end List<TextTrack> mixins.
- /** @domName TextTrackList.addEventListener */
+ /// @domName TextTrackList.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName TextTrackList.dispatchEvent */
+ /// @domName TextTrackList.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event evt) native "dispatchEvent";
- /** @domName TextTrackList.item */
+ /// @domName TextTrackList.item; @docsEditable true
TextTrack item(int index) native;
- /** @domName TextTrackList.removeEventListener */
+ /// @domName TextTrackList.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
}
@@ -17383,16 +17617,16 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName TimeRanges
+/// @domName TimeRanges; @docsEditable true
class TimeRanges native "*TimeRanges" {
- /** @domName TimeRanges.length */
+ /// @domName TimeRanges.length; @docsEditable true
final int length;
- /** @domName TimeRanges.end */
+ /// @domName TimeRanges.end; @docsEditable true
num end(int index) native;
- /** @domName TimeRanges.start */
+ /// @domName TimeRanges.start; @docsEditable true
num start(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -17408,54 +17642,54 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLTitleElement
+/// @domName HTMLTitleElement; @docsEditable true
class TitleElement extends Element implements Element native "*HTMLTitleElement" {
- factory TitleElement() => _Elements.createTitleElement();
+ factory TitleElement() => document.$dom_createElement("title");
}
// Copyright (c) 2012, 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.
-/// @domName Touch
+/// @domName Touch; @docsEditable true
class Touch native "*Touch" {
- /** @domName Touch.clientX */
+ /// @domName Touch.clientX; @docsEditable true
final int clientX;
- /** @domName Touch.clientY */
+ /// @domName Touch.clientY; @docsEditable true
final int clientY;
- /** @domName Touch.identifier */
+ /// @domName Touch.identifier; @docsEditable true
final int identifier;
- /** @domName Touch.pageX */
+ /// @domName Touch.pageX; @docsEditable true
final int pageX;
- /** @domName Touch.pageY */
+ /// @domName Touch.pageY; @docsEditable true
final int pageY;
- /** @domName Touch.screenX */
+ /// @domName Touch.screenX; @docsEditable true
final int screenX;
- /** @domName Touch.screenY */
+ /// @domName Touch.screenY; @docsEditable true
final int screenY;
- /** @domName Touch.target */
+ /// @domName Touch.target; @docsEditable true
EventTarget get target => _convertNativeToDart_EventTarget(this._target);
dynamic get _target => JS("dynamic", "#.target", this);
- /** @domName Touch.webkitForce */
+ /// @domName Touch.webkitForce; @docsEditable true
final num webkitForce;
- /** @domName Touch.webkitRadiusX */
+ /// @domName Touch.webkitRadiusX; @docsEditable true
final int webkitRadiusX;
- /** @domName Touch.webkitRadiusY */
+ /// @domName Touch.webkitRadiusY; @docsEditable true
final int webkitRadiusY;
- /** @domName Touch.webkitRotationAngle */
+ /// @domName Touch.webkitRotationAngle; @docsEditable true
final num webkitRotationAngle;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -17463,31 +17697,31 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName TouchEvent
+/// @domName TouchEvent; @docsEditable true
class TouchEvent extends UIEvent native "*TouchEvent" {
- /** @domName TouchEvent.altKey */
+ /// @domName TouchEvent.altKey; @docsEditable true
final bool altKey;
- /** @domName TouchEvent.changedTouches */
+ /// @domName TouchEvent.changedTouches; @docsEditable true
final TouchList changedTouches;
- /** @domName TouchEvent.ctrlKey */
+ /// @domName TouchEvent.ctrlKey; @docsEditable true
final bool ctrlKey;
- /** @domName TouchEvent.metaKey */
+ /// @domName TouchEvent.metaKey; @docsEditable true
final bool metaKey;
- /** @domName TouchEvent.shiftKey */
+ /// @domName TouchEvent.shiftKey; @docsEditable true
final bool shiftKey;
- /** @domName TouchEvent.targetTouches */
+ /// @domName TouchEvent.targetTouches; @docsEditable true
final TouchList targetTouches;
- /** @domName TouchEvent.touches */
+ /// @domName TouchEvent.touches; @docsEditable true
final TouchList touches;
- /** @domName TouchEvent.initTouchEvent */
+ /// @domName TouchEvent.initTouchEvent; @docsEditable true
void initTouchEvent(TouchList touches, TouchList targetTouches, TouchList changedTouches, String type, LocalWindow view, int screenX, int screenY, int clientX, int clientY, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -17495,10 +17729,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName TouchList
+/// @domName TouchList; @docsEditable true
class TouchList implements JavaScriptIndexingBehavior, List<Touch> native "*TouchList" {
- /** @domName TouchList.length */
+ /// @domName TouchList.length; @docsEditable true
final int length;
Touch operator[](int index) => JS("Touch", "#[#]", this, index);
@@ -17561,6 +17795,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ Touch get first => this[0];
+
Touch get last => this[length - 1];
Touch removeLast() {
@@ -17584,7 +17820,7 @@
// -- end List<Touch> mixins.
- /** @domName TouchList.item */
+ /// @domName TouchList.item; @docsEditable true
Touch item(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -17592,10 +17828,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLTrackElement
+/// @domName HTMLTrackElement; @docsEditable true
class TrackElement extends Element implements Element native "*HTMLTrackElement" {
- factory TrackElement() => _Elements.createTrackElement();
+ factory TrackElement() => document.$dom_createElement("track");
static const int ERROR = 3;
@@ -17605,30 +17841,30 @@
static const int NONE = 0;
- /** @domName HTMLTrackElement.defaultValue */
+ /// @domName HTMLTrackElement.defaultValue; @docsEditable true
bool get defaultValue => JS("bool", "#.default", this);
- /** @domName HTMLTrackElement.defaultValue */
+ /// @domName HTMLTrackElement.defaultValue; @docsEditable true
void set defaultValue(bool value) {
JS("void", "#.default = #", this, value);
}
- /** @domName HTMLTrackElement.kind */
+ /// @domName HTMLTrackElement.kind; @docsEditable true
String kind;
- /** @domName HTMLTrackElement.label */
+ /// @domName HTMLTrackElement.label; @docsEditable true
String label;
- /** @domName HTMLTrackElement.readyState */
+ /// @domName HTMLTrackElement.readyState; @docsEditable true
final int readyState;
- /** @domName HTMLTrackElement.src */
+ /// @domName HTMLTrackElement.src; @docsEditable true
String src;
- /** @domName HTMLTrackElement.srclang */
+ /// @domName HTMLTrackElement.srclang; @docsEditable true
String srclang;
- /** @domName HTMLTrackElement.track */
+ /// @domName HTMLTrackElement.track; @docsEditable true
final TextTrack track;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -17636,10 +17872,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName TrackEvent
+/// @domName TrackEvent; @docsEditable true
class TrackEvent extends Event native "*TrackEvent" {
- /** @domName TrackEvent.track */
+ /// @domName TrackEvent.track; @docsEditable true
final Object track;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -17647,13 +17883,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebKitTransitionEvent
+/// @domName WebKitTransitionEvent; @docsEditable true
class TransitionEvent extends Event native "*WebKitTransitionEvent" {
- /** @domName WebKitTransitionEvent.elapsedTime */
+ /// @domName WebKitTransitionEvent.elapsedTime; @docsEditable true
final num elapsedTime;
- /** @domName WebKitTransitionEvent.propertyName */
+ /// @domName WebKitTransitionEvent.propertyName; @docsEditable true
final String propertyName;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -17661,43 +17897,43 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName TreeWalker
+/// @domName TreeWalker; @docsEditable true
class TreeWalker native "*TreeWalker" {
- /** @domName TreeWalker.currentNode */
+ /// @domName TreeWalker.currentNode; @docsEditable true
Node currentNode;
- /** @domName TreeWalker.expandEntityReferences */
+ /// @domName TreeWalker.expandEntityReferences; @docsEditable true
final bool expandEntityReferences;
- /** @domName TreeWalker.filter */
+ /// @domName TreeWalker.filter; @docsEditable true
final NodeFilter filter;
- /** @domName TreeWalker.root */
+ /// @domName TreeWalker.root; @docsEditable true
final Node root;
- /** @domName TreeWalker.whatToShow */
+ /// @domName TreeWalker.whatToShow; @docsEditable true
final int whatToShow;
- /** @domName TreeWalker.firstChild */
+ /// @domName TreeWalker.firstChild; @docsEditable true
Node firstChild() native;
- /** @domName TreeWalker.lastChild */
+ /// @domName TreeWalker.lastChild; @docsEditable true
Node lastChild() native;
- /** @domName TreeWalker.nextNode */
+ /// @domName TreeWalker.nextNode; @docsEditable true
Node nextNode() native;
- /** @domName TreeWalker.nextSibling */
+ /// @domName TreeWalker.nextSibling; @docsEditable true
Node nextSibling() native;
- /** @domName TreeWalker.parentNode */
+ /// @domName TreeWalker.parentNode; @docsEditable true
Node parentNode() native;
- /** @domName TreeWalker.previousNode */
+ /// @domName TreeWalker.previousNode; @docsEditable true
Node previousNode() native;
- /** @domName TreeWalker.previousSibling */
+ /// @domName TreeWalker.previousSibling; @docsEditable true
Node previousSibling() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -17705,38 +17941,38 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName UIEvent
+/// @domName UIEvent; @docsEditable true
class UIEvent extends Event native "*UIEvent" {
- /** @domName UIEvent.charCode */
+ /// @domName UIEvent.charCode; @docsEditable true
final int charCode;
- /** @domName UIEvent.detail */
+ /// @domName UIEvent.detail; @docsEditable true
final int detail;
- /** @domName UIEvent.keyCode */
+ /// @domName UIEvent.keyCode; @docsEditable true
final int keyCode;
- /** @domName UIEvent.layerX */
+ /// @domName UIEvent.layerX; @docsEditable true
final int layerX;
- /** @domName UIEvent.layerY */
+ /// @domName UIEvent.layerY; @docsEditable true
final int layerY;
- /** @domName UIEvent.pageX */
+ /// @domName UIEvent.pageX; @docsEditable true
final int pageX;
- /** @domName UIEvent.pageY */
+ /// @domName UIEvent.pageY; @docsEditable true
final int pageY;
- /** @domName UIEvent.view */
+ /// @domName UIEvent.view; @docsEditable true
Window get view => _convertNativeToDart_Window(this._view);
dynamic get _view => JS("dynamic", "#.view", this);
- /** @domName UIEvent.which */
+ /// @domName UIEvent.which; @docsEditable true
final int which;
- /** @domName UIEvent.initUIEvent */
+ /// @domName UIEvent.initUIEvent; @docsEditable true
void initUIEvent(String type, bool canBubble, bool cancelable, LocalWindow view, int detail) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -17744,15 +17980,15 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLUListElement
+/// @domName HTMLUListElement; @docsEditable true
class UListElement extends Element implements Element native "*HTMLUListElement" {
- factory UListElement() => _Elements.createUListElement();
+ factory UListElement() => document.$dom_createElement("ul");
- /** @domName HTMLUListElement.compact */
+ /// @domName HTMLUListElement.compact; @docsEditable true
bool compact;
- /** @domName HTMLUListElement.type */
+ /// @domName HTMLUListElement.type; @docsEditable true
String type;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -17760,7 +17996,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Uint16Array
+/// @domName Uint16Array; @docsEditable true
class Uint16Array extends ArrayBufferView implements JavaScriptIndexingBehavior, List<int> native "*Uint16Array" {
factory Uint16Array(int length) =>
@@ -17774,13 +18010,12 @@
static const int BYTES_PER_ELEMENT = 2;
- /** @domName Uint16Array.length */
+ /// @domName Uint16Array.length; @docsEditable true
final int length;
int operator[](int index) => JS("int", "#[#]", this, index);
- void operator[]=(int index, int value) => JS("void", "#[#] = #", this, index, value);
- // -- start List<int> mixins.
+ void operator[]=(int index, int value) { JS("void", "#[#] = #", this, index, value); } // -- start List<int> mixins.
// int is the element type.
// From Iterable<int>:
@@ -17835,6 +18070,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ int get first => this[0];
+
int get last => this[length - 1];
int removeLast() {
@@ -17858,10 +18095,10 @@
// -- end List<int> mixins.
- /** @domName Uint16Array.setElements */
+ /// @domName Uint16Array.setElements; @docsEditable true
void setElements(Object array, [int offset]) native "set";
- /** @domName Uint16Array.subarray */
+ /// @domName Uint16Array.subarray; @docsEditable true
Uint16Array subarray(int start, [int end]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -17869,7 +18106,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Uint32Array
+/// @domName Uint32Array; @docsEditable true
class Uint32Array extends ArrayBufferView implements JavaScriptIndexingBehavior, List<int> native "*Uint32Array" {
factory Uint32Array(int length) =>
@@ -17883,13 +18120,12 @@
static const int BYTES_PER_ELEMENT = 4;
- /** @domName Uint32Array.length */
+ /// @domName Uint32Array.length; @docsEditable true
final int length;
int operator[](int index) => JS("int", "#[#]", this, index);
- void operator[]=(int index, int value) => JS("void", "#[#] = #", this, index, value);
- // -- start List<int> mixins.
+ void operator[]=(int index, int value) { JS("void", "#[#] = #", this, index, value); } // -- start List<int> mixins.
// int is the element type.
// From Iterable<int>:
@@ -17944,6 +18180,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ int get first => this[0];
+
int get last => this[length - 1];
int removeLast() {
@@ -17967,10 +18205,10 @@
// -- end List<int> mixins.
- /** @domName Uint32Array.setElements */
+ /// @domName Uint32Array.setElements; @docsEditable true
void setElements(Object array, [int offset]) native "set";
- /** @domName Uint32Array.subarray */
+ /// @domName Uint32Array.subarray; @docsEditable true
Uint32Array subarray(int start, [int end]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -17978,7 +18216,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Uint8Array
+/// @domName Uint8Array; @docsEditable true
class Uint8Array extends ArrayBufferView implements JavaScriptIndexingBehavior, List<int> native "*Uint8Array" {
factory Uint8Array(int length) =>
@@ -17992,13 +18230,12 @@
static const int BYTES_PER_ELEMENT = 1;
- /** @domName Uint8Array.length */
+ /// @domName Uint8Array.length; @docsEditable true
final int length;
int operator[](int index) => JS("int", "#[#]", this, index);
- void operator[]=(int index, int value) => JS("void", "#[#] = #", this, index, value);
- // -- start List<int> mixins.
+ void operator[]=(int index, int value) { JS("void", "#[#] = #", this, index, value); } // -- start List<int> mixins.
// int is the element type.
// From Iterable<int>:
@@ -18053,6 +18290,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ int get first => this[0];
+
int get last => this[length - 1];
int removeLast() {
@@ -18076,10 +18315,10 @@
// -- end List<int> mixins.
- /** @domName Uint8Array.setElements */
+ /// @domName Uint8Array.setElements; @docsEditable true
void setElements(Object array, [int offset]) native "set";
- /** @domName Uint8Array.subarray */
+ /// @domName Uint8Array.subarray; @docsEditable true
Uint8Array subarray(int start, [int end]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -18087,7 +18326,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Uint8ClampedArray
+/// @domName Uint8ClampedArray; @docsEditable true
class Uint8ClampedArray extends Uint8Array native "*Uint8ClampedArray" {
factory Uint8ClampedArray(int length) =>
@@ -18102,10 +18341,10 @@
// Use implementation from Uint8Array.
// final int length;
- /** @domName Uint8ClampedArray.setElements */
+ /// @domName Uint8ClampedArray.setElements; @docsEditable true
void setElements(Object array, [int offset]) native "set";
- /** @domName Uint8ClampedArray.subarray */
+ /// @domName Uint8ClampedArray.subarray; @docsEditable true
Uint8ClampedArray subarray(int start, [int end]) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -18113,7 +18352,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLUnknownElement
+/// @domName HTMLUnknownElement; @docsEditable true
class UnknownElement extends Element implements Element native "*HTMLUnknownElement" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -18138,34 +18377,34 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName ValidityState
+/// @domName ValidityState; @docsEditable true
class ValidityState native "*ValidityState" {
- /** @domName ValidityState.customError */
+ /// @domName ValidityState.customError; @docsEditable true
final bool customError;
- /** @domName ValidityState.patternMismatch */
+ /// @domName ValidityState.patternMismatch; @docsEditable true
final bool patternMismatch;
- /** @domName ValidityState.rangeOverflow */
+ /// @domName ValidityState.rangeOverflow; @docsEditable true
final bool rangeOverflow;
- /** @domName ValidityState.rangeUnderflow */
+ /// @domName ValidityState.rangeUnderflow; @docsEditable true
final bool rangeUnderflow;
- /** @domName ValidityState.stepMismatch */
+ /// @domName ValidityState.stepMismatch; @docsEditable true
final bool stepMismatch;
- /** @domName ValidityState.tooLong */
+ /// @domName ValidityState.tooLong; @docsEditable true
final bool tooLong;
- /** @domName ValidityState.typeMismatch */
+ /// @domName ValidityState.typeMismatch; @docsEditable true
final bool typeMismatch;
- /** @domName ValidityState.valid */
+ /// @domName ValidityState.valid; @docsEditable true
final bool valid;
- /** @domName ValidityState.valueMissing */
+ /// @domName ValidityState.valueMissing; @docsEditable true
final bool valueMissing;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -18173,48 +18412,48 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName HTMLVideoElement
+/// @domName HTMLVideoElement; @docsEditable true
class VideoElement extends MediaElement native "*HTMLVideoElement" {
- factory VideoElement() => _Elements.createVideoElement();
+ factory VideoElement() => document.$dom_createElement("video");
- /** @domName HTMLVideoElement.height */
+ /// @domName HTMLVideoElement.height; @docsEditable true
int height;
- /** @domName HTMLVideoElement.poster */
+ /// @domName HTMLVideoElement.poster; @docsEditable true
String poster;
- /** @domName HTMLVideoElement.videoHeight */
+ /// @domName HTMLVideoElement.videoHeight; @docsEditable true
final int videoHeight;
- /** @domName HTMLVideoElement.videoWidth */
+ /// @domName HTMLVideoElement.videoWidth; @docsEditable true
final int videoWidth;
- /** @domName HTMLVideoElement.webkitDecodedFrameCount */
+ /// @domName HTMLVideoElement.webkitDecodedFrameCount; @docsEditable true
final int webkitDecodedFrameCount;
- /** @domName HTMLVideoElement.webkitDisplayingFullscreen */
+ /// @domName HTMLVideoElement.webkitDisplayingFullscreen; @docsEditable true
final bool webkitDisplayingFullscreen;
- /** @domName HTMLVideoElement.webkitDroppedFrameCount */
+ /// @domName HTMLVideoElement.webkitDroppedFrameCount; @docsEditable true
final int webkitDroppedFrameCount;
- /** @domName HTMLVideoElement.webkitSupportsFullscreen */
+ /// @domName HTMLVideoElement.webkitSupportsFullscreen; @docsEditable true
final bool webkitSupportsFullscreen;
- /** @domName HTMLVideoElement.width */
+ /// @domName HTMLVideoElement.width; @docsEditable true
int width;
- /** @domName HTMLVideoElement.webkitEnterFullScreen */
+ /// @domName HTMLVideoElement.webkitEnterFullScreen; @docsEditable true
void webkitEnterFullScreen() native;
- /** @domName HTMLVideoElement.webkitEnterFullscreen */
+ /// @domName HTMLVideoElement.webkitEnterFullscreen; @docsEditable true
void webkitEnterFullscreen() native;
- /** @domName HTMLVideoElement.webkitExitFullScreen */
+ /// @domName HTMLVideoElement.webkitExitFullScreen; @docsEditable true
void webkitExitFullScreen() native;
- /** @domName HTMLVideoElement.webkitExitFullscreen */
+ /// @domName HTMLVideoElement.webkitExitFullscreen; @docsEditable true
void webkitExitFullscreen() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -18230,10 +18469,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WaveShaperNode
+/// @domName WaveShaperNode; @docsEditable true
class WaveShaperNode extends AudioNode native "*WaveShaperNode" {
- /** @domName WaveShaperNode.curve */
+ /// @domName WaveShaperNode.curve; @docsEditable true
Float32Array curve;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -18241,7 +18480,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WaveTable
+/// @domName WaveTable; @docsEditable true
class WaveTable native "*WaveTable" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -18249,16 +18488,16 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebGLActiveInfo
+/// @domName WebGLActiveInfo; @docsEditable true
class WebGLActiveInfo native "*WebGLActiveInfo" {
- /** @domName WebGLActiveInfo.name */
+ /// @domName WebGLActiveInfo.name; @docsEditable true
final String name;
- /** @domName WebGLActiveInfo.size */
+ /// @domName WebGLActiveInfo.size; @docsEditable true
final int size;
- /** @domName WebGLActiveInfo.type */
+ /// @domName WebGLActiveInfo.type; @docsEditable true
final int type;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -18266,7 +18505,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebGLBuffer
+/// @domName WebGLBuffer; @docsEditable true
class WebGLBuffer native "*WebGLBuffer" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -18274,7 +18513,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebGLCompressedTextureS3TC
+/// @domName WebGLCompressedTextureS3TC; @docsEditable true
class WebGLCompressedTextureS3TC native "*WebGLCompressedTextureS3TC" {
static const int COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1;
@@ -18290,25 +18529,25 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebGLContextAttributes
+/// @domName WebGLContextAttributes; @docsEditable true
class WebGLContextAttributes native "*WebGLContextAttributes" {
- /** @domName WebGLContextAttributes.alpha */
+ /// @domName WebGLContextAttributes.alpha; @docsEditable true
bool alpha;
- /** @domName WebGLContextAttributes.antialias */
+ /// @domName WebGLContextAttributes.antialias; @docsEditable true
bool antialias;
- /** @domName WebGLContextAttributes.depth */
+ /// @domName WebGLContextAttributes.depth; @docsEditable true
bool depth;
- /** @domName WebGLContextAttributes.premultipliedAlpha */
+ /// @domName WebGLContextAttributes.premultipliedAlpha; @docsEditable true
bool premultipliedAlpha;
- /** @domName WebGLContextAttributes.preserveDrawingBuffer */
+ /// @domName WebGLContextAttributes.preserveDrawingBuffer; @docsEditable true
bool preserveDrawingBuffer;
- /** @domName WebGLContextAttributes.stencil */
+ /// @domName WebGLContextAttributes.stencil; @docsEditable true
bool stencil;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -18316,10 +18555,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebGLContextEvent
+/// @domName WebGLContextEvent; @docsEditable true
class WebGLContextEvent extends Event native "*WebGLContextEvent" {
- /** @domName WebGLContextEvent.statusMessage */
+ /// @domName WebGLContextEvent.statusMessage; @docsEditable true
final String statusMessage;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -18327,7 +18566,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebGLDebugRendererInfo
+/// @domName WebGLDebugRendererInfo; @docsEditable true
class WebGLDebugRendererInfo native "*WebGLDebugRendererInfo" {
static const int UNMASKED_RENDERER_WEBGL = 0x9246;
@@ -18339,10 +18578,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebGLDebugShaders
+/// @domName WebGLDebugShaders; @docsEditable true
class WebGLDebugShaders native "*WebGLDebugShaders" {
- /** @domName WebGLDebugShaders.getTranslatedShaderSource */
+ /// @domName WebGLDebugShaders.getTranslatedShaderSource; @docsEditable true
String getTranslatedShaderSource(WebGLShader shader) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -18350,7 +18589,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebGLDepthTexture
+/// @domName WebGLDepthTexture; @docsEditable true
class WebGLDepthTexture native "*WebGLDepthTexture" {
static const int UNSIGNED_INT_24_8_WEBGL = 0x84FA;
@@ -18360,7 +18599,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebGLFramebuffer
+/// @domName WebGLFramebuffer; @docsEditable true
class WebGLFramebuffer native "*WebGLFramebuffer" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -18368,13 +18607,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebGLLoseContext
+/// @domName WebGLLoseContext; @docsEditable true
class WebGLLoseContext native "*WebGLLoseContext" {
- /** @domName WebGLLoseContext.loseContext */
+ /// @domName WebGLLoseContext.loseContext; @docsEditable true
void loseContext() native;
- /** @domName WebGLLoseContext.restoreContext */
+ /// @domName WebGLLoseContext.restoreContext; @docsEditable true
void restoreContext() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -18382,7 +18621,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebGLProgram
+/// @domName WebGLProgram; @docsEditable true
class WebGLProgram native "*WebGLProgram" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -18390,7 +18629,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebGLRenderbuffer
+/// @domName WebGLRenderbuffer; @docsEditable true
class WebGLRenderbuffer native "*WebGLRenderbuffer" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -18398,7 +18637,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebGLRenderingContext
+/// @domName WebGLRenderingContext; @docsEditable true
class WebGLRenderingContext extends CanvasRenderingContext native "*WebGLRenderingContext" {
static const int ACTIVE_ATTRIBUTES = 0x8B89;
@@ -18991,319 +19230,319 @@
static const int ZERO = 0;
- /** @domName WebGLRenderingContext.drawingBufferHeight */
+ /// @domName WebGLRenderingContext.drawingBufferHeight; @docsEditable true
final int drawingBufferHeight;
- /** @domName WebGLRenderingContext.drawingBufferWidth */
+ /// @domName WebGLRenderingContext.drawingBufferWidth; @docsEditable true
final int drawingBufferWidth;
- /** @domName WebGLRenderingContext.activeTexture */
+ /// @domName WebGLRenderingContext.activeTexture; @docsEditable true
void activeTexture(int texture) native;
- /** @domName WebGLRenderingContext.attachShader */
+ /// @domName WebGLRenderingContext.attachShader; @docsEditable true
void attachShader(WebGLProgram program, WebGLShader shader) native;
- /** @domName WebGLRenderingContext.bindAttribLocation */
+ /// @domName WebGLRenderingContext.bindAttribLocation; @docsEditable true
void bindAttribLocation(WebGLProgram program, int index, String name) native;
- /** @domName WebGLRenderingContext.bindBuffer */
+ /// @domName WebGLRenderingContext.bindBuffer; @docsEditable true
void bindBuffer(int target, WebGLBuffer buffer) native;
- /** @domName WebGLRenderingContext.bindFramebuffer */
+ /// @domName WebGLRenderingContext.bindFramebuffer; @docsEditable true
void bindFramebuffer(int target, WebGLFramebuffer framebuffer) native;
- /** @domName WebGLRenderingContext.bindRenderbuffer */
+ /// @domName WebGLRenderingContext.bindRenderbuffer; @docsEditable true
void bindRenderbuffer(int target, WebGLRenderbuffer renderbuffer) native;
- /** @domName WebGLRenderingContext.bindTexture */
+ /// @domName WebGLRenderingContext.bindTexture; @docsEditable true
void bindTexture(int target, WebGLTexture texture) native;
- /** @domName WebGLRenderingContext.blendColor */
+ /// @domName WebGLRenderingContext.blendColor; @docsEditable true
void blendColor(num red, num green, num blue, num alpha) native;
- /** @domName WebGLRenderingContext.blendEquation */
+ /// @domName WebGLRenderingContext.blendEquation; @docsEditable true
void blendEquation(int mode) native;
- /** @domName WebGLRenderingContext.blendEquationSeparate */
+ /// @domName WebGLRenderingContext.blendEquationSeparate; @docsEditable true
void blendEquationSeparate(int modeRGB, int modeAlpha) native;
- /** @domName WebGLRenderingContext.blendFunc */
+ /// @domName WebGLRenderingContext.blendFunc; @docsEditable true
void blendFunc(int sfactor, int dfactor) native;
- /** @domName WebGLRenderingContext.blendFuncSeparate */
+ /// @domName WebGLRenderingContext.blendFuncSeparate; @docsEditable true
void blendFuncSeparate(int srcRGB, int dstRGB, int srcAlpha, int dstAlpha) native;
- /** @domName WebGLRenderingContext.bufferData */
+ /// @domName WebGLRenderingContext.bufferData; @docsEditable true
void bufferData(int target, data_OR_size, int usage) native;
- /** @domName WebGLRenderingContext.bufferSubData */
+ /// @domName WebGLRenderingContext.bufferSubData; @docsEditable true
void bufferSubData(int target, int offset, data) native;
- /** @domName WebGLRenderingContext.checkFramebufferStatus */
+ /// @domName WebGLRenderingContext.checkFramebufferStatus; @docsEditable true
int checkFramebufferStatus(int target) native;
- /** @domName WebGLRenderingContext.clear */
+ /// @domName WebGLRenderingContext.clear; @docsEditable true
void clear(int mask) native;
- /** @domName WebGLRenderingContext.clearColor */
+ /// @domName WebGLRenderingContext.clearColor; @docsEditable true
void clearColor(num red, num green, num blue, num alpha) native;
- /** @domName WebGLRenderingContext.clearDepth */
+ /// @domName WebGLRenderingContext.clearDepth; @docsEditable true
void clearDepth(num depth) native;
- /** @domName WebGLRenderingContext.clearStencil */
+ /// @domName WebGLRenderingContext.clearStencil; @docsEditable true
void clearStencil(int s) native;
- /** @domName WebGLRenderingContext.colorMask */
+ /// @domName WebGLRenderingContext.colorMask; @docsEditable true
void colorMask(bool red, bool green, bool blue, bool alpha) native;
- /** @domName WebGLRenderingContext.compileShader */
+ /// @domName WebGLRenderingContext.compileShader; @docsEditable true
void compileShader(WebGLShader shader) native;
- /** @domName WebGLRenderingContext.compressedTexImage2D */
+ /// @domName WebGLRenderingContext.compressedTexImage2D; @docsEditable true
void compressedTexImage2D(int target, int level, int internalformat, int width, int height, int border, ArrayBufferView data) native;
- /** @domName WebGLRenderingContext.compressedTexSubImage2D */
+ /// @domName WebGLRenderingContext.compressedTexSubImage2D; @docsEditable true
void compressedTexSubImage2D(int target, int level, int xoffset, int yoffset, int width, int height, int format, ArrayBufferView data) native;
- /** @domName WebGLRenderingContext.copyTexImage2D */
+ /// @domName WebGLRenderingContext.copyTexImage2D; @docsEditable true
void copyTexImage2D(int target, int level, int internalformat, int x, int y, int width, int height, int border) native;
- /** @domName WebGLRenderingContext.copyTexSubImage2D */
+ /// @domName WebGLRenderingContext.copyTexSubImage2D; @docsEditable true
void copyTexSubImage2D(int target, int level, int xoffset, int yoffset, int x, int y, int width, int height) native;
- /** @domName WebGLRenderingContext.createBuffer */
+ /// @domName WebGLRenderingContext.createBuffer; @docsEditable true
WebGLBuffer createBuffer() native;
- /** @domName WebGLRenderingContext.createFramebuffer */
+ /// @domName WebGLRenderingContext.createFramebuffer; @docsEditable true
WebGLFramebuffer createFramebuffer() native;
- /** @domName WebGLRenderingContext.createProgram */
+ /// @domName WebGLRenderingContext.createProgram; @docsEditable true
WebGLProgram createProgram() native;
- /** @domName WebGLRenderingContext.createRenderbuffer */
+ /// @domName WebGLRenderingContext.createRenderbuffer; @docsEditable true
WebGLRenderbuffer createRenderbuffer() native;
- /** @domName WebGLRenderingContext.createShader */
+ /// @domName WebGLRenderingContext.createShader; @docsEditable true
WebGLShader createShader(int type) native;
- /** @domName WebGLRenderingContext.createTexture */
+ /// @domName WebGLRenderingContext.createTexture; @docsEditable true
WebGLTexture createTexture() native;
- /** @domName WebGLRenderingContext.cullFace */
+ /// @domName WebGLRenderingContext.cullFace; @docsEditable true
void cullFace(int mode) native;
- /** @domName WebGLRenderingContext.deleteBuffer */
+ /// @domName WebGLRenderingContext.deleteBuffer; @docsEditable true
void deleteBuffer(WebGLBuffer buffer) native;
- /** @domName WebGLRenderingContext.deleteFramebuffer */
+ /// @domName WebGLRenderingContext.deleteFramebuffer; @docsEditable true
void deleteFramebuffer(WebGLFramebuffer framebuffer) native;
- /** @domName WebGLRenderingContext.deleteProgram */
+ /// @domName WebGLRenderingContext.deleteProgram; @docsEditable true
void deleteProgram(WebGLProgram program) native;
- /** @domName WebGLRenderingContext.deleteRenderbuffer */
+ /// @domName WebGLRenderingContext.deleteRenderbuffer; @docsEditable true
void deleteRenderbuffer(WebGLRenderbuffer renderbuffer) native;
- /** @domName WebGLRenderingContext.deleteShader */
+ /// @domName WebGLRenderingContext.deleteShader; @docsEditable true
void deleteShader(WebGLShader shader) native;
- /** @domName WebGLRenderingContext.deleteTexture */
+ /// @domName WebGLRenderingContext.deleteTexture; @docsEditable true
void deleteTexture(WebGLTexture texture) native;
- /** @domName WebGLRenderingContext.depthFunc */
+ /// @domName WebGLRenderingContext.depthFunc; @docsEditable true
void depthFunc(int func) native;
- /** @domName WebGLRenderingContext.depthMask */
+ /// @domName WebGLRenderingContext.depthMask; @docsEditable true
void depthMask(bool flag) native;
- /** @domName WebGLRenderingContext.depthRange */
+ /// @domName WebGLRenderingContext.depthRange; @docsEditable true
void depthRange(num zNear, num zFar) native;
- /** @domName WebGLRenderingContext.detachShader */
+ /// @domName WebGLRenderingContext.detachShader; @docsEditable true
void detachShader(WebGLProgram program, WebGLShader shader) native;
- /** @domName WebGLRenderingContext.disable */
+ /// @domName WebGLRenderingContext.disable; @docsEditable true
void disable(int cap) native;
- /** @domName WebGLRenderingContext.disableVertexAttribArray */
+ /// @domName WebGLRenderingContext.disableVertexAttribArray; @docsEditable true
void disableVertexAttribArray(int index) native;
- /** @domName WebGLRenderingContext.drawArrays */
+ /// @domName WebGLRenderingContext.drawArrays; @docsEditable true
void drawArrays(int mode, int first, int count) native;
- /** @domName WebGLRenderingContext.drawElements */
+ /// @domName WebGLRenderingContext.drawElements; @docsEditable true
void drawElements(int mode, int count, int type, int offset) native;
- /** @domName WebGLRenderingContext.enable */
+ /// @domName WebGLRenderingContext.enable; @docsEditable true
void enable(int cap) native;
- /** @domName WebGLRenderingContext.enableVertexAttribArray */
+ /// @domName WebGLRenderingContext.enableVertexAttribArray; @docsEditable true
void enableVertexAttribArray(int index) native;
- /** @domName WebGLRenderingContext.finish */
+ /// @domName WebGLRenderingContext.finish; @docsEditable true
void finish() native;
- /** @domName WebGLRenderingContext.flush */
+ /// @domName WebGLRenderingContext.flush; @docsEditable true
void flush() native;
- /** @domName WebGLRenderingContext.framebufferRenderbuffer */
+ /// @domName WebGLRenderingContext.framebufferRenderbuffer; @docsEditable true
void framebufferRenderbuffer(int target, int attachment, int renderbuffertarget, WebGLRenderbuffer renderbuffer) native;
- /** @domName WebGLRenderingContext.framebufferTexture2D */
+ /// @domName WebGLRenderingContext.framebufferTexture2D; @docsEditable true
void framebufferTexture2D(int target, int attachment, int textarget, WebGLTexture texture, int level) native;
- /** @domName WebGLRenderingContext.frontFace */
+ /// @domName WebGLRenderingContext.frontFace; @docsEditable true
void frontFace(int mode) native;
- /** @domName WebGLRenderingContext.generateMipmap */
+ /// @domName WebGLRenderingContext.generateMipmap; @docsEditable true
void generateMipmap(int target) native;
- /** @domName WebGLRenderingContext.getActiveAttrib */
+ /// @domName WebGLRenderingContext.getActiveAttrib; @docsEditable true
WebGLActiveInfo getActiveAttrib(WebGLProgram program, int index) native;
- /** @domName WebGLRenderingContext.getActiveUniform */
+ /// @domName WebGLRenderingContext.getActiveUniform; @docsEditable true
WebGLActiveInfo getActiveUniform(WebGLProgram program, int index) native;
- /** @domName WebGLRenderingContext.getAttachedShaders */
+ /// @domName WebGLRenderingContext.getAttachedShaders; @docsEditable true
void getAttachedShaders(WebGLProgram program) native;
- /** @domName WebGLRenderingContext.getAttribLocation */
+ /// @domName WebGLRenderingContext.getAttribLocation; @docsEditable true
int getAttribLocation(WebGLProgram program, String name) native;
- /** @domName WebGLRenderingContext.getBufferParameter */
+ /// @domName WebGLRenderingContext.getBufferParameter; @docsEditable true
Object getBufferParameter(int target, int pname) native;
- /** @domName WebGLRenderingContext.getContextAttributes */
+ /// @domName WebGLRenderingContext.getContextAttributes; @docsEditable true
WebGLContextAttributes getContextAttributes() native;
- /** @domName WebGLRenderingContext.getError */
+ /// @domName WebGLRenderingContext.getError; @docsEditable true
int getError() native;
- /** @domName WebGLRenderingContext.getExtension */
+ /// @domName WebGLRenderingContext.getExtension; @docsEditable true
Object getExtension(String name) native;
- /** @domName WebGLRenderingContext.getFramebufferAttachmentParameter */
+ /// @domName WebGLRenderingContext.getFramebufferAttachmentParameter; @docsEditable true
Object getFramebufferAttachmentParameter(int target, int attachment, int pname) native;
- /** @domName WebGLRenderingContext.getParameter */
+ /// @domName WebGLRenderingContext.getParameter; @docsEditable true
Object getParameter(int pname) native;
- /** @domName WebGLRenderingContext.getProgramInfoLog */
+ /// @domName WebGLRenderingContext.getProgramInfoLog; @docsEditable true
String getProgramInfoLog(WebGLProgram program) native;
- /** @domName WebGLRenderingContext.getProgramParameter */
+ /// @domName WebGLRenderingContext.getProgramParameter; @docsEditable true
Object getProgramParameter(WebGLProgram program, int pname) native;
- /** @domName WebGLRenderingContext.getRenderbufferParameter */
+ /// @domName WebGLRenderingContext.getRenderbufferParameter; @docsEditable true
Object getRenderbufferParameter(int target, int pname) native;
- /** @domName WebGLRenderingContext.getShaderInfoLog */
+ /// @domName WebGLRenderingContext.getShaderInfoLog; @docsEditable true
String getShaderInfoLog(WebGLShader shader) native;
- /** @domName WebGLRenderingContext.getShaderParameter */
+ /// @domName WebGLRenderingContext.getShaderParameter; @docsEditable true
Object getShaderParameter(WebGLShader shader, int pname) native;
- /** @domName WebGLRenderingContext.getShaderPrecisionFormat */
+ /// @domName WebGLRenderingContext.getShaderPrecisionFormat; @docsEditable true
WebGLShaderPrecisionFormat getShaderPrecisionFormat(int shadertype, int precisiontype) native;
- /** @domName WebGLRenderingContext.getShaderSource */
+ /// @domName WebGLRenderingContext.getShaderSource; @docsEditable true
String getShaderSource(WebGLShader shader) native;
- /** @domName WebGLRenderingContext.getSupportedExtensions */
+ /// @domName WebGLRenderingContext.getSupportedExtensions; @docsEditable true
List<String> getSupportedExtensions() native;
- /** @domName WebGLRenderingContext.getTexParameter */
+ /// @domName WebGLRenderingContext.getTexParameter; @docsEditable true
Object getTexParameter(int target, int pname) native;
- /** @domName WebGLRenderingContext.getUniform */
+ /// @domName WebGLRenderingContext.getUniform; @docsEditable true
Object getUniform(WebGLProgram program, WebGLUniformLocation location) native;
- /** @domName WebGLRenderingContext.getUniformLocation */
+ /// @domName WebGLRenderingContext.getUniformLocation; @docsEditable true
WebGLUniformLocation getUniformLocation(WebGLProgram program, String name) native;
- /** @domName WebGLRenderingContext.getVertexAttrib */
+ /// @domName WebGLRenderingContext.getVertexAttrib; @docsEditable true
Object getVertexAttrib(int index, int pname) native;
- /** @domName WebGLRenderingContext.getVertexAttribOffset */
+ /// @domName WebGLRenderingContext.getVertexAttribOffset; @docsEditable true
int getVertexAttribOffset(int index, int pname) native;
- /** @domName WebGLRenderingContext.hint */
+ /// @domName WebGLRenderingContext.hint; @docsEditable true
void hint(int target, int mode) native;
- /** @domName WebGLRenderingContext.isBuffer */
+ /// @domName WebGLRenderingContext.isBuffer; @docsEditable true
bool isBuffer(WebGLBuffer buffer) native;
- /** @domName WebGLRenderingContext.isContextLost */
+ /// @domName WebGLRenderingContext.isContextLost; @docsEditable true
bool isContextLost() native;
- /** @domName WebGLRenderingContext.isEnabled */
+ /// @domName WebGLRenderingContext.isEnabled; @docsEditable true
bool isEnabled(int cap) native;
- /** @domName WebGLRenderingContext.isFramebuffer */
+ /// @domName WebGLRenderingContext.isFramebuffer; @docsEditable true
bool isFramebuffer(WebGLFramebuffer framebuffer) native;
- /** @domName WebGLRenderingContext.isProgram */
+ /// @domName WebGLRenderingContext.isProgram; @docsEditable true
bool isProgram(WebGLProgram program) native;
- /** @domName WebGLRenderingContext.isRenderbuffer */
+ /// @domName WebGLRenderingContext.isRenderbuffer; @docsEditable true
bool isRenderbuffer(WebGLRenderbuffer renderbuffer) native;
- /** @domName WebGLRenderingContext.isShader */
+ /// @domName WebGLRenderingContext.isShader; @docsEditable true
bool isShader(WebGLShader shader) native;
- /** @domName WebGLRenderingContext.isTexture */
+ /// @domName WebGLRenderingContext.isTexture; @docsEditable true
bool isTexture(WebGLTexture texture) native;
- /** @domName WebGLRenderingContext.lineWidth */
+ /// @domName WebGLRenderingContext.lineWidth; @docsEditable true
void lineWidth(num width) native;
- /** @domName WebGLRenderingContext.linkProgram */
+ /// @domName WebGLRenderingContext.linkProgram; @docsEditable true
void linkProgram(WebGLProgram program) native;
- /** @domName WebGLRenderingContext.pixelStorei */
+ /// @domName WebGLRenderingContext.pixelStorei; @docsEditable true
void pixelStorei(int pname, int param) native;
- /** @domName WebGLRenderingContext.polygonOffset */
+ /// @domName WebGLRenderingContext.polygonOffset; @docsEditable true
void polygonOffset(num factor, num units) native;
- /** @domName WebGLRenderingContext.readPixels */
+ /// @domName WebGLRenderingContext.readPixels; @docsEditable true
void readPixels(int x, int y, int width, int height, int format, int type, ArrayBufferView pixels) native;
- /** @domName WebGLRenderingContext.releaseShaderCompiler */
+ /// @domName WebGLRenderingContext.releaseShaderCompiler; @docsEditable true
void releaseShaderCompiler() native;
- /** @domName WebGLRenderingContext.renderbufferStorage */
+ /// @domName WebGLRenderingContext.renderbufferStorage; @docsEditable true
void renderbufferStorage(int target, int internalformat, int width, int height) native;
- /** @domName WebGLRenderingContext.sampleCoverage */
+ /// @domName WebGLRenderingContext.sampleCoverage; @docsEditable true
void sampleCoverage(num value, bool invert) native;
- /** @domName WebGLRenderingContext.scissor */
+ /// @domName WebGLRenderingContext.scissor; @docsEditable true
void scissor(int x, int y, int width, int height) native;
- /** @domName WebGLRenderingContext.shaderSource */
+ /// @domName WebGLRenderingContext.shaderSource; @docsEditable true
void shaderSource(WebGLShader shader, String string) native;
- /** @domName WebGLRenderingContext.stencilFunc */
+ /// @domName WebGLRenderingContext.stencilFunc; @docsEditable true
void stencilFunc(int func, int ref, int mask) native;
- /** @domName WebGLRenderingContext.stencilFuncSeparate */
+ /// @domName WebGLRenderingContext.stencilFuncSeparate; @docsEditable true
void stencilFuncSeparate(int face, int func, int ref, int mask) native;
- /** @domName WebGLRenderingContext.stencilMask */
+ /// @domName WebGLRenderingContext.stencilMask; @docsEditable true
void stencilMask(int mask) native;
- /** @domName WebGLRenderingContext.stencilMaskSeparate */
+ /// @domName WebGLRenderingContext.stencilMaskSeparate; @docsEditable true
void stencilMaskSeparate(int face, int mask) native;
- /** @domName WebGLRenderingContext.stencilOp */
+ /// @domName WebGLRenderingContext.stencilOp; @docsEditable true
void stencilOp(int fail, int zfail, int zpass) native;
- /** @domName WebGLRenderingContext.stencilOpSeparate */
+ /// @domName WebGLRenderingContext.stencilOpSeparate; @docsEditable true
void stencilOpSeparate(int face, int fail, int zfail, int zpass) native;
- /** @domName WebGLRenderingContext.texImage2D */
+ /// @domName WebGLRenderingContext.texImage2D; @docsEditable true
void texImage2D(int target, int level, int internalformat, int format_OR_width, int height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video, [int format, int type, ArrayBufferView pixels]) {
if ((?border_OR_canvas_OR_image_OR_pixels_OR_video && (border_OR_canvas_OR_image_OR_pixels_OR_video is int || border_OR_canvas_OR_image_OR_pixels_OR_video == null))) {
_texImage2D_1(target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video, format, type, pixels);
@@ -19338,7 +19577,7 @@
_texImage2D_5(target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video);
return;
}
- throw const Exception("Incorrect number or type of arguments");
+ throw new ArgumentError("Incorrect number or type of arguments");
}
void _texImage2D_1(target, level, internalformat, width, height, int border, format, type, ArrayBufferView pixels) native "texImage2D";
void _texImage2D_2(target, level, internalformat, format, type, pixels) native "texImage2D";
@@ -19346,13 +19585,13 @@
void _texImage2D_4(target, level, internalformat, format, type, CanvasElement canvas) native "texImage2D";
void _texImage2D_5(target, level, internalformat, format, type, VideoElement video) native "texImage2D";
- /** @domName WebGLRenderingContext.texParameterf */
+ /// @domName WebGLRenderingContext.texParameterf; @docsEditable true
void texParameterf(int target, int pname, num param) native;
- /** @domName WebGLRenderingContext.texParameteri */
+ /// @domName WebGLRenderingContext.texParameteri; @docsEditable true
void texParameteri(int target, int pname, int param) native;
- /** @domName WebGLRenderingContext.texSubImage2D */
+ /// @domName WebGLRenderingContext.texSubImage2D; @docsEditable true
void texSubImage2D(int target, int level, int xoffset, int yoffset, int format_OR_width, int height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video, [int type, ArrayBufferView pixels]) {
if ((?canvas_OR_format_OR_image_OR_pixels_OR_video && (canvas_OR_format_OR_image_OR_pixels_OR_video is int || canvas_OR_format_OR_image_OR_pixels_OR_video == null))) {
_texSubImage2D_1(target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video, type, pixels);
@@ -19383,7 +19622,7 @@
_texSubImage2D_5(target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video);
return;
}
- throw const Exception("Incorrect number or type of arguments");
+ throw new ArgumentError("Incorrect number or type of arguments");
}
void _texSubImage2D_1(target, level, xoffset, yoffset, width, height, int format, type, ArrayBufferView pixels) native "texSubImage2D";
void _texSubImage2D_2(target, level, xoffset, yoffset, format, type, pixels) native "texSubImage2D";
@@ -19391,97 +19630,97 @@
void _texSubImage2D_4(target, level, xoffset, yoffset, format, type, CanvasElement canvas) native "texSubImage2D";
void _texSubImage2D_5(target, level, xoffset, yoffset, format, type, VideoElement video) native "texSubImage2D";
- /** @domName WebGLRenderingContext.uniform1f */
+ /// @domName WebGLRenderingContext.uniform1f; @docsEditable true
void uniform1f(WebGLUniformLocation location, num x) native;
- /** @domName WebGLRenderingContext.uniform1fv */
+ /// @domName WebGLRenderingContext.uniform1fv; @docsEditable true
void uniform1fv(WebGLUniformLocation location, Float32Array v) native;
- /** @domName WebGLRenderingContext.uniform1i */
+ /// @domName WebGLRenderingContext.uniform1i; @docsEditable true
void uniform1i(WebGLUniformLocation location, int x) native;
- /** @domName WebGLRenderingContext.uniform1iv */
+ /// @domName WebGLRenderingContext.uniform1iv; @docsEditable true
void uniform1iv(WebGLUniformLocation location, Int32Array v) native;
- /** @domName WebGLRenderingContext.uniform2f */
+ /// @domName WebGLRenderingContext.uniform2f; @docsEditable true
void uniform2f(WebGLUniformLocation location, num x, num y) native;
- /** @domName WebGLRenderingContext.uniform2fv */
+ /// @domName WebGLRenderingContext.uniform2fv; @docsEditable true
void uniform2fv(WebGLUniformLocation location, Float32Array v) native;
- /** @domName WebGLRenderingContext.uniform2i */
+ /// @domName WebGLRenderingContext.uniform2i; @docsEditable true
void uniform2i(WebGLUniformLocation location, int x, int y) native;
- /** @domName WebGLRenderingContext.uniform2iv */
+ /// @domName WebGLRenderingContext.uniform2iv; @docsEditable true
void uniform2iv(WebGLUniformLocation location, Int32Array v) native;
- /** @domName WebGLRenderingContext.uniform3f */
+ /// @domName WebGLRenderingContext.uniform3f; @docsEditable true
void uniform3f(WebGLUniformLocation location, num x, num y, num z) native;
- /** @domName WebGLRenderingContext.uniform3fv */
+ /// @domName WebGLRenderingContext.uniform3fv; @docsEditable true
void uniform3fv(WebGLUniformLocation location, Float32Array v) native;
- /** @domName WebGLRenderingContext.uniform3i */
+ /// @domName WebGLRenderingContext.uniform3i; @docsEditable true
void uniform3i(WebGLUniformLocation location, int x, int y, int z) native;
- /** @domName WebGLRenderingContext.uniform3iv */
+ /// @domName WebGLRenderingContext.uniform3iv; @docsEditable true
void uniform3iv(WebGLUniformLocation location, Int32Array v) native;
- /** @domName WebGLRenderingContext.uniform4f */
+ /// @domName WebGLRenderingContext.uniform4f; @docsEditable true
void uniform4f(WebGLUniformLocation location, num x, num y, num z, num w) native;
- /** @domName WebGLRenderingContext.uniform4fv */
+ /// @domName WebGLRenderingContext.uniform4fv; @docsEditable true
void uniform4fv(WebGLUniformLocation location, Float32Array v) native;
- /** @domName WebGLRenderingContext.uniform4i */
+ /// @domName WebGLRenderingContext.uniform4i; @docsEditable true
void uniform4i(WebGLUniformLocation location, int x, int y, int z, int w) native;
- /** @domName WebGLRenderingContext.uniform4iv */
+ /// @domName WebGLRenderingContext.uniform4iv; @docsEditable true
void uniform4iv(WebGLUniformLocation location, Int32Array v) native;
- /** @domName WebGLRenderingContext.uniformMatrix2fv */
+ /// @domName WebGLRenderingContext.uniformMatrix2fv; @docsEditable true
void uniformMatrix2fv(WebGLUniformLocation location, bool transpose, Float32Array array) native;
- /** @domName WebGLRenderingContext.uniformMatrix3fv */
+ /// @domName WebGLRenderingContext.uniformMatrix3fv; @docsEditable true
void uniformMatrix3fv(WebGLUniformLocation location, bool transpose, Float32Array array) native;
- /** @domName WebGLRenderingContext.uniformMatrix4fv */
+ /// @domName WebGLRenderingContext.uniformMatrix4fv; @docsEditable true
void uniformMatrix4fv(WebGLUniformLocation location, bool transpose, Float32Array array) native;
- /** @domName WebGLRenderingContext.useProgram */
+ /// @domName WebGLRenderingContext.useProgram; @docsEditable true
void useProgram(WebGLProgram program) native;
- /** @domName WebGLRenderingContext.validateProgram */
+ /// @domName WebGLRenderingContext.validateProgram; @docsEditable true
void validateProgram(WebGLProgram program) native;
- /** @domName WebGLRenderingContext.vertexAttrib1f */
+ /// @domName WebGLRenderingContext.vertexAttrib1f; @docsEditable true
void vertexAttrib1f(int indx, num x) native;
- /** @domName WebGLRenderingContext.vertexAttrib1fv */
+ /// @domName WebGLRenderingContext.vertexAttrib1fv; @docsEditable true
void vertexAttrib1fv(int indx, Float32Array values) native;
- /** @domName WebGLRenderingContext.vertexAttrib2f */
+ /// @domName WebGLRenderingContext.vertexAttrib2f; @docsEditable true
void vertexAttrib2f(int indx, num x, num y) native;
- /** @domName WebGLRenderingContext.vertexAttrib2fv */
+ /// @domName WebGLRenderingContext.vertexAttrib2fv; @docsEditable true
void vertexAttrib2fv(int indx, Float32Array values) native;
- /** @domName WebGLRenderingContext.vertexAttrib3f */
+ /// @domName WebGLRenderingContext.vertexAttrib3f; @docsEditable true
void vertexAttrib3f(int indx, num x, num y, num z) native;
- /** @domName WebGLRenderingContext.vertexAttrib3fv */
+ /// @domName WebGLRenderingContext.vertexAttrib3fv; @docsEditable true
void vertexAttrib3fv(int indx, Float32Array values) native;
- /** @domName WebGLRenderingContext.vertexAttrib4f */
+ /// @domName WebGLRenderingContext.vertexAttrib4f; @docsEditable true
void vertexAttrib4f(int indx, num x, num y, num z, num w) native;
- /** @domName WebGLRenderingContext.vertexAttrib4fv */
+ /// @domName WebGLRenderingContext.vertexAttrib4fv; @docsEditable true
void vertexAttrib4fv(int indx, Float32Array values) native;
- /** @domName WebGLRenderingContext.vertexAttribPointer */
+ /// @domName WebGLRenderingContext.vertexAttribPointer; @docsEditable true
void vertexAttribPointer(int indx, int size, int type, bool normalized, int stride, int offset) native;
- /** @domName WebGLRenderingContext.viewport */
+ /// @domName WebGLRenderingContext.viewport; @docsEditable true
void viewport(int x, int y, int width, int height) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -19489,7 +19728,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebGLShader
+/// @domName WebGLShader; @docsEditable true
class WebGLShader native "*WebGLShader" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -19497,16 +19736,16 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebGLShaderPrecisionFormat
+/// @domName WebGLShaderPrecisionFormat; @docsEditable true
class WebGLShaderPrecisionFormat native "*WebGLShaderPrecisionFormat" {
- /** @domName WebGLShaderPrecisionFormat.precision */
+ /// @domName WebGLShaderPrecisionFormat.precision; @docsEditable true
final int precision;
- /** @domName WebGLShaderPrecisionFormat.rangeMax */
+ /// @domName WebGLShaderPrecisionFormat.rangeMax; @docsEditable true
final int rangeMax;
- /** @domName WebGLShaderPrecisionFormat.rangeMin */
+ /// @domName WebGLShaderPrecisionFormat.rangeMin; @docsEditable true
final int rangeMin;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -19514,7 +19753,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebGLTexture
+/// @domName WebGLTexture; @docsEditable true
class WebGLTexture native "*WebGLTexture" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -19522,7 +19761,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebGLUniformLocation
+/// @domName WebGLUniformLocation; @docsEditable true
class WebGLUniformLocation native "*WebGLUniformLocation" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -19530,7 +19769,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebGLVertexArrayObjectOES
+/// @domName WebGLVertexArrayObjectOES; @docsEditable true
class WebGLVertexArrayObjectOES native "*WebGLVertexArrayObjectOES" {
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -19538,7 +19777,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebKitCSSFilterValue
+/// @domName WebKitCSSFilterValue; @docsEditable true
class WebKitCSSFilterValue extends _CSSValueList native "*WebKitCSSFilterValue" {
static const int CSS_FILTER_BLUR = 10;
@@ -19565,7 +19804,7 @@
static const int CSS_FILTER_SEPIA = 3;
- /** @domName WebKitCSSFilterValue.operationType */
+ /// @domName WebKitCSSFilterValue.operationType; @docsEditable true
final int operationType;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -19573,34 +19812,37 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebKitNamedFlow
+/// @domName WebKitNamedFlow; @docsEditable true
class WebKitNamedFlow extends EventTarget native "*WebKitNamedFlow" {
- /** @domName WebKitNamedFlow.firstEmptyRegionIndex */
+ /// @domName WebKitNamedFlow.firstEmptyRegionIndex; @docsEditable true
final int firstEmptyRegionIndex;
- /** @domName WebKitNamedFlow.name */
+ /// @domName WebKitNamedFlow.name; @docsEditable true
final String name;
- /** @domName WebKitNamedFlow.overset */
+ /// @domName WebKitNamedFlow.overset; @docsEditable true
final bool overset;
- /** @domName WebKitNamedFlow.addEventListener */
+ /// @domName WebKitNamedFlow.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName WebKitNamedFlow.dispatchEvent */
+ /// @domName WebKitNamedFlow.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event event) native "dispatchEvent";
- /** @domName WebKitNamedFlow.getContent */
+ /// @domName WebKitNamedFlow.getContent; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
List<Node> getContent() native;
- /** @domName WebKitNamedFlow.getRegions */
+ /// @domName WebKitNamedFlow.getRegions; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
List<Node> getRegions() native;
- /** @domName WebKitNamedFlow.getRegionsByContent */
+ /// @domName WebKitNamedFlow.getRegionsByContent; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
List<Node> getRegionsByContent(Node contentNode) native;
- /** @domName WebKitNamedFlow.removeEventListener */
+ /// @domName WebKitNamedFlow.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -19613,9 +19855,7 @@
class WebSocket extends EventTarget native "*WebSocket" {
factory WebSocket(String url) => _WebSocketFactoryProvider.createWebSocket(url);
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
WebSocketEvents get on =>
new WebSocketEvents(this);
@@ -19627,40 +19867,40 @@
static const int OPEN = 1;
- /** @domName WebSocket.URL */
+ /// @domName WebSocket.URL; @docsEditable true
final String URL;
- /** @domName WebSocket.binaryType */
+ /// @domName WebSocket.binaryType; @docsEditable true
String binaryType;
- /** @domName WebSocket.bufferedAmount */
+ /// @domName WebSocket.bufferedAmount; @docsEditable true
final int bufferedAmount;
- /** @domName WebSocket.extensions */
+ /// @domName WebSocket.extensions; @docsEditable true
final String extensions;
- /** @domName WebSocket.protocol */
+ /// @domName WebSocket.protocol; @docsEditable true
final String protocol;
- /** @domName WebSocket.readyState */
+ /// @domName WebSocket.readyState; @docsEditable true
final int readyState;
- /** @domName WebSocket.url */
+ /// @domName WebSocket.url; @docsEditable true
final String url;
- /** @domName WebSocket.addEventListener */
+ /// @domName WebSocket.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName WebSocket.close */
+ /// @domName WebSocket.close; @docsEditable true
void close([int code, String reason]) native;
- /** @domName WebSocket.dispatchEvent */
+ /// @domName WebSocket.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event evt) native "dispatchEvent";
- /** @domName WebSocket.removeEventListener */
+ /// @domName WebSocket.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
- /** @domName WebSocket.send */
+ /// @domName WebSocket.send; @docsEditable true
void send(data) native;
}
@@ -19683,10 +19923,10 @@
class WheelEvent extends MouseEvent native "*WheelEvent" {
- /** @domName WheelEvent.webkitDirectionInvertedFromDevice */
+ /// @domName WheelEvent.webkitDirectionInvertedFromDevice; @docsEditable true
final bool webkitDirectionInvertedFromDevice;
- /** @domName WheelEvent.initWebKitWheelEvent */
+ /// @domName WheelEvent.initWebKitWheelEvent; @docsEditable true
void initWebKitWheelEvent(int wheelDeltaX, int wheelDeltaY, LocalWindow view, int screenX, int screenY, int clientX, int clientY, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) native;
@@ -19768,18 +20008,16 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName Worker
+/// @domName Worker; @docsEditable true
class Worker extends AbstractWorker native "*Worker" {
factory Worker(String scriptUrl) => _WorkerFactoryProvider.createWorker(scriptUrl);
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
WorkerEvents get on =>
new WorkerEvents(this);
- /** @domName Worker.postMessage */
+ /// @domName Worker.postMessage; @docsEditable true
void postMessage(/*SerializedScriptValue*/ message, [List messagePorts]) {
if (?messagePorts) {
var message_1 = _convertDartToNative_SerializedScriptValue(message);
@@ -19793,7 +20031,7 @@
void _postMessage_1(message, List messagePorts) native "postMessage";
void _postMessage_2(message) native "postMessage";
- /** @domName Worker.terminate */
+ /// @domName Worker.terminate; @docsEditable true
void terminate() native;
}
@@ -19807,12 +20045,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WorkerContext
+/// @domName WorkerContext; @docsEditable true
class WorkerContext extends EventTarget native "*WorkerContext" {
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
WorkerContextEvents get on =>
new WorkerContextEvents(this);
@@ -19820,67 +20056,67 @@
static const int TEMPORARY = 0;
- /** @domName WorkerContext.indexedDB */
+ /// @domName WorkerContext.indexedDB; @docsEditable true
final IDBFactory indexedDB;
- /** @domName WorkerContext.location */
+ /// @domName WorkerContext.location; @docsEditable true
final WorkerLocation location;
- /** @domName WorkerContext.navigator */
+ /// @domName WorkerContext.navigator; @docsEditable true
final WorkerNavigator navigator;
- /** @domName WorkerContext.self */
+ /// @domName WorkerContext.self; @docsEditable true
final WorkerContext self;
- /** @domName WorkerContext.webkitIndexedDB */
+ /// @domName WorkerContext.webkitIndexedDB; @docsEditable true
final IDBFactory webkitIndexedDB;
- /** @domName WorkerContext.webkitNotifications */
+ /// @domName WorkerContext.webkitNotifications; @docsEditable true
final NotificationCenter webkitNotifications;
- /** @domName WorkerContext.addEventListener */
+ /// @domName WorkerContext.addEventListener; @docsEditable true
void $dom_addEventListener(String type, EventListener listener, [bool useCapture]) native "addEventListener";
- /** @domName WorkerContext.clearInterval */
+ /// @domName WorkerContext.clearInterval; @docsEditable true
void clearInterval(int handle) native;
- /** @domName WorkerContext.clearTimeout */
+ /// @domName WorkerContext.clearTimeout; @docsEditable true
void clearTimeout(int handle) native;
- /** @domName WorkerContext.close */
+ /// @domName WorkerContext.close; @docsEditable true
void close() native;
- /** @domName WorkerContext.dispatchEvent */
+ /// @domName WorkerContext.dispatchEvent; @docsEditable true
bool $dom_dispatchEvent(Event evt) native "dispatchEvent";
- /** @domName WorkerContext.importScripts */
+ /// @domName WorkerContext.importScripts; @docsEditable true
void importScripts() native;
- /** @domName WorkerContext.openDatabase */
+ /// @domName WorkerContext.openDatabase; @docsEditable true
Database openDatabase(String name, String version, String displayName, int estimatedSize, [DatabaseCallback creationCallback]) native;
- /** @domName WorkerContext.openDatabaseSync */
+ /// @domName WorkerContext.openDatabaseSync; @docsEditable true
DatabaseSync openDatabaseSync(String name, String version, String displayName, int estimatedSize, [DatabaseCallback creationCallback]) native;
- /** @domName WorkerContext.removeEventListener */
+ /// @domName WorkerContext.removeEventListener; @docsEditable true
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
- /** @domName WorkerContext.setInterval */
+ /// @domName WorkerContext.setInterval; @docsEditable true
int setInterval(TimeoutHandler handler, int timeout) native;
- /** @domName WorkerContext.setTimeout */
+ /// @domName WorkerContext.setTimeout; @docsEditable true
int setTimeout(TimeoutHandler handler, int timeout) native;
- /** @domName WorkerContext.webkitRequestFileSystem */
+ /// @domName WorkerContext.webkitRequestFileSystem; @docsEditable true
void webkitRequestFileSystem(int type, int size, [FileSystemCallback successCallback, ErrorCallback errorCallback]) native;
- /** @domName WorkerContext.webkitRequestFileSystemSync */
+ /// @domName WorkerContext.webkitRequestFileSystemSync; @docsEditable true
DOMFileSystemSync webkitRequestFileSystemSync(int type, int size) native;
- /** @domName WorkerContext.webkitResolveLocalFileSystemSyncURL */
+ /// @domName WorkerContext.webkitResolveLocalFileSystemSyncURL; @docsEditable true
EntrySync webkitResolveLocalFileSystemSyncURL(String url) native;
- /** @domName WorkerContext.webkitResolveLocalFileSystemURL */
+ /// @domName WorkerContext.webkitResolveLocalFileSystemURL; @docsEditable true
void webkitResolveLocalFileSystemURL(String url, EntryCallback successCallback, [ErrorCallback errorCallback]) native;
}
@@ -19894,34 +20130,34 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WorkerLocation
+/// @domName WorkerLocation; @docsEditable true
class WorkerLocation native "*WorkerLocation" {
- /** @domName WorkerLocation.hash */
+ /// @domName WorkerLocation.hash; @docsEditable true
final String hash;
- /** @domName WorkerLocation.host */
+ /// @domName WorkerLocation.host; @docsEditable true
final String host;
- /** @domName WorkerLocation.hostname */
+ /// @domName WorkerLocation.hostname; @docsEditable true
final String hostname;
- /** @domName WorkerLocation.href */
+ /// @domName WorkerLocation.href; @docsEditable true
final String href;
- /** @domName WorkerLocation.pathname */
+ /// @domName WorkerLocation.pathname; @docsEditable true
final String pathname;
- /** @domName WorkerLocation.port */
+ /// @domName WorkerLocation.port; @docsEditable true
final String port;
- /** @domName WorkerLocation.protocol */
+ /// @domName WorkerLocation.protocol; @docsEditable true
final String protocol;
- /** @domName WorkerLocation.search */
+ /// @domName WorkerLocation.search; @docsEditable true
final String search;
- /** @domName WorkerLocation.toString */
+ /// @domName WorkerLocation.toString; @docsEditable true
String toString() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -19929,22 +20165,22 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WorkerNavigator
+/// @domName WorkerNavigator; @docsEditable true
class WorkerNavigator native "*WorkerNavigator" {
- /** @domName WorkerNavigator.appName */
+ /// @domName WorkerNavigator.appName; @docsEditable true
final String appName;
- /** @domName WorkerNavigator.appVersion */
+ /// @domName WorkerNavigator.appVersion; @docsEditable true
final String appVersion;
- /** @domName WorkerNavigator.onLine */
+ /// @domName WorkerNavigator.onLine; @docsEditable true
final bool onLine;
- /** @domName WorkerNavigator.platform */
+ /// @domName WorkerNavigator.platform; @docsEditable true
final String platform;
- /** @domName WorkerNavigator.userAgent */
+ /// @domName WorkerNavigator.userAgent; @docsEditable true
final String userAgent;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -19952,12 +20188,12 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName XMLSerializer
+/// @domName XMLSerializer; @docsEditable true
class XMLSerializer native "*XMLSerializer" {
factory XMLSerializer() => _XMLSerializerFactoryProvider.createXMLSerializer();
- /** @domName XMLSerializer.serializeToString */
+ /// @domName XMLSerializer.serializeToString; @docsEditable true
String serializeToString(Node node) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -19965,18 +20201,18 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName XPathEvaluator
+/// @domName XPathEvaluator; @docsEditable true
class XPathEvaluator native "*XPathEvaluator" {
factory XPathEvaluator() => _XPathEvaluatorFactoryProvider.createXPathEvaluator();
- /** @domName XPathEvaluator.createExpression */
+ /// @domName XPathEvaluator.createExpression; @docsEditable true
XPathExpression createExpression(String expression, XPathNSResolver resolver) native;
- /** @domName XPathEvaluator.createNSResolver */
+ /// @domName XPathEvaluator.createNSResolver; @docsEditable true
XPathNSResolver createNSResolver(Node nodeResolver) native;
- /** @domName XPathEvaluator.evaluate */
+ /// @domName XPathEvaluator.evaluate; @docsEditable true
XPathResult evaluate(String expression, Node contextNode, XPathNSResolver resolver, int type, XPathResult inResult) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -19984,23 +20220,23 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName XPathException
+/// @domName XPathException; @docsEditable true
class XPathException native "*XPathException" {
static const int INVALID_EXPRESSION_ERR = 51;
static const int TYPE_ERR = 52;
- /** @domName XPathException.code */
+ /// @domName XPathException.code; @docsEditable true
final int code;
- /** @domName XPathException.message */
+ /// @domName XPathException.message; @docsEditable true
final String message;
- /** @domName XPathException.name */
+ /// @domName XPathException.name; @docsEditable true
final String name;
- /** @domName XPathException.toString */
+ /// @domName XPathException.toString; @docsEditable true
String toString() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -20008,10 +20244,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName XPathExpression
+/// @domName XPathExpression; @docsEditable true
class XPathExpression native "*XPathExpression" {
- /** @domName XPathExpression.evaluate */
+ /// @domName XPathExpression.evaluate; @docsEditable true
XPathResult evaluate(Node contextNode, int type, XPathResult inResult) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -20019,10 +20255,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName XPathNSResolver
+/// @domName XPathNSResolver; @docsEditable true
class XPathNSResolver native "*XPathNSResolver" {
- /** @domName XPathNSResolver.lookupNamespaceURI */
+ /// @domName XPathNSResolver.lookupNamespaceURI; @docsEditable true
String lookupNamespaceURI(String prefix) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -20030,7 +20266,7 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName XPathResult
+/// @domName XPathResult; @docsEditable true
class XPathResult native "*XPathResult" {
static const int ANY_TYPE = 0;
@@ -20053,31 +20289,31 @@
static const int UNORDERED_NODE_SNAPSHOT_TYPE = 6;
- /** @domName XPathResult.booleanValue */
+ /// @domName XPathResult.booleanValue; @docsEditable true
final bool booleanValue;
- /** @domName XPathResult.invalidIteratorState */
+ /// @domName XPathResult.invalidIteratorState; @docsEditable true
final bool invalidIteratorState;
- /** @domName XPathResult.numberValue */
+ /// @domName XPathResult.numberValue; @docsEditable true
final num numberValue;
- /** @domName XPathResult.resultType */
+ /// @domName XPathResult.resultType; @docsEditable true
final int resultType;
- /** @domName XPathResult.singleNodeValue */
+ /// @domName XPathResult.singleNodeValue; @docsEditable true
final Node singleNodeValue;
- /** @domName XPathResult.snapshotLength */
+ /// @domName XPathResult.snapshotLength; @docsEditable true
final int snapshotLength;
- /** @domName XPathResult.stringValue */
+ /// @domName XPathResult.stringValue; @docsEditable true
final String stringValue;
- /** @domName XPathResult.iterateNext */
+ /// @domName XPathResult.iterateNext; @docsEditable true
Node iterateNext() native;
- /** @domName XPathResult.snapshotItem */
+ /// @domName XPathResult.snapshotItem; @docsEditable true
Node snapshotItem(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -20085,33 +20321,33 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName XSLTProcessor
+/// @domName XSLTProcessor; @docsEditable true
class XSLTProcessor native "*XSLTProcessor" {
factory XSLTProcessor() => _XSLTProcessorFactoryProvider.createXSLTProcessor();
- /** @domName XSLTProcessor.clearParameters */
+ /// @domName XSLTProcessor.clearParameters; @docsEditable true
void clearParameters() native;
- /** @domName XSLTProcessor.getParameter */
+ /// @domName XSLTProcessor.getParameter; @docsEditable true
String getParameter(String namespaceURI, String localName) native;
- /** @domName XSLTProcessor.importStylesheet */
+ /// @domName XSLTProcessor.importStylesheet; @docsEditable true
void importStylesheet(Node stylesheet) native;
- /** @domName XSLTProcessor.removeParameter */
+ /// @domName XSLTProcessor.removeParameter; @docsEditable true
void removeParameter(String namespaceURI, String localName) native;
- /** @domName XSLTProcessor.reset */
+ /// @domName XSLTProcessor.reset; @docsEditable true
void reset() native;
- /** @domName XSLTProcessor.setParameter */
+ /// @domName XSLTProcessor.setParameter; @docsEditable true
void setParameter(String namespaceURI, String localName, String value) native;
- /** @domName XSLTProcessor.transformToDocument */
+ /// @domName XSLTProcessor.transformToDocument; @docsEditable true
Document transformToDocument(Node source) native;
- /** @domName XSLTProcessor.transformToFragment */
+ /// @domName XSLTProcessor.transformToFragment; @docsEditable true
DocumentFragment transformToFragment(Node source, Document docVal) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -20173,10 +20409,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName CSSRuleList
+/// @domName CSSRuleList; @docsEditable true
class _CSSRuleList implements JavaScriptIndexingBehavior, List<CSSRule> native "*CSSRuleList" {
- /** @domName CSSRuleList.length */
+ /// @domName CSSRuleList.length; @docsEditable true
final int length;
CSSRule operator[](int index) => JS("CSSRule", "#[#]", this, index);
@@ -20239,6 +20475,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ CSSRule get first => this[0];
+
CSSRule get last => this[length - 1];
CSSRule removeLast() {
@@ -20262,7 +20500,7 @@
// -- end List<CSSRule> mixins.
- /** @domName CSSRuleList.item */
+ /// @domName CSSRuleList.item; @docsEditable true
CSSRule item(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -20270,10 +20508,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName CSSValueList
+/// @domName CSSValueList; @docsEditable true
class _CSSValueList extends CSSValue implements List<CSSValue>, JavaScriptIndexingBehavior native "*CSSValueList" {
- /** @domName CSSValueList.length */
+ /// @domName CSSValueList.length; @docsEditable true
final int length;
CSSValue operator[](int index) => JS("CSSValue", "#[#]", this, index);
@@ -20336,6 +20574,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ CSSValue get first => this[0];
+
CSSValue get last => this[length - 1];
CSSValue removeLast() {
@@ -20359,7 +20599,7 @@
// -- end List<CSSValue> mixins.
- /** @domName CSSValueList.item */
+ /// @domName CSSValueList.item; @docsEditable true
CSSValue item(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -20367,10 +20607,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName ClientRectList
+/// @domName ClientRectList; @docsEditable true
class _ClientRectList implements JavaScriptIndexingBehavior, List<ClientRect> native "*ClientRectList" {
- /** @domName ClientRectList.length */
+ /// @domName ClientRectList.length; @docsEditable true
final int length;
ClientRect operator[](int index) => JS("ClientRect", "#[#]", this, index);
@@ -20433,6 +20673,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ ClientRect get first => this[0];
+
ClientRect get last => this[length - 1];
ClientRect removeLast() {
@@ -20456,7 +20698,7 @@
// -- end List<ClientRect> mixins.
- /** @domName ClientRectList.item */
+ /// @domName ClientRectList.item; @docsEditable true
ClientRect item(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -20473,10 +20715,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName DOMStringList
+/// @domName DOMStringList; @docsEditable true
class _DOMStringList implements JavaScriptIndexingBehavior, List<String> native "*DOMStringList" {
- /** @domName DOMStringList.length */
+ /// @domName DOMStringList.length; @docsEditable true
final int length;
String operator[](int index) => JS("String", "#[#]", this, index);
@@ -20539,6 +20781,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ String get first => this[0];
+
String get last => this[length - 1];
String removeLast() {
@@ -20562,10 +20806,10 @@
// -- end List<String> mixins.
- /** @domName DOMStringList.contains */
+ /// @domName DOMStringList.contains; @docsEditable true
bool contains(String string) native;
- /** @domName DOMStringList.item */
+ /// @domName DOMStringList.item; @docsEditable true
String item(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -20590,315 +20834,10 @@
// BSD-style license that can be found in the LICENSE file.
-class _Elements {
-
-
- static AnchorElement createAnchorElement([String href]) {
- AnchorElement _e = document.$dom_createElement("a");
- if (href != null) _e.href = href;
- return _e;
- }
-
- static AreaElement createAreaElement() {
- AreaElement _e = document.$dom_createElement("area");
- return _e;
- }
-
- static BRElement createBRElement() {
- BRElement _e = document.$dom_createElement("br");
- return _e;
- }
-
- static BaseElement createBaseElement() {
- BaseElement _e = document.$dom_createElement("base");
- return _e;
- }
-
- static BodyElement createBodyElement() {
- BodyElement _e = document.$dom_createElement("body");
- return _e;
- }
-
- static ButtonElement createButtonElement() {
- ButtonElement _e = document.$dom_createElement("button");
- return _e;
- }
-
- static CanvasElement createCanvasElement([int width, int height]) {
- CanvasElement _e = document.$dom_createElement("canvas");
- if (width != null) _e.width = width;
- if (height != null) _e.height = height;
- return _e;
- }
-
- static ContentElement createContentElement() {
- ContentElement _e = document.$dom_createElement("content");
- return _e;
- }
-
- static DListElement createDListElement() {
- DListElement _e = document.$dom_createElement("dl");
- return _e;
- }
-
- static DataListElement createDataListElement() {
- DataListElement _e = document.$dom_createElement("datalist");
- return _e;
- }
-
- static DetailsElement createDetailsElement() {
- DetailsElement _e = document.$dom_createElement("details");
- return _e;
- }
-
- static DivElement createDivElement() {
- DivElement _e = document.$dom_createElement("div");
- return _e;
- }
-
- static EmbedElement createEmbedElement() {
- EmbedElement _e = document.$dom_createElement("embed");
- return _e;
- }
-
- static FieldSetElement createFieldSetElement() {
- FieldSetElement _e = document.$dom_createElement("fieldset");
- return _e;
- }
-
- static FormElement createFormElement() {
- FormElement _e = document.$dom_createElement("form");
- return _e;
- }
-
- static HRElement createHRElement() {
- HRElement _e = document.$dom_createElement("hr");
- return _e;
- }
-
- static HeadElement createHeadElement() {
- HeadElement _e = document.$dom_createElement("head");
- return _e;
- }
-
- static HeadingElement createHeadingElement_h1() {
- HeadingElement _e = document.$dom_createElement("h1");
- return _e;
- }
-
- static HeadingElement createHeadingElement_h2() {
- HeadingElement _e = document.$dom_createElement("h2");
- return _e;
- }
-
- static HeadingElement createHeadingElement_h3() {
- HeadingElement _e = document.$dom_createElement("h3");
- return _e;
- }
-
- static HeadingElement createHeadingElement_h4() {
- HeadingElement _e = document.$dom_createElement("h4");
- return _e;
- }
-
- static HeadingElement createHeadingElement_h5() {
- HeadingElement _e = document.$dom_createElement("h5");
- return _e;
- }
-
- static HeadingElement createHeadingElement_h6() {
- HeadingElement _e = document.$dom_createElement("h6");
- return _e;
- }
-
- static HtmlElement createHtmlElement() {
- HtmlElement _e = document.$dom_createElement("html");
- return _e;
- }
-
- static IFrameElement createIFrameElement() {
- IFrameElement _e = document.$dom_createElement("iframe");
- return _e;
- }
-
- static ImageElement createImageElement([String src, int width, int height]) {
- ImageElement _e = document.$dom_createElement("img");
- if (src != null) _e.src = src;
- if (width != null) _e.width = width;
- if (height != null) _e.height = height;
- return _e;
- }
-
- static InputElement createInputElement([String type]) {
- InputElement _e = document.$dom_createElement("input");
- if (type != null) _e.type = type;
- return _e;
- }
-
- static KeygenElement createKeygenElement() {
- KeygenElement _e = document.$dom_createElement("keygen");
- return _e;
- }
-
- static LIElement createLIElement() {
- LIElement _e = document.$dom_createElement("li");
- return _e;
- }
-
- static LabelElement createLabelElement() {
- LabelElement _e = document.$dom_createElement("label");
- return _e;
- }
-
- static LegendElement createLegendElement() {
- LegendElement _e = document.$dom_createElement("legend");
- return _e;
- }
-
- static LinkElement createLinkElement() {
- LinkElement _e = document.$dom_createElement("link");
- return _e;
- }
-
- static MapElement createMapElement() {
- MapElement _e = document.$dom_createElement("map");
- return _e;
- }
-
- static MenuElement createMenuElement() {
- MenuElement _e = document.$dom_createElement("menu");
- return _e;
- }
-
- static MeterElement createMeterElement() {
- MeterElement _e = document.$dom_createElement("meter");
- return _e;
- }
-
- static OListElement createOListElement() {
- OListElement _e = document.$dom_createElement("ol");
- return _e;
- }
-
- static ObjectElement createObjectElement() {
- ObjectElement _e = document.$dom_createElement("object");
- return _e;
- }
-
- static OptGroupElement createOptGroupElement() {
- OptGroupElement _e = document.$dom_createElement("optgroup");
- return _e;
- }
-
- static OutputElement createOutputElement() {
- OutputElement _e = document.$dom_createElement("output");
- return _e;
- }
-
- static ParagraphElement createParagraphElement() {
- ParagraphElement _e = document.$dom_createElement("p");
- return _e;
- }
-
- static ParamElement createParamElement() {
- ParamElement _e = document.$dom_createElement("param");
- return _e;
- }
-
- static PreElement createPreElement() {
- PreElement _e = document.$dom_createElement("pre");
- return _e;
- }
-
- static ProgressElement createProgressElement() {
- ProgressElement _e = document.$dom_createElement("progress");
- return _e;
- }
-
- static ScriptElement createScriptElement() {
- ScriptElement _e = document.$dom_createElement("script");
- return _e;
- }
-
- static SelectElement createSelectElement() {
- SelectElement _e = document.$dom_createElement("select");
- return _e;
- }
-
- static SourceElement createSourceElement() {
- SourceElement _e = document.$dom_createElement("source");
- return _e;
- }
-
- static SpanElement createSpanElement() {
- SpanElement _e = document.$dom_createElement("span");
- return _e;
- }
-
- static StyleElement createStyleElement() {
- StyleElement _e = document.$dom_createElement("style");
- return _e;
- }
-
- static TableCaptionElement createTableCaptionElement() {
- TableCaptionElement _e = document.$dom_createElement("caption");
- return _e;
- }
-
- static TableCellElement createTableCellElement() {
- TableCellElement _e = document.$dom_createElement("td");
- return _e;
- }
-
- static TableColElement createTableColElement() {
- TableColElement _e = document.$dom_createElement("col");
- return _e;
- }
-
- static TableElement createTableElement() {
- TableElement _e = document.$dom_createElement("table");
- return _e;
- }
-
- static TableRowElement createTableRowElement() {
- TableRowElement _e = document.$dom_createElement("tr");
- return _e;
- }
-
- static TextAreaElement createTextAreaElement() {
- TextAreaElement _e = document.$dom_createElement("textarea");
- return _e;
- }
-
- static TitleElement createTitleElement() {
- TitleElement _e = document.$dom_createElement("title");
- return _e;
- }
-
- static TrackElement createTrackElement() {
- TrackElement _e = document.$dom_createElement("track");
- return _e;
- }
-
- static UListElement createUListElement() {
- UListElement _e = document.$dom_createElement("ul");
- return _e;
- }
-
- static VideoElement createVideoElement() {
- VideoElement _e = document.$dom_createElement("video");
- return _e;
- }
-}
-// Copyright (c) 2012, 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.
-
-
-/// @domName EntryArray
+/// @domName EntryArray; @docsEditable true
class _EntryArray implements JavaScriptIndexingBehavior, List<Entry> native "*EntryArray" {
- /** @domName EntryArray.length */
+ /// @domName EntryArray.length; @docsEditable true
final int length;
Entry operator[](int index) => JS("Entry", "#[#]", this, index);
@@ -20961,6 +20900,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ Entry get first => this[0];
+
Entry get last => this[length - 1];
Entry removeLast() {
@@ -20984,7 +20925,7 @@
// -- end List<Entry> mixins.
- /** @domName EntryArray.item */
+ /// @domName EntryArray.item; @docsEditable true
Entry item(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -20992,10 +20933,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName EntryArraySync
+/// @domName EntryArraySync; @docsEditable true
class _EntryArraySync implements JavaScriptIndexingBehavior, List<EntrySync> native "*EntryArraySync" {
- /** @domName EntryArraySync.length */
+ /// @domName EntryArraySync.length; @docsEditable true
final int length;
EntrySync operator[](int index) => JS("EntrySync", "#[#]", this, index);
@@ -21058,6 +20999,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ EntrySync get first => this[0];
+
EntrySync get last => this[length - 1];
EntrySync removeLast() {
@@ -21081,7 +21024,7 @@
// -- end List<EntrySync> mixins.
- /** @domName EntryArraySync.item */
+ /// @domName EntryArraySync.item; @docsEditable true
EntrySync item(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -21098,10 +21041,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName FileList
+/// @domName FileList; @docsEditable true
class _FileList implements JavaScriptIndexingBehavior, List<File> native "*FileList" {
- /** @domName FileList.length */
+ /// @domName FileList.length; @docsEditable true
final int length;
File operator[](int index) => JS("File", "#[#]", this, index);
@@ -21164,6 +21107,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ File get first => this[0];
+
File get last => this[length - 1];
File removeLast() {
@@ -21187,7 +21132,7 @@
// -- end List<File> mixins.
- /** @domName FileList.item */
+ /// @domName FileList.item; @docsEditable true
File item(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -21224,10 +21169,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName GamepadList
+/// @domName GamepadList; @docsEditable true
class _GamepadList implements JavaScriptIndexingBehavior, List<Gamepad> native "*GamepadList" {
- /** @domName GamepadList.length */
+ /// @domName GamepadList.length; @docsEditable true
final int length;
Gamepad operator[](int index) => JS("Gamepad", "#[#]", this, index);
@@ -21290,6 +21235,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ Gamepad get first => this[0];
+
Gamepad get last => this[length - 1];
Gamepad removeLast() {
@@ -21313,7 +21260,7 @@
// -- end List<Gamepad> mixins.
- /** @domName GamepadList.item */
+ /// @domName GamepadList.item; @docsEditable true
Gamepad item(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -21326,12 +21273,12 @@
JS('HttpRequest', 'new XMLHttpRequest()');
static HttpRequest createHttpRequest_get(String url,
- onSuccess(HttpRequest request)) =>
- _HttpRequestUtils.get(url, onSuccess, false);
+ onComplete(HttpRequest request)) =>
+ _HttpRequestUtils.get(url, onComplete, false);
static HttpRequest createHttpRequest_getWithCredentials(String url,
- onSuccess(HttpRequest request)) =>
- _HttpRequestUtils.get(url, onSuccess, true);
+ onComplete(HttpRequest request)) =>
+ _HttpRequestUtils.get(url, onComplete, true);
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
@@ -21374,10 +21321,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName MediaStreamList
+/// @domName MediaStreamList; @docsEditable true
class _MediaStreamList implements JavaScriptIndexingBehavior, List<MediaStream> native "*MediaStreamList" {
- /** @domName MediaStreamList.length */
+ /// @domName MediaStreamList.length; @docsEditable true
final int length;
MediaStream operator[](int index) => JS("MediaStream", "#[#]", this, index);
@@ -21440,6 +21387,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ MediaStream get first => this[0];
+
MediaStream get last => this[length - 1];
MediaStream removeLast() {
@@ -21463,7 +21412,7 @@
// -- end List<MediaStream> mixins.
- /** @domName MediaStreamList.item */
+ /// @domName MediaStreamList.item; @docsEditable true
MediaStream item(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -21481,20 +21430,10 @@
class _MutationObserverFactoryProvider {
- static MutationObserver createMutationObserver(MutationCallback callback) {
- // This is a hack to cause MutationRecord to appear to be instantiated.
- //
- // MutationCallback has a parameter type List<MutationRecord>. From this we
- // infer a list is created in the browser, but not the element type, because
- // other native fields and methods return plain List which is too general
- // and would imply creating anything. This statement is a work-around.
- JS('MutationRecord','0');
-
- return _createMutationObserver(callback);
- }
-
- static MutationObserver _createMutationObserver(MutationCallback callback) native '''
+ @Creates('MutationObserver')
+ @Creates('MutationRecord')
+ static MutationObserver createMutationObserver(MutationCallback callback) native '''
var constructor =
window.MutationObserver || window.WebKitMutationObserver ||
window.MozMutationObserver;
@@ -21516,6 +21455,105 @@
// BSD-style license that can be found in the LICENSE file.
+/// @domName NodeList; @docsEditable true
+class _NodeList implements JavaScriptIndexingBehavior, List<Node> native "*NodeList" {
+
+ /// @domName NodeList.length; @docsEditable true
+ final int length;
+
+ Node operator[](int index) => JS("Node", "#[#]", this, index);
+
+ void operator[]=(int index, Node value) {
+ throw new UnsupportedError("Cannot assign element of immutable List.");
+ }
+ // -- start List<Node> mixins.
+ // Node is the element type.
+
+ // From Iterable<Node>:
+
+ Iterator<Node> iterator() {
+ // Note: NodeLists are not fixed size. And most probably length shouldn't
+ // be cached in both iterator _and_ forEach method. For now caching it
+ // for consistency.
+ return new FixedSizeListIterator<Node>(this);
+ }
+
+ // From Collection<Node>:
+
+ void add(Node value) {
+ throw new UnsupportedError("Cannot add to immutable List.");
+ }
+
+ void addLast(Node value) {
+ throw new UnsupportedError("Cannot add to immutable List.");
+ }
+
+ void addAll(Collection<Node> collection) {
+ throw new UnsupportedError("Cannot add to immutable List.");
+ }
+
+ bool contains(Node element) => _Collections.contains(this, element);
+
+ void forEach(void f(Node element)) => _Collections.forEach(this, f);
+
+ Collection map(f(Node element)) => _Collections.map(this, [], f);
+
+ Collection<Node> filter(bool f(Node element)) =>
+ _Collections.filter(this, <Node>[], f);
+
+ bool every(bool f(Node element)) => _Collections.every(this, f);
+
+ bool some(bool f(Node element)) => _Collections.some(this, f);
+
+ bool get isEmpty => this.length == 0;
+
+ // From List<Node>:
+
+ void sort([Comparator<Node> compare = Comparable.compare]) {
+ throw new UnsupportedError("Cannot sort immutable List.");
+ }
+
+ int indexOf(Node element, [int start = 0]) =>
+ _Lists.indexOf(this, element, start, this.length);
+
+ int lastIndexOf(Node element, [int start]) {
+ if (start == null) start = length - 1;
+ return _Lists.lastIndexOf(this, element, start);
+ }
+
+ Node get first => this[0];
+
+ Node get last => this[length - 1];
+
+ Node removeLast() {
+ throw new UnsupportedError("Cannot removeLast on immutable List.");
+ }
+
+ void setRange(int start, int rangeLength, List<Node> from, [int startFrom]) {
+ throw new UnsupportedError("Cannot setRange on immutable List.");
+ }
+
+ void removeRange(int start, int rangeLength) {
+ throw new UnsupportedError("Cannot removeRange on immutable List.");
+ }
+
+ void insertRange(int start, int rangeLength, [Node initialValue]) {
+ throw new UnsupportedError("Cannot insertRange on immutable List.");
+ }
+
+ List<Node> getRange(int start, int rangeLength) =>
+ _Lists.getRange(this, start, rangeLength, <Node>[]);
+
+ // -- end List<Node> mixins.
+
+ /// @domName NodeList.item; @docsEditable true
+ Node _item(int index) native "item";
+}
+// Copyright (c) 2012, 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.
+
+
class _NotificationFactoryProvider {
static Notification createNotification(String title, [Map options]) =>
JS('Notification', 'new Notification(#,#)', title, options);
@@ -21634,10 +21672,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SpeechInputResultList
+/// @domName SpeechInputResultList; @docsEditable true
class _SpeechInputResultList implements JavaScriptIndexingBehavior, List<SpeechInputResult> native "*SpeechInputResultList" {
- /** @domName SpeechInputResultList.length */
+ /// @domName SpeechInputResultList.length; @docsEditable true
final int length;
SpeechInputResult operator[](int index) => JS("SpeechInputResult", "#[#]", this, index);
@@ -21700,6 +21738,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ SpeechInputResult get first => this[0];
+
SpeechInputResult get last => this[length - 1];
SpeechInputResult removeLast() {
@@ -21723,7 +21763,7 @@
// -- end List<SpeechInputResult> mixins.
- /** @domName SpeechInputResultList.item */
+ /// @domName SpeechInputResultList.item; @docsEditable true
SpeechInputResult item(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -21740,10 +21780,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SpeechRecognitionResultList
+/// @domName SpeechRecognitionResultList; @docsEditable true
class _SpeechRecognitionResultList implements JavaScriptIndexingBehavior, List<SpeechRecognitionResult> native "*SpeechRecognitionResultList" {
- /** @domName SpeechRecognitionResultList.length */
+ /// @domName SpeechRecognitionResultList.length; @docsEditable true
final int length;
SpeechRecognitionResult operator[](int index) => JS("SpeechRecognitionResult", "#[#]", this, index);
@@ -21806,6 +21846,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ SpeechRecognitionResult get first => this[0];
+
SpeechRecognitionResult get last => this[length - 1];
SpeechRecognitionResult removeLast() {
@@ -21829,7 +21871,7 @@
// -- end List<SpeechRecognitionResult> mixins.
- /** @domName SpeechRecognitionResultList.item */
+ /// @domName SpeechRecognitionResultList.item; @docsEditable true
SpeechRecognitionResult item(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -21837,10 +21879,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName StyleSheetList
+/// @domName StyleSheetList; @docsEditable true
class _StyleSheetList implements JavaScriptIndexingBehavior, List<StyleSheet> native "*StyleSheetList" {
- /** @domName StyleSheetList.length */
+ /// @domName StyleSheetList.length; @docsEditable true
final int length;
StyleSheet operator[](int index) => JS("StyleSheet", "#[#]", this, index);
@@ -21903,6 +21945,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ StyleSheet get first => this[0];
+
StyleSheet get last => this[length - 1];
StyleSheet removeLast() {
@@ -21926,7 +21970,7 @@
// -- end List<StyleSheet> mixins.
- /** @domName StyleSheetList.item */
+ /// @domName StyleSheetList.item; @docsEditable true
StyleSheet item(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -21936,21 +21980,21 @@
class _TextTrackCueFactoryProvider {
static TextTrackCue createTextTrackCue(
- String id, num startTime, num endTime, String text,
+ num startTime, num endTime, String text,
[String settings, bool pauseOnExit]) {
if (settings == null) {
return JS('TextTrackCue',
- 'new TextTrackCue(#,#,#,#)',
- id, startTime, endTime, text);
+ 'new TextTrackCue(#,#,#)',
+ startTime, endTime, text);
}
if (pauseOnExit == null) {
return JS('TextTrackCue',
- 'new TextTrackCue(#,#,#,#,#)',
- id, startTime, endTime, text, settings);
+ 'new TextTrackCue(#,#,#,#)',
+ startTime, endTime, text, settings);
}
return JS('TextTrackCue',
- 'new TextTrackCue(#,#,#,#,#,#)',
- id, startTime, endTime, text, settings, pauseOnExit);
+ 'new TextTrackCue(#,#,#,#,#)',
+ startTime, endTime, text, settings, pauseOnExit);
}
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -21958,10 +22002,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName WebKitAnimationList
+/// @domName WebKitAnimationList; @docsEditable true
class _WebKitAnimationList implements JavaScriptIndexingBehavior, List<Animation> native "*WebKitAnimationList" {
- /** @domName WebKitAnimationList.length */
+ /// @domName WebKitAnimationList.length; @docsEditable true
final int length;
Animation operator[](int index) => JS("Animation", "#[#]", this, index);
@@ -22024,6 +22068,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ Animation get first => this[0];
+
Animation get last => this[length - 1];
Animation removeLast() {
@@ -22047,7 +22093,7 @@
// -- end List<Animation> mixins.
- /** @domName WebKitAnimationList.item */
+ /// @domName WebKitAnimationList.item; @docsEditable true
Animation item(int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -22091,19 +22137,88 @@
// BSD-style license that can be found in the LICENSE file.
+/**
+ * An object representing the top-level context object for web scripting.
+ *
+ * In a web browser, a [Window] object represents the actual browser window.
+ * In a multi-tabbed browser, each tab has its own [Window] object. A [Window]
+ * is the container that displays a [Document]'s content. All web scripting
+ * happens within the context of a [Window] object.
+ *
+ * **Note:** This class represents any window, whereas [LocalWindow] is
+ * used to access the properties and content of the current window.
+ *
+ * See also:
+ *
+ * * [DOM Window](https://developer.mozilla.org/en-US/docs/DOM/window) from MDN.
+ * * [Window](http://www.w3.org/TR/Window/) from the W3C.
+ */
abstract class Window {
// Fields.
+
+ /**
+ * The current location of this window.
+ *
+ * Location currentLocation = window.location;
+ * print(currentLocation.href); // 'http://www.example.com:80/'
+ */
Location get location;
History get history;
+ /**
+ * Indicates whether this window is closed.
+ *
+ * print(window.closed); // 'false'
+ * window.close();
+ * print(window.closed); // 'true'
+ */
bool get closed;
+
+ /**
+ * A reference to the window that opened this one.
+ *
+ * Window thisWindow = window;
+ * Window otherWindow = thisWindow.open('http://www.example.com/', 'foo');
+ * print(otherWindow.opener == thisWindow); // 'true'
+ */
Window get opener;
+
+ /**
+ * A reference to the parent of this window.
+ *
+ * If this [Window] has no parent, [parent] will return a reference to
+ * the [Window] itself.
+ *
+ * IFrameElement myIFrame = new IFrameElement();
+ * window.document.body.elements.add(myIFrame);
+ * print(myIframe.contentWindow.parent == window) // 'true'
+ *
+ * print(window.parent == window) // 'true'
+ */
Window get parent;
+
+ /**
+ * A reference to the topmost window in the window hierarchy.
+ *
+ * If this [Window] is the topmost [Window], [top] will return a reference to
+ * the [Window] itself.
+ *
+ * // Add an IFrame to the current window.
+ * IFrameElement myIFrame = new IFrameElement();
+ * window.document.body.elements.add(myIFrame);
+ *
+ * // Add an IFrame inside of the other IFrame.
+ * IFrameElement innerIFrame = new IFrameElement();
+ * myIFrame.elements.add(innerIFrame);
+ *
+ * print(myIframe.contentWindow.top == window) // 'true'
+ * print(innerIFrame.contentWindow.top == window) // 'true'
+ *
+ * print(window.top == window) // 'true'
+ */
Window get top;
// Methods.
- void focus();
- void blur();
void close();
void postMessage(var message, String targetOrigin, [List messagePorts = null]);
}
@@ -22384,6 +22499,8 @@
return _filtered.lastIndexOf(element, start);
}
+ Element get first => _filtered.first;
+
Element get last => _filtered.last;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -24064,7 +24181,7 @@
Map _convertNativeToDart_Dictionary(object) {
if (object == null) return null;
var dict = {};
- for (final key in JS('List', 'Object.getOwnPropertyNames(#)', object)) {
+ for (final key in JS('=List', 'Object.getOwnPropertyNames(#)', object)) {
dict[key] = JS('var', '#[#]', object, key);
}
return dict;
@@ -24241,7 +24358,7 @@
var copy = readSlot(slot);
if (copy != null) {
if (true == copy) { // Cycle, so commit to making a copy.
- copy = JS('List', 'new Array(#)', length);
+ copy = JS('=List', 'new Array(#)', length);
writeSlot(slot, copy);
}
return copy;
@@ -24261,7 +24378,7 @@
if (!identical(elementCopy, element)) {
copy = readSlot(slot); // Cyclic reference may have created it.
if (true == copy) {
- copy = JS('List', 'new Array(#)', length);
+ copy = JS('=List', 'new Array(#)', length);
writeSlot(slot, copy);
}
for (int j = 0; j < i; j++) {
@@ -24278,7 +24395,7 @@
}
} else {
// Not a JavaScript Array. We are forced to make a copy.
- copy = JS('List', 'new Array(#)', length);
+ copy = JS('=List', 'new Array(#)', length);
writeSlot(slot, copy);
}
@@ -24358,7 +24475,7 @@
copy = {};
writeSlot(slot, copy);
- for (final key in JS('List', 'Object.keys(#)', e)) {
+ for (final key in JS('=List', 'Object.keys(#)', e)) {
copy[key] = walk(JS('var', '#[#]', e, key));
}
return copy;
@@ -24372,7 +24489,7 @@
int length = e.length;
// Since a JavaScript Array is an instance of Dart List, we can modify it
// in-place unless we must copy.
- copy = mustCopy ? JS('List', 'new Array(#)', length) : e;
+ copy = mustCopy ? JS('=List', 'new Array(#)', length) : e;
writeSlot(slot, copy);
for (int i = 0; i < length; i++) {
@@ -24398,6 +24515,23 @@
JS('bool', 'Object.getPrototypeOf(#) === Object.prototype', value);
bool _isImmutableJavaScriptArray(value) =>
JS('bool', r'!!(#.immutable$list)', value);
+
+
+
+const String _serializedScriptValue =
+ 'num|String|bool|'
+ '=List|=Object|'
+ 'Blob|File|ArrayBuffer|ArrayBufferView'
+ // TODO(sra): Add Date, RegExp.
+ ;
+const _annotation_Creates_SerializedScriptValue =
+ const Creates(_serializedScriptValue);
+const _annotation_Returns_SerializedScriptValue =
+ const Returns(_serializedScriptValue);
+
+const String _idbKey = '=List|=Object|num|String'; // TODO(sra): Add Date.
+const _annotation_Creates_IDBKey = const Creates(_idbKey);
+const _annotation_Returns_IDBKey = const Returns(_idbKey);
// Copyright (c) 2012, 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.
@@ -24427,10 +24561,6 @@
Window get top => _createSafe(JS('Window', '#.top', _window));
// Methods.
- void focus() => JS('void', '#.focus()', _window);
-
- void blur() => JS('void', '#.blur()', _window);
-
void close() => JS('void', '#.close()', _window);
void postMessage(var message, String targetOrigin, [List messagePorts = null]) {
diff --git a/sdk/lib/html/dartium/html_dartium.dart b/sdk/lib/html/dartium/html_dartium.dart
index c025901..e430f59 100644
--- a/sdk/lib/html/dartium/html_dartium.dart
+++ b/sdk/lib/html/dartium/html_dartium.dart
@@ -70,9 +70,7 @@
class AbstractWorker extends EventTarget {
AbstractWorker.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
AbstractWorkerEvents get on =>
new AbstractWorkerEvents(this);
@@ -166,10 +164,9 @@
class AnchorElement extends _Element_Merged {
factory AnchorElement({String href}) {
- if (!?href) {
- return _Elements.createAnchorElement();
- }
- return _Elements.createAnchorElement(href);
+ var e = document.$dom_createElement("a");
+ if (href != null) e.href = href;
+ return e;
}
AnchorElement.internal(): super.internal();
@@ -536,7 +533,7 @@
/// @domName HTMLAreaElement
class AreaElement extends _Element_Merged {
- factory AreaElement() => _Elements.createAreaElement();
+ factory AreaElement() => document.$dom_createElement("area");
AreaElement.internal(): super.internal();
@@ -862,9 +859,7 @@
factory AudioContext() => _AudioContextFactoryProvider.createAudioContext();
AudioContext.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
AudioContextEvents get on =>
new AudioContextEvents(this);
@@ -1277,7 +1272,7 @@
/// @domName HTMLBRElement
class BRElement extends _Element_Merged {
- factory BRElement() => _Elements.createBRElement();
+ factory BRElement() => document.$dom_createElement("br");
BRElement.internal(): super.internal();
@@ -1315,7 +1310,7 @@
/// @domName HTMLBaseElement
class BaseElement extends _Element_Merged {
- factory BaseElement() => _Elements.createBaseElement();
+ factory BaseElement() => document.$dom_createElement("base");
BaseElement.internal(): super.internal();
@@ -1382,9 +1377,7 @@
class BatteryManager extends EventTarget {
BatteryManager.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
BatteryManagerEvents get on =>
new BatteryManagerEvents(this);
@@ -1566,12 +1559,10 @@
/// @domName HTMLBodyElement
class BodyElement extends _Element_Merged {
- factory BodyElement() => _Elements.createBodyElement();
+ factory BodyElement() => document.$dom_createElement("body");
BodyElement.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
BodyElementEvents get on =>
new BodyElementEvents(this);
@@ -1656,7 +1647,7 @@
/// @domName HTMLButtonElement
class ButtonElement extends _Element_Merged {
- factory ButtonElement() => _Elements.createButtonElement();
+ factory ButtonElement() => document.$dom_createElement("button");
ButtonElement.internal(): super.internal();
@@ -2424,12 +2415,39 @@
// TODO(jacobr): generate this list of properties using the existing script.
- /** Gets the value of "animation" */
+ /** Gets the value of "align-content" */
+ String get alignContent =>
+ getPropertyValue('${_browserPrefix}align-content');
+
+ /** Sets the value of "align-content" */
+ void set alignContent(String value) {
+ setProperty('${_browserPrefix}align-content', value, '');
+ }
+
+ /** Gets the value of "align-items" */
+ String get alignItems =>
+ getPropertyValue('${_browserPrefix}align-items');
+
+ /** Sets the value of "align-items" */
+ void set alignItems(String value) {
+ setProperty('${_browserPrefix}align-items', value, '');
+ }
+
+ /** Gets the value of "align-self" */
+ String get alignSelf =>
+ getPropertyValue('${_browserPrefix}align-self');
+
+ /** Sets the value of "align-self" */
+ void set alignSelf(String value) {
+ setProperty('${_browserPrefix}align-self', value, '');
+ }
+
+ /** Gets the value of "animation" */
String get animation =>
getPropertyValue('${_browserPrefix}animation');
/** Sets the value of "animation" */
- void set animation(var value) {
+ void set animation(String value) {
setProperty('${_browserPrefix}animation', value, '');
}
@@ -2438,7 +2456,7 @@
getPropertyValue('${_browserPrefix}animation-delay');
/** Sets the value of "animation-delay" */
- void set animationDelay(var value) {
+ void set animationDelay(String value) {
setProperty('${_browserPrefix}animation-delay', value, '');
}
@@ -2447,7 +2465,7 @@
getPropertyValue('${_browserPrefix}animation-direction');
/** Sets the value of "animation-direction" */
- void set animationDirection(var value) {
+ void set animationDirection(String value) {
setProperty('${_browserPrefix}animation-direction', value, '');
}
@@ -2456,7 +2474,7 @@
getPropertyValue('${_browserPrefix}animation-duration');
/** Sets the value of "animation-duration" */
- void set animationDuration(var value) {
+ void set animationDuration(String value) {
setProperty('${_browserPrefix}animation-duration', value, '');
}
@@ -2465,7 +2483,7 @@
getPropertyValue('${_browserPrefix}animation-fill-mode');
/** Sets the value of "animation-fill-mode" */
- void set animationFillMode(var value) {
+ void set animationFillMode(String value) {
setProperty('${_browserPrefix}animation-fill-mode', value, '');
}
@@ -2474,7 +2492,7 @@
getPropertyValue('${_browserPrefix}animation-iteration-count');
/** Sets the value of "animation-iteration-count" */
- void set animationIterationCount(var value) {
+ void set animationIterationCount(String value) {
setProperty('${_browserPrefix}animation-iteration-count', value, '');
}
@@ -2483,7 +2501,7 @@
getPropertyValue('${_browserPrefix}animation-name');
/** Sets the value of "animation-name" */
- void set animationName(var value) {
+ void set animationName(String value) {
setProperty('${_browserPrefix}animation-name', value, '');
}
@@ -2492,7 +2510,7 @@
getPropertyValue('${_browserPrefix}animation-play-state');
/** Sets the value of "animation-play-state" */
- void set animationPlayState(var value) {
+ void set animationPlayState(String value) {
setProperty('${_browserPrefix}animation-play-state', value, '');
}
@@ -2501,25 +2519,43 @@
getPropertyValue('${_browserPrefix}animation-timing-function');
/** Sets the value of "animation-timing-function" */
- void set animationTimingFunction(var value) {
+ void set animationTimingFunction(String value) {
setProperty('${_browserPrefix}animation-timing-function', value, '');
}
+ /** Gets the value of "app-region" */
+ String get appRegion =>
+ getPropertyValue('${_browserPrefix}app-region');
+
+ /** Sets the value of "app-region" */
+ void set appRegion(String value) {
+ setProperty('${_browserPrefix}app-region', value, '');
+ }
+
/** Gets the value of "appearance" */
String get appearance =>
getPropertyValue('${_browserPrefix}appearance');
/** Sets the value of "appearance" */
- void set appearance(var value) {
+ void set appearance(String value) {
setProperty('${_browserPrefix}appearance', value, '');
}
+ /** Gets the value of "aspect-ratio" */
+ String get aspectRatio =>
+ getPropertyValue('${_browserPrefix}aspect-ratio');
+
+ /** Sets the value of "aspect-ratio" */
+ void set aspectRatio(String value) {
+ setProperty('${_browserPrefix}aspect-ratio', value, '');
+ }
+
/** Gets the value of "backface-visibility" */
String get backfaceVisibility =>
getPropertyValue('${_browserPrefix}backface-visibility');
/** Sets the value of "backface-visibility" */
- void set backfaceVisibility(var value) {
+ void set backfaceVisibility(String value) {
setProperty('${_browserPrefix}backface-visibility', value, '');
}
@@ -2528,7 +2564,7 @@
getPropertyValue('background');
/** Sets the value of "background" */
- void set background(var value) {
+ void set background(String value) {
setProperty('background', value, '');
}
@@ -2537,7 +2573,7 @@
getPropertyValue('background-attachment');
/** Sets the value of "background-attachment" */
- void set backgroundAttachment(var value) {
+ void set backgroundAttachment(String value) {
setProperty('background-attachment', value, '');
}
@@ -2546,7 +2582,7 @@
getPropertyValue('background-clip');
/** Sets the value of "background-clip" */
- void set backgroundClip(var value) {
+ void set backgroundClip(String value) {
setProperty('background-clip', value, '');
}
@@ -2555,7 +2591,7 @@
getPropertyValue('background-color');
/** Sets the value of "background-color" */
- void set backgroundColor(var value) {
+ void set backgroundColor(String value) {
setProperty('background-color', value, '');
}
@@ -2564,7 +2600,7 @@
getPropertyValue('${_browserPrefix}background-composite');
/** Sets the value of "background-composite" */
- void set backgroundComposite(var value) {
+ void set backgroundComposite(String value) {
setProperty('${_browserPrefix}background-composite', value, '');
}
@@ -2573,7 +2609,7 @@
getPropertyValue('background-image');
/** Sets the value of "background-image" */
- void set backgroundImage(var value) {
+ void set backgroundImage(String value) {
setProperty('background-image', value, '');
}
@@ -2582,7 +2618,7 @@
getPropertyValue('background-origin');
/** Sets the value of "background-origin" */
- void set backgroundOrigin(var value) {
+ void set backgroundOrigin(String value) {
setProperty('background-origin', value, '');
}
@@ -2591,7 +2627,7 @@
getPropertyValue('background-position');
/** Sets the value of "background-position" */
- void set backgroundPosition(var value) {
+ void set backgroundPosition(String value) {
setProperty('background-position', value, '');
}
@@ -2600,7 +2636,7 @@
getPropertyValue('background-position-x');
/** Sets the value of "background-position-x" */
- void set backgroundPositionX(var value) {
+ void set backgroundPositionX(String value) {
setProperty('background-position-x', value, '');
}
@@ -2609,7 +2645,7 @@
getPropertyValue('background-position-y');
/** Sets the value of "background-position-y" */
- void set backgroundPositionY(var value) {
+ void set backgroundPositionY(String value) {
setProperty('background-position-y', value, '');
}
@@ -2618,7 +2654,7 @@
getPropertyValue('background-repeat');
/** Sets the value of "background-repeat" */
- void set backgroundRepeat(var value) {
+ void set backgroundRepeat(String value) {
setProperty('background-repeat', value, '');
}
@@ -2627,7 +2663,7 @@
getPropertyValue('background-repeat-x');
/** Sets the value of "background-repeat-x" */
- void set backgroundRepeatX(var value) {
+ void set backgroundRepeatX(String value) {
setProperty('background-repeat-x', value, '');
}
@@ -2636,7 +2672,7 @@
getPropertyValue('background-repeat-y');
/** Sets the value of "background-repeat-y" */
- void set backgroundRepeatY(var value) {
+ void set backgroundRepeatY(String value) {
setProperty('background-repeat-y', value, '');
}
@@ -2645,16 +2681,25 @@
getPropertyValue('background-size');
/** Sets the value of "background-size" */
- void set backgroundSize(var value) {
+ void set backgroundSize(String value) {
setProperty('background-size', value, '');
}
+ /** Gets the value of "blend-mode" */
+ String get blendMode =>
+ getPropertyValue('${_browserPrefix}blend-mode');
+
+ /** Sets the value of "blend-mode" */
+ void set blendMode(String value) {
+ setProperty('${_browserPrefix}blend-mode', value, '');
+ }
+
/** Gets the value of "border" */
String get border =>
getPropertyValue('border');
/** Sets the value of "border" */
- void set border(var value) {
+ void set border(String value) {
setProperty('border', value, '');
}
@@ -2663,7 +2708,7 @@
getPropertyValue('${_browserPrefix}border-after');
/** Sets the value of "border-after" */
- void set borderAfter(var value) {
+ void set borderAfter(String value) {
setProperty('${_browserPrefix}border-after', value, '');
}
@@ -2672,7 +2717,7 @@
getPropertyValue('${_browserPrefix}border-after-color');
/** Sets the value of "border-after-color" */
- void set borderAfterColor(var value) {
+ void set borderAfterColor(String value) {
setProperty('${_browserPrefix}border-after-color', value, '');
}
@@ -2681,7 +2726,7 @@
getPropertyValue('${_browserPrefix}border-after-style');
/** Sets the value of "border-after-style" */
- void set borderAfterStyle(var value) {
+ void set borderAfterStyle(String value) {
setProperty('${_browserPrefix}border-after-style', value, '');
}
@@ -2690,7 +2735,7 @@
getPropertyValue('${_browserPrefix}border-after-width');
/** Sets the value of "border-after-width" */
- void set borderAfterWidth(var value) {
+ void set borderAfterWidth(String value) {
setProperty('${_browserPrefix}border-after-width', value, '');
}
@@ -2699,7 +2744,7 @@
getPropertyValue('${_browserPrefix}border-before');
/** Sets the value of "border-before" */
- void set borderBefore(var value) {
+ void set borderBefore(String value) {
setProperty('${_browserPrefix}border-before', value, '');
}
@@ -2708,7 +2753,7 @@
getPropertyValue('${_browserPrefix}border-before-color');
/** Sets the value of "border-before-color" */
- void set borderBeforeColor(var value) {
+ void set borderBeforeColor(String value) {
setProperty('${_browserPrefix}border-before-color', value, '');
}
@@ -2717,7 +2762,7 @@
getPropertyValue('${_browserPrefix}border-before-style');
/** Sets the value of "border-before-style" */
- void set borderBeforeStyle(var value) {
+ void set borderBeforeStyle(String value) {
setProperty('${_browserPrefix}border-before-style', value, '');
}
@@ -2726,7 +2771,7 @@
getPropertyValue('${_browserPrefix}border-before-width');
/** Sets the value of "border-before-width" */
- void set borderBeforeWidth(var value) {
+ void set borderBeforeWidth(String value) {
setProperty('${_browserPrefix}border-before-width', value, '');
}
@@ -2735,7 +2780,7 @@
getPropertyValue('border-bottom');
/** Sets the value of "border-bottom" */
- void set borderBottom(var value) {
+ void set borderBottom(String value) {
setProperty('border-bottom', value, '');
}
@@ -2744,7 +2789,7 @@
getPropertyValue('border-bottom-color');
/** Sets the value of "border-bottom-color" */
- void set borderBottomColor(var value) {
+ void set borderBottomColor(String value) {
setProperty('border-bottom-color', value, '');
}
@@ -2753,7 +2798,7 @@
getPropertyValue('border-bottom-left-radius');
/** Sets the value of "border-bottom-left-radius" */
- void set borderBottomLeftRadius(var value) {
+ void set borderBottomLeftRadius(String value) {
setProperty('border-bottom-left-radius', value, '');
}
@@ -2762,7 +2807,7 @@
getPropertyValue('border-bottom-right-radius');
/** Sets the value of "border-bottom-right-radius" */
- void set borderBottomRightRadius(var value) {
+ void set borderBottomRightRadius(String value) {
setProperty('border-bottom-right-radius', value, '');
}
@@ -2771,7 +2816,7 @@
getPropertyValue('border-bottom-style');
/** Sets the value of "border-bottom-style" */
- void set borderBottomStyle(var value) {
+ void set borderBottomStyle(String value) {
setProperty('border-bottom-style', value, '');
}
@@ -2780,7 +2825,7 @@
getPropertyValue('border-bottom-width');
/** Sets the value of "border-bottom-width" */
- void set borderBottomWidth(var value) {
+ void set borderBottomWidth(String value) {
setProperty('border-bottom-width', value, '');
}
@@ -2789,7 +2834,7 @@
getPropertyValue('border-collapse');
/** Sets the value of "border-collapse" */
- void set borderCollapse(var value) {
+ void set borderCollapse(String value) {
setProperty('border-collapse', value, '');
}
@@ -2798,7 +2843,7 @@
getPropertyValue('border-color');
/** Sets the value of "border-color" */
- void set borderColor(var value) {
+ void set borderColor(String value) {
setProperty('border-color', value, '');
}
@@ -2807,7 +2852,7 @@
getPropertyValue('${_browserPrefix}border-end');
/** Sets the value of "border-end" */
- void set borderEnd(var value) {
+ void set borderEnd(String value) {
setProperty('${_browserPrefix}border-end', value, '');
}
@@ -2816,7 +2861,7 @@
getPropertyValue('${_browserPrefix}border-end-color');
/** Sets the value of "border-end-color" */
- void set borderEndColor(var value) {
+ void set borderEndColor(String value) {
setProperty('${_browserPrefix}border-end-color', value, '');
}
@@ -2825,7 +2870,7 @@
getPropertyValue('${_browserPrefix}border-end-style');
/** Sets the value of "border-end-style" */
- void set borderEndStyle(var value) {
+ void set borderEndStyle(String value) {
setProperty('${_browserPrefix}border-end-style', value, '');
}
@@ -2834,7 +2879,7 @@
getPropertyValue('${_browserPrefix}border-end-width');
/** Sets the value of "border-end-width" */
- void set borderEndWidth(var value) {
+ void set borderEndWidth(String value) {
setProperty('${_browserPrefix}border-end-width', value, '');
}
@@ -2843,7 +2888,7 @@
getPropertyValue('${_browserPrefix}border-fit');
/** Sets the value of "border-fit" */
- void set borderFit(var value) {
+ void set borderFit(String value) {
setProperty('${_browserPrefix}border-fit', value, '');
}
@@ -2852,7 +2897,7 @@
getPropertyValue('${_browserPrefix}border-horizontal-spacing');
/** Sets the value of "border-horizontal-spacing" */
- void set borderHorizontalSpacing(var value) {
+ void set borderHorizontalSpacing(String value) {
setProperty('${_browserPrefix}border-horizontal-spacing', value, '');
}
@@ -2861,7 +2906,7 @@
getPropertyValue('border-image');
/** Sets the value of "border-image" */
- void set borderImage(var value) {
+ void set borderImage(String value) {
setProperty('border-image', value, '');
}
@@ -2870,7 +2915,7 @@
getPropertyValue('border-image-outset');
/** Sets the value of "border-image-outset" */
- void set borderImageOutset(var value) {
+ void set borderImageOutset(String value) {
setProperty('border-image-outset', value, '');
}
@@ -2879,7 +2924,7 @@
getPropertyValue('border-image-repeat');
/** Sets the value of "border-image-repeat" */
- void set borderImageRepeat(var value) {
+ void set borderImageRepeat(String value) {
setProperty('border-image-repeat', value, '');
}
@@ -2888,7 +2933,7 @@
getPropertyValue('border-image-slice');
/** Sets the value of "border-image-slice" */
- void set borderImageSlice(var value) {
+ void set borderImageSlice(String value) {
setProperty('border-image-slice', value, '');
}
@@ -2897,7 +2942,7 @@
getPropertyValue('border-image-source');
/** Sets the value of "border-image-source" */
- void set borderImageSource(var value) {
+ void set borderImageSource(String value) {
setProperty('border-image-source', value, '');
}
@@ -2906,7 +2951,7 @@
getPropertyValue('border-image-width');
/** Sets the value of "border-image-width" */
- void set borderImageWidth(var value) {
+ void set borderImageWidth(String value) {
setProperty('border-image-width', value, '');
}
@@ -2915,7 +2960,7 @@
getPropertyValue('border-left');
/** Sets the value of "border-left" */
- void set borderLeft(var value) {
+ void set borderLeft(String value) {
setProperty('border-left', value, '');
}
@@ -2924,7 +2969,7 @@
getPropertyValue('border-left-color');
/** Sets the value of "border-left-color" */
- void set borderLeftColor(var value) {
+ void set borderLeftColor(String value) {
setProperty('border-left-color', value, '');
}
@@ -2933,7 +2978,7 @@
getPropertyValue('border-left-style');
/** Sets the value of "border-left-style" */
- void set borderLeftStyle(var value) {
+ void set borderLeftStyle(String value) {
setProperty('border-left-style', value, '');
}
@@ -2942,7 +2987,7 @@
getPropertyValue('border-left-width');
/** Sets the value of "border-left-width" */
- void set borderLeftWidth(var value) {
+ void set borderLeftWidth(String value) {
setProperty('border-left-width', value, '');
}
@@ -2951,7 +2996,7 @@
getPropertyValue('border-radius');
/** Sets the value of "border-radius" */
- void set borderRadius(var value) {
+ void set borderRadius(String value) {
setProperty('border-radius', value, '');
}
@@ -2960,7 +3005,7 @@
getPropertyValue('border-right');
/** Sets the value of "border-right" */
- void set borderRight(var value) {
+ void set borderRight(String value) {
setProperty('border-right', value, '');
}
@@ -2969,7 +3014,7 @@
getPropertyValue('border-right-color');
/** Sets the value of "border-right-color" */
- void set borderRightColor(var value) {
+ void set borderRightColor(String value) {
setProperty('border-right-color', value, '');
}
@@ -2978,7 +3023,7 @@
getPropertyValue('border-right-style');
/** Sets the value of "border-right-style" */
- void set borderRightStyle(var value) {
+ void set borderRightStyle(String value) {
setProperty('border-right-style', value, '');
}
@@ -2987,7 +3032,7 @@
getPropertyValue('border-right-width');
/** Sets the value of "border-right-width" */
- void set borderRightWidth(var value) {
+ void set borderRightWidth(String value) {
setProperty('border-right-width', value, '');
}
@@ -2996,7 +3041,7 @@
getPropertyValue('border-spacing');
/** Sets the value of "border-spacing" */
- void set borderSpacing(var value) {
+ void set borderSpacing(String value) {
setProperty('border-spacing', value, '');
}
@@ -3005,7 +3050,7 @@
getPropertyValue('${_browserPrefix}border-start');
/** Sets the value of "border-start" */
- void set borderStart(var value) {
+ void set borderStart(String value) {
setProperty('${_browserPrefix}border-start', value, '');
}
@@ -3014,7 +3059,7 @@
getPropertyValue('${_browserPrefix}border-start-color');
/** Sets the value of "border-start-color" */
- void set borderStartColor(var value) {
+ void set borderStartColor(String value) {
setProperty('${_browserPrefix}border-start-color', value, '');
}
@@ -3023,7 +3068,7 @@
getPropertyValue('${_browserPrefix}border-start-style');
/** Sets the value of "border-start-style" */
- void set borderStartStyle(var value) {
+ void set borderStartStyle(String value) {
setProperty('${_browserPrefix}border-start-style', value, '');
}
@@ -3032,7 +3077,7 @@
getPropertyValue('${_browserPrefix}border-start-width');
/** Sets the value of "border-start-width" */
- void set borderStartWidth(var value) {
+ void set borderStartWidth(String value) {
setProperty('${_browserPrefix}border-start-width', value, '');
}
@@ -3041,7 +3086,7 @@
getPropertyValue('border-style');
/** Sets the value of "border-style" */
- void set borderStyle(var value) {
+ void set borderStyle(String value) {
setProperty('border-style', value, '');
}
@@ -3050,7 +3095,7 @@
getPropertyValue('border-top');
/** Sets the value of "border-top" */
- void set borderTop(var value) {
+ void set borderTop(String value) {
setProperty('border-top', value, '');
}
@@ -3059,7 +3104,7 @@
getPropertyValue('border-top-color');
/** Sets the value of "border-top-color" */
- void set borderTopColor(var value) {
+ void set borderTopColor(String value) {
setProperty('border-top-color', value, '');
}
@@ -3068,7 +3113,7 @@
getPropertyValue('border-top-left-radius');
/** Sets the value of "border-top-left-radius" */
- void set borderTopLeftRadius(var value) {
+ void set borderTopLeftRadius(String value) {
setProperty('border-top-left-radius', value, '');
}
@@ -3077,7 +3122,7 @@
getPropertyValue('border-top-right-radius');
/** Sets the value of "border-top-right-radius" */
- void set borderTopRightRadius(var value) {
+ void set borderTopRightRadius(String value) {
setProperty('border-top-right-radius', value, '');
}
@@ -3086,7 +3131,7 @@
getPropertyValue('border-top-style');
/** Sets the value of "border-top-style" */
- void set borderTopStyle(var value) {
+ void set borderTopStyle(String value) {
setProperty('border-top-style', value, '');
}
@@ -3095,7 +3140,7 @@
getPropertyValue('border-top-width');
/** Sets the value of "border-top-width" */
- void set borderTopWidth(var value) {
+ void set borderTopWidth(String value) {
setProperty('border-top-width', value, '');
}
@@ -3104,7 +3149,7 @@
getPropertyValue('${_browserPrefix}border-vertical-spacing');
/** Sets the value of "border-vertical-spacing" */
- void set borderVerticalSpacing(var value) {
+ void set borderVerticalSpacing(String value) {
setProperty('${_browserPrefix}border-vertical-spacing', value, '');
}
@@ -3113,7 +3158,7 @@
getPropertyValue('border-width');
/** Sets the value of "border-width" */
- void set borderWidth(var value) {
+ void set borderWidth(String value) {
setProperty('border-width', value, '');
}
@@ -3122,7 +3167,7 @@
getPropertyValue('bottom');
/** Sets the value of "bottom" */
- void set bottom(var value) {
+ void set bottom(String value) {
setProperty('bottom', value, '');
}
@@ -3131,16 +3176,25 @@
getPropertyValue('${_browserPrefix}box-align');
/** Sets the value of "box-align" */
- void set boxAlign(var value) {
+ void set boxAlign(String value) {
setProperty('${_browserPrefix}box-align', value, '');
}
+ /** Gets the value of "box-decoration-break" */
+ String get boxDecorationBreak =>
+ getPropertyValue('${_browserPrefix}box-decoration-break');
+
+ /** Sets the value of "box-decoration-break" */
+ void set boxDecorationBreak(String value) {
+ setProperty('${_browserPrefix}box-decoration-break', value, '');
+ }
+
/** Gets the value of "box-direction" */
String get boxDirection =>
getPropertyValue('${_browserPrefix}box-direction');
/** Sets the value of "box-direction" */
- void set boxDirection(var value) {
+ void set boxDirection(String value) {
setProperty('${_browserPrefix}box-direction', value, '');
}
@@ -3149,7 +3203,7 @@
getPropertyValue('${_browserPrefix}box-flex');
/** Sets the value of "box-flex" */
- void set boxFlex(var value) {
+ void set boxFlex(String value) {
setProperty('${_browserPrefix}box-flex', value, '');
}
@@ -3158,7 +3212,7 @@
getPropertyValue('${_browserPrefix}box-flex-group');
/** Sets the value of "box-flex-group" */
- void set boxFlexGroup(var value) {
+ void set boxFlexGroup(String value) {
setProperty('${_browserPrefix}box-flex-group', value, '');
}
@@ -3167,7 +3221,7 @@
getPropertyValue('${_browserPrefix}box-lines');
/** Sets the value of "box-lines" */
- void set boxLines(var value) {
+ void set boxLines(String value) {
setProperty('${_browserPrefix}box-lines', value, '');
}
@@ -3176,7 +3230,7 @@
getPropertyValue('${_browserPrefix}box-ordinal-group');
/** Sets the value of "box-ordinal-group" */
- void set boxOrdinalGroup(var value) {
+ void set boxOrdinalGroup(String value) {
setProperty('${_browserPrefix}box-ordinal-group', value, '');
}
@@ -3185,7 +3239,7 @@
getPropertyValue('${_browserPrefix}box-orient');
/** Sets the value of "box-orient" */
- void set boxOrient(var value) {
+ void set boxOrient(String value) {
setProperty('${_browserPrefix}box-orient', value, '');
}
@@ -3194,7 +3248,7 @@
getPropertyValue('${_browserPrefix}box-pack');
/** Sets the value of "box-pack" */
- void set boxPack(var value) {
+ void set boxPack(String value) {
setProperty('${_browserPrefix}box-pack', value, '');
}
@@ -3203,7 +3257,7 @@
getPropertyValue('${_browserPrefix}box-reflect');
/** Sets the value of "box-reflect" */
- void set boxReflect(var value) {
+ void set boxReflect(String value) {
setProperty('${_browserPrefix}box-reflect', value, '');
}
@@ -3212,7 +3266,7 @@
getPropertyValue('box-shadow');
/** Sets the value of "box-shadow" */
- void set boxShadow(var value) {
+ void set boxShadow(String value) {
setProperty('box-shadow', value, '');
}
@@ -3221,7 +3275,7 @@
getPropertyValue('box-sizing');
/** Sets the value of "box-sizing" */
- void set boxSizing(var value) {
+ void set boxSizing(String value) {
setProperty('box-sizing', value, '');
}
@@ -3230,7 +3284,7 @@
getPropertyValue('caption-side');
/** Sets the value of "caption-side" */
- void set captionSide(var value) {
+ void set captionSide(String value) {
setProperty('caption-side', value, '');
}
@@ -3239,7 +3293,7 @@
getPropertyValue('clear');
/** Sets the value of "clear" */
- void set clear(var value) {
+ void set clear(String value) {
setProperty('clear', value, '');
}
@@ -3248,16 +3302,25 @@
getPropertyValue('clip');
/** Sets the value of "clip" */
- void set clip(var value) {
+ void set clip(String value) {
setProperty('clip', value, '');
}
+ /** Gets the value of "clip-path" */
+ String get clipPath =>
+ getPropertyValue('${_browserPrefix}clip-path');
+
+ /** Sets the value of "clip-path" */
+ void set clipPath(String value) {
+ setProperty('${_browserPrefix}clip-path', value, '');
+ }
+
/** Gets the value of "color" */
String get color =>
getPropertyValue('color');
/** Sets the value of "color" */
- void set color(var value) {
+ void set color(String value) {
setProperty('color', value, '');
}
@@ -3266,16 +3329,25 @@
getPropertyValue('${_browserPrefix}color-correction');
/** Sets the value of "color-correction" */
- void set colorCorrection(var value) {
+ void set colorCorrection(String value) {
setProperty('${_browserPrefix}color-correction', value, '');
}
+ /** Gets the value of "column-axis" */
+ String get columnAxis =>
+ getPropertyValue('${_browserPrefix}column-axis');
+
+ /** Sets the value of "column-axis" */
+ void set columnAxis(String value) {
+ setProperty('${_browserPrefix}column-axis', value, '');
+ }
+
/** Gets the value of "column-break-after" */
String get columnBreakAfter =>
getPropertyValue('${_browserPrefix}column-break-after');
/** Sets the value of "column-break-after" */
- void set columnBreakAfter(var value) {
+ void set columnBreakAfter(String value) {
setProperty('${_browserPrefix}column-break-after', value, '');
}
@@ -3284,7 +3356,7 @@
getPropertyValue('${_browserPrefix}column-break-before');
/** Sets the value of "column-break-before" */
- void set columnBreakBefore(var value) {
+ void set columnBreakBefore(String value) {
setProperty('${_browserPrefix}column-break-before', value, '');
}
@@ -3293,7 +3365,7 @@
getPropertyValue('${_browserPrefix}column-break-inside');
/** Sets the value of "column-break-inside" */
- void set columnBreakInside(var value) {
+ void set columnBreakInside(String value) {
setProperty('${_browserPrefix}column-break-inside', value, '');
}
@@ -3302,7 +3374,7 @@
getPropertyValue('${_browserPrefix}column-count');
/** Sets the value of "column-count" */
- void set columnCount(var value) {
+ void set columnCount(String value) {
setProperty('${_browserPrefix}column-count', value, '');
}
@@ -3311,16 +3383,25 @@
getPropertyValue('${_browserPrefix}column-gap');
/** Sets the value of "column-gap" */
- void set columnGap(var value) {
+ void set columnGap(String value) {
setProperty('${_browserPrefix}column-gap', value, '');
}
+ /** Gets the value of "column-progression" */
+ String get columnProgression =>
+ getPropertyValue('${_browserPrefix}column-progression');
+
+ /** Sets the value of "column-progression" */
+ void set columnProgression(String value) {
+ setProperty('${_browserPrefix}column-progression', value, '');
+ }
+
/** Gets the value of "column-rule" */
String get columnRule =>
getPropertyValue('${_browserPrefix}column-rule');
/** Sets the value of "column-rule" */
- void set columnRule(var value) {
+ void set columnRule(String value) {
setProperty('${_browserPrefix}column-rule', value, '');
}
@@ -3329,7 +3410,7 @@
getPropertyValue('${_browserPrefix}column-rule-color');
/** Sets the value of "column-rule-color" */
- void set columnRuleColor(var value) {
+ void set columnRuleColor(String value) {
setProperty('${_browserPrefix}column-rule-color', value, '');
}
@@ -3338,7 +3419,7 @@
getPropertyValue('${_browserPrefix}column-rule-style');
/** Sets the value of "column-rule-style" */
- void set columnRuleStyle(var value) {
+ void set columnRuleStyle(String value) {
setProperty('${_browserPrefix}column-rule-style', value, '');
}
@@ -3347,7 +3428,7 @@
getPropertyValue('${_browserPrefix}column-rule-width');
/** Sets the value of "column-rule-width" */
- void set columnRuleWidth(var value) {
+ void set columnRuleWidth(String value) {
setProperty('${_browserPrefix}column-rule-width', value, '');
}
@@ -3356,7 +3437,7 @@
getPropertyValue('${_browserPrefix}column-span');
/** Sets the value of "column-span" */
- void set columnSpan(var value) {
+ void set columnSpan(String value) {
setProperty('${_browserPrefix}column-span', value, '');
}
@@ -3365,7 +3446,7 @@
getPropertyValue('${_browserPrefix}column-width');
/** Sets the value of "column-width" */
- void set columnWidth(var value) {
+ void set columnWidth(String value) {
setProperty('${_browserPrefix}column-width', value, '');
}
@@ -3374,7 +3455,7 @@
getPropertyValue('${_browserPrefix}columns');
/** Sets the value of "columns" */
- void set columns(var value) {
+ void set columns(String value) {
setProperty('${_browserPrefix}columns', value, '');
}
@@ -3383,7 +3464,7 @@
getPropertyValue('content');
/** Sets the value of "content" */
- void set content(var value) {
+ void set content(String value) {
setProperty('content', value, '');
}
@@ -3392,7 +3473,7 @@
getPropertyValue('counter-increment');
/** Sets the value of "counter-increment" */
- void set counterIncrement(var value) {
+ void set counterIncrement(String value) {
setProperty('counter-increment', value, '');
}
@@ -3401,7 +3482,7 @@
getPropertyValue('counter-reset');
/** Sets the value of "counter-reset" */
- void set counterReset(var value) {
+ void set counterReset(String value) {
setProperty('counter-reset', value, '');
}
@@ -3410,16 +3491,25 @@
getPropertyValue('cursor');
/** Sets the value of "cursor" */
- void set cursor(var value) {
+ void set cursor(String value) {
setProperty('cursor', value, '');
}
+ /** Gets the value of "dashboard-region" */
+ String get dashboardRegion =>
+ getPropertyValue('${_browserPrefix}dashboard-region');
+
+ /** Sets the value of "dashboard-region" */
+ void set dashboardRegion(String value) {
+ setProperty('${_browserPrefix}dashboard-region', value, '');
+ }
+
/** Gets the value of "direction" */
String get direction =>
getPropertyValue('direction');
/** Sets the value of "direction" */
- void set direction(var value) {
+ void set direction(String value) {
setProperty('direction', value, '');
}
@@ -3428,7 +3518,7 @@
getPropertyValue('display');
/** Sets the value of "display" */
- void set display(var value) {
+ void set display(String value) {
setProperty('display', value, '');
}
@@ -3437,7 +3527,7 @@
getPropertyValue('empty-cells');
/** Sets the value of "empty-cells" */
- void set emptyCells(var value) {
+ void set emptyCells(String value) {
setProperty('empty-cells', value, '');
}
@@ -3446,17 +3536,35 @@
getPropertyValue('${_browserPrefix}filter');
/** Sets the value of "filter" */
- void set filter(var value) {
+ void set filter(String value) {
setProperty('${_browserPrefix}filter', value, '');
}
- /** Gets the value of "flex-align" */
- String get flexAlign =>
- getPropertyValue('${_browserPrefix}flex-align');
+ /** Gets the value of "flex" */
+ String get flex =>
+ getPropertyValue('${_browserPrefix}flex');
- /** Sets the value of "flex-align" */
- void set flexAlign(var value) {
- setProperty('${_browserPrefix}flex-align', value, '');
+ /** Sets the value of "flex" */
+ void set flex(String value) {
+ setProperty('${_browserPrefix}flex', value, '');
+ }
+
+ /** Gets the value of "flex-basis" */
+ String get flexBasis =>
+ getPropertyValue('${_browserPrefix}flex-basis');
+
+ /** Sets the value of "flex-basis" */
+ void set flexBasis(String value) {
+ setProperty('${_browserPrefix}flex-basis', value, '');
+ }
+
+ /** Gets the value of "flex-direction" */
+ String get flexDirection =>
+ getPropertyValue('${_browserPrefix}flex-direction');
+
+ /** Sets the value of "flex-direction" */
+ void set flexDirection(String value) {
+ setProperty('${_browserPrefix}flex-direction', value, '');
}
/** Gets the value of "flex-flow" */
@@ -3464,26 +3572,35 @@
getPropertyValue('${_browserPrefix}flex-flow');
/** Sets the value of "flex-flow" */
- void set flexFlow(var value) {
+ void set flexFlow(String value) {
setProperty('${_browserPrefix}flex-flow', value, '');
}
- /** Gets the value of "flex-order" */
- String get flexOrder =>
- getPropertyValue('${_browserPrefix}flex-order');
+ /** Gets the value of "flex-grow" */
+ String get flexGrow =>
+ getPropertyValue('${_browserPrefix}flex-grow');
- /** Sets the value of "flex-order" */
- void set flexOrder(var value) {
- setProperty('${_browserPrefix}flex-order', value, '');
+ /** Sets the value of "flex-grow" */
+ void set flexGrow(String value) {
+ setProperty('${_browserPrefix}flex-grow', value, '');
}
- /** Gets the value of "flex-pack" */
- String get flexPack =>
- getPropertyValue('${_browserPrefix}flex-pack');
+ /** Gets the value of "flex-shrink" */
+ String get flexShrink =>
+ getPropertyValue('${_browserPrefix}flex-shrink');
- /** Sets the value of "flex-pack" */
- void set flexPack(var value) {
- setProperty('${_browserPrefix}flex-pack', value, '');
+ /** Sets the value of "flex-shrink" */
+ void set flexShrink(String value) {
+ setProperty('${_browserPrefix}flex-shrink', value, '');
+ }
+
+ /** Gets the value of "flex-wrap" */
+ String get flexWrap =>
+ getPropertyValue('${_browserPrefix}flex-wrap');
+
+ /** Sets the value of "flex-wrap" */
+ void set flexWrap(String value) {
+ setProperty('${_browserPrefix}flex-wrap', value, '');
}
/** Gets the value of "float" */
@@ -3491,7 +3608,7 @@
getPropertyValue('float');
/** Sets the value of "float" */
- void set float(var value) {
+ void set float(String value) {
setProperty('float', value, '');
}
@@ -3500,7 +3617,7 @@
getPropertyValue('${_browserPrefix}flow-from');
/** Sets the value of "flow-from" */
- void set flowFrom(var value) {
+ void set flowFrom(String value) {
setProperty('${_browserPrefix}flow-from', value, '');
}
@@ -3509,7 +3626,7 @@
getPropertyValue('${_browserPrefix}flow-into');
/** Sets the value of "flow-into" */
- void set flowInto(var value) {
+ void set flowInto(String value) {
setProperty('${_browserPrefix}flow-into', value, '');
}
@@ -3518,7 +3635,7 @@
getPropertyValue('font');
/** Sets the value of "font" */
- void set font(var value) {
+ void set font(String value) {
setProperty('font', value, '');
}
@@ -3527,7 +3644,7 @@
getPropertyValue('font-family');
/** Sets the value of "font-family" */
- void set fontFamily(var value) {
+ void set fontFamily(String value) {
setProperty('font-family', value, '');
}
@@ -3536,16 +3653,25 @@
getPropertyValue('${_browserPrefix}font-feature-settings');
/** Sets the value of "font-feature-settings" */
- void set fontFeatureSettings(var value) {
+ void set fontFeatureSettings(String value) {
setProperty('${_browserPrefix}font-feature-settings', value, '');
}
+ /** Gets the value of "font-kerning" */
+ String get fontKerning =>
+ getPropertyValue('${_browserPrefix}font-kerning');
+
+ /** Sets the value of "font-kerning" */
+ void set fontKerning(String value) {
+ setProperty('${_browserPrefix}font-kerning', value, '');
+ }
+
/** Gets the value of "font-size" */
String get fontSize =>
getPropertyValue('font-size');
/** Sets the value of "font-size" */
- void set fontSize(var value) {
+ void set fontSize(String value) {
setProperty('font-size', value, '');
}
@@ -3554,7 +3680,7 @@
getPropertyValue('${_browserPrefix}font-size-delta');
/** Sets the value of "font-size-delta" */
- void set fontSizeDelta(var value) {
+ void set fontSizeDelta(String value) {
setProperty('${_browserPrefix}font-size-delta', value, '');
}
@@ -3563,7 +3689,7 @@
getPropertyValue('${_browserPrefix}font-smoothing');
/** Sets the value of "font-smoothing" */
- void set fontSmoothing(var value) {
+ void set fontSmoothing(String value) {
setProperty('${_browserPrefix}font-smoothing', value, '');
}
@@ -3572,7 +3698,7 @@
getPropertyValue('font-stretch');
/** Sets the value of "font-stretch" */
- void set fontStretch(var value) {
+ void set fontStretch(String value) {
setProperty('font-stretch', value, '');
}
@@ -3581,7 +3707,7 @@
getPropertyValue('font-style');
/** Sets the value of "font-style" */
- void set fontStyle(var value) {
+ void set fontStyle(String value) {
setProperty('font-style', value, '');
}
@@ -3590,25 +3716,70 @@
getPropertyValue('font-variant');
/** Sets the value of "font-variant" */
- void set fontVariant(var value) {
+ void set fontVariant(String value) {
setProperty('font-variant', value, '');
}
+ /** Gets the value of "font-variant-ligatures" */
+ String get fontVariantLigatures =>
+ getPropertyValue('${_browserPrefix}font-variant-ligatures');
+
+ /** Sets the value of "font-variant-ligatures" */
+ void set fontVariantLigatures(String value) {
+ setProperty('${_browserPrefix}font-variant-ligatures', value, '');
+ }
+
/** Gets the value of "font-weight" */
String get fontWeight =>
getPropertyValue('font-weight');
/** Sets the value of "font-weight" */
- void set fontWeight(var value) {
+ void set fontWeight(String value) {
setProperty('font-weight', value, '');
}
+ /** Gets the value of "grid-column" */
+ String get gridColumn =>
+ getPropertyValue('${_browserPrefix}grid-column');
+
+ /** Sets the value of "grid-column" */
+ void set gridColumn(String value) {
+ setProperty('${_browserPrefix}grid-column', value, '');
+ }
+
+ /** Gets the value of "grid-columns" */
+ String get gridColumns =>
+ getPropertyValue('${_browserPrefix}grid-columns');
+
+ /** Sets the value of "grid-columns" */
+ void set gridColumns(String value) {
+ setProperty('${_browserPrefix}grid-columns', value, '');
+ }
+
+ /** Gets the value of "grid-row" */
+ String get gridRow =>
+ getPropertyValue('${_browserPrefix}grid-row');
+
+ /** Sets the value of "grid-row" */
+ void set gridRow(String value) {
+ setProperty('${_browserPrefix}grid-row', value, '');
+ }
+
+ /** Gets the value of "grid-rows" */
+ String get gridRows =>
+ getPropertyValue('${_browserPrefix}grid-rows');
+
+ /** Sets the value of "grid-rows" */
+ void set gridRows(String value) {
+ setProperty('${_browserPrefix}grid-rows', value, '');
+ }
+
/** Gets the value of "height" */
String get height =>
getPropertyValue('height');
/** Sets the value of "height" */
- void set height(var value) {
+ void set height(String value) {
setProperty('height', value, '');
}
@@ -3617,7 +3788,7 @@
getPropertyValue('${_browserPrefix}highlight');
/** Sets the value of "highlight" */
- void set highlight(var value) {
+ void set highlight(String value) {
setProperty('${_browserPrefix}highlight', value, '');
}
@@ -3626,7 +3797,7 @@
getPropertyValue('${_browserPrefix}hyphenate-character');
/** Sets the value of "hyphenate-character" */
- void set hyphenateCharacter(var value) {
+ void set hyphenateCharacter(String value) {
setProperty('${_browserPrefix}hyphenate-character', value, '');
}
@@ -3635,7 +3806,7 @@
getPropertyValue('${_browserPrefix}hyphenate-limit-after');
/** Sets the value of "hyphenate-limit-after" */
- void set hyphenateLimitAfter(var value) {
+ void set hyphenateLimitAfter(String value) {
setProperty('${_browserPrefix}hyphenate-limit-after', value, '');
}
@@ -3644,7 +3815,7 @@
getPropertyValue('${_browserPrefix}hyphenate-limit-before');
/** Sets the value of "hyphenate-limit-before" */
- void set hyphenateLimitBefore(var value) {
+ void set hyphenateLimitBefore(String value) {
setProperty('${_browserPrefix}hyphenate-limit-before', value, '');
}
@@ -3653,7 +3824,7 @@
getPropertyValue('${_browserPrefix}hyphenate-limit-lines');
/** Sets the value of "hyphenate-limit-lines" */
- void set hyphenateLimitLines(var value) {
+ void set hyphenateLimitLines(String value) {
setProperty('${_browserPrefix}hyphenate-limit-lines', value, '');
}
@@ -3662,25 +3833,52 @@
getPropertyValue('${_browserPrefix}hyphens');
/** Sets the value of "hyphens" */
- void set hyphens(var value) {
+ void set hyphens(String value) {
setProperty('${_browserPrefix}hyphens', value, '');
}
+ /** Gets the value of "image-orientation" */
+ String get imageOrientation =>
+ getPropertyValue('image-orientation');
+
+ /** Sets the value of "image-orientation" */
+ void set imageOrientation(String value) {
+ setProperty('image-orientation', value, '');
+ }
+
/** Gets the value of "image-rendering" */
String get imageRendering =>
getPropertyValue('image-rendering');
/** Sets the value of "image-rendering" */
- void set imageRendering(var value) {
+ void set imageRendering(String value) {
setProperty('image-rendering', value, '');
}
+ /** Gets the value of "image-resolution" */
+ String get imageResolution =>
+ getPropertyValue('image-resolution');
+
+ /** Sets the value of "image-resolution" */
+ void set imageResolution(String value) {
+ setProperty('image-resolution', value, '');
+ }
+
+ /** Gets the value of "justify-content" */
+ String get justifyContent =>
+ getPropertyValue('${_browserPrefix}justify-content');
+
+ /** Sets the value of "justify-content" */
+ void set justifyContent(String value) {
+ setProperty('${_browserPrefix}justify-content', value, '');
+ }
+
/** Gets the value of "left" */
String get left =>
getPropertyValue('left');
/** Sets the value of "left" */
- void set left(var value) {
+ void set left(String value) {
setProperty('left', value, '');
}
@@ -3689,16 +3887,25 @@
getPropertyValue('letter-spacing');
/** Sets the value of "letter-spacing" */
- void set letterSpacing(var value) {
+ void set letterSpacing(String value) {
setProperty('letter-spacing', value, '');
}
+ /** Gets the value of "line-align" */
+ String get lineAlign =>
+ getPropertyValue('${_browserPrefix}line-align');
+
+ /** Sets the value of "line-align" */
+ void set lineAlign(String value) {
+ setProperty('${_browserPrefix}line-align', value, '');
+ }
+
/** Gets the value of "line-box-contain" */
String get lineBoxContain =>
getPropertyValue('${_browserPrefix}line-box-contain');
/** Sets the value of "line-box-contain" */
- void set lineBoxContain(var value) {
+ void set lineBoxContain(String value) {
setProperty('${_browserPrefix}line-box-contain', value, '');
}
@@ -3707,7 +3914,7 @@
getPropertyValue('${_browserPrefix}line-break');
/** Sets the value of "line-break" */
- void set lineBreak(var value) {
+ void set lineBreak(String value) {
setProperty('${_browserPrefix}line-break', value, '');
}
@@ -3716,25 +3923,43 @@
getPropertyValue('${_browserPrefix}line-clamp');
/** Sets the value of "line-clamp" */
- void set lineClamp(var value) {
+ void set lineClamp(String value) {
setProperty('${_browserPrefix}line-clamp', value, '');
}
+ /** Gets the value of "line-grid" */
+ String get lineGrid =>
+ getPropertyValue('${_browserPrefix}line-grid');
+
+ /** Sets the value of "line-grid" */
+ void set lineGrid(String value) {
+ setProperty('${_browserPrefix}line-grid', value, '');
+ }
+
/** Gets the value of "line-height" */
String get lineHeight =>
getPropertyValue('line-height');
/** Sets the value of "line-height" */
- void set lineHeight(var value) {
+ void set lineHeight(String value) {
setProperty('line-height', value, '');
}
+ /** Gets the value of "line-snap" */
+ String get lineSnap =>
+ getPropertyValue('${_browserPrefix}line-snap');
+
+ /** Sets the value of "line-snap" */
+ void set lineSnap(String value) {
+ setProperty('${_browserPrefix}line-snap', value, '');
+ }
+
/** Gets the value of "list-style" */
String get listStyle =>
getPropertyValue('list-style');
/** Sets the value of "list-style" */
- void set listStyle(var value) {
+ void set listStyle(String value) {
setProperty('list-style', value, '');
}
@@ -3743,7 +3968,7 @@
getPropertyValue('list-style-image');
/** Sets the value of "list-style-image" */
- void set listStyleImage(var value) {
+ void set listStyleImage(String value) {
setProperty('list-style-image', value, '');
}
@@ -3752,7 +3977,7 @@
getPropertyValue('list-style-position');
/** Sets the value of "list-style-position" */
- void set listStylePosition(var value) {
+ void set listStylePosition(String value) {
setProperty('list-style-position', value, '');
}
@@ -3761,7 +3986,7 @@
getPropertyValue('list-style-type');
/** Sets the value of "list-style-type" */
- void set listStyleType(var value) {
+ void set listStyleType(String value) {
setProperty('list-style-type', value, '');
}
@@ -3770,7 +3995,7 @@
getPropertyValue('${_browserPrefix}locale');
/** Sets the value of "locale" */
- void set locale(var value) {
+ void set locale(String value) {
setProperty('${_browserPrefix}locale', value, '');
}
@@ -3779,7 +4004,7 @@
getPropertyValue('${_browserPrefix}logical-height');
/** Sets the value of "logical-height" */
- void set logicalHeight(var value) {
+ void set logicalHeight(String value) {
setProperty('${_browserPrefix}logical-height', value, '');
}
@@ -3788,7 +4013,7 @@
getPropertyValue('${_browserPrefix}logical-width');
/** Sets the value of "logical-width" */
- void set logicalWidth(var value) {
+ void set logicalWidth(String value) {
setProperty('${_browserPrefix}logical-width', value, '');
}
@@ -3797,7 +4022,7 @@
getPropertyValue('margin');
/** Sets the value of "margin" */
- void set margin(var value) {
+ void set margin(String value) {
setProperty('margin', value, '');
}
@@ -3806,7 +4031,7 @@
getPropertyValue('${_browserPrefix}margin-after');
/** Sets the value of "margin-after" */
- void set marginAfter(var value) {
+ void set marginAfter(String value) {
setProperty('${_browserPrefix}margin-after', value, '');
}
@@ -3815,7 +4040,7 @@
getPropertyValue('${_browserPrefix}margin-after-collapse');
/** Sets the value of "margin-after-collapse" */
- void set marginAfterCollapse(var value) {
+ void set marginAfterCollapse(String value) {
setProperty('${_browserPrefix}margin-after-collapse', value, '');
}
@@ -3824,7 +4049,7 @@
getPropertyValue('${_browserPrefix}margin-before');
/** Sets the value of "margin-before" */
- void set marginBefore(var value) {
+ void set marginBefore(String value) {
setProperty('${_browserPrefix}margin-before', value, '');
}
@@ -3833,7 +4058,7 @@
getPropertyValue('${_browserPrefix}margin-before-collapse');
/** Sets the value of "margin-before-collapse" */
- void set marginBeforeCollapse(var value) {
+ void set marginBeforeCollapse(String value) {
setProperty('${_browserPrefix}margin-before-collapse', value, '');
}
@@ -3842,7 +4067,7 @@
getPropertyValue('margin-bottom');
/** Sets the value of "margin-bottom" */
- void set marginBottom(var value) {
+ void set marginBottom(String value) {
setProperty('margin-bottom', value, '');
}
@@ -3851,7 +4076,7 @@
getPropertyValue('${_browserPrefix}margin-bottom-collapse');
/** Sets the value of "margin-bottom-collapse" */
- void set marginBottomCollapse(var value) {
+ void set marginBottomCollapse(String value) {
setProperty('${_browserPrefix}margin-bottom-collapse', value, '');
}
@@ -3860,7 +4085,7 @@
getPropertyValue('${_browserPrefix}margin-collapse');
/** Sets the value of "margin-collapse" */
- void set marginCollapse(var value) {
+ void set marginCollapse(String value) {
setProperty('${_browserPrefix}margin-collapse', value, '');
}
@@ -3869,7 +4094,7 @@
getPropertyValue('${_browserPrefix}margin-end');
/** Sets the value of "margin-end" */
- void set marginEnd(var value) {
+ void set marginEnd(String value) {
setProperty('${_browserPrefix}margin-end', value, '');
}
@@ -3878,7 +4103,7 @@
getPropertyValue('margin-left');
/** Sets the value of "margin-left" */
- void set marginLeft(var value) {
+ void set marginLeft(String value) {
setProperty('margin-left', value, '');
}
@@ -3887,7 +4112,7 @@
getPropertyValue('margin-right');
/** Sets the value of "margin-right" */
- void set marginRight(var value) {
+ void set marginRight(String value) {
setProperty('margin-right', value, '');
}
@@ -3896,7 +4121,7 @@
getPropertyValue('${_browserPrefix}margin-start');
/** Sets the value of "margin-start" */
- void set marginStart(var value) {
+ void set marginStart(String value) {
setProperty('${_browserPrefix}margin-start', value, '');
}
@@ -3905,7 +4130,7 @@
getPropertyValue('margin-top');
/** Sets the value of "margin-top" */
- void set marginTop(var value) {
+ void set marginTop(String value) {
setProperty('margin-top', value, '');
}
@@ -3914,7 +4139,7 @@
getPropertyValue('${_browserPrefix}margin-top-collapse');
/** Sets the value of "margin-top-collapse" */
- void set marginTopCollapse(var value) {
+ void set marginTopCollapse(String value) {
setProperty('${_browserPrefix}margin-top-collapse', value, '');
}
@@ -3923,7 +4148,7 @@
getPropertyValue('${_browserPrefix}marquee');
/** Sets the value of "marquee" */
- void set marquee(var value) {
+ void set marquee(String value) {
setProperty('${_browserPrefix}marquee', value, '');
}
@@ -3932,7 +4157,7 @@
getPropertyValue('${_browserPrefix}marquee-direction');
/** Sets the value of "marquee-direction" */
- void set marqueeDirection(var value) {
+ void set marqueeDirection(String value) {
setProperty('${_browserPrefix}marquee-direction', value, '');
}
@@ -3941,7 +4166,7 @@
getPropertyValue('${_browserPrefix}marquee-increment');
/** Sets the value of "marquee-increment" */
- void set marqueeIncrement(var value) {
+ void set marqueeIncrement(String value) {
setProperty('${_browserPrefix}marquee-increment', value, '');
}
@@ -3950,7 +4175,7 @@
getPropertyValue('${_browserPrefix}marquee-repetition');
/** Sets the value of "marquee-repetition" */
- void set marqueeRepetition(var value) {
+ void set marqueeRepetition(String value) {
setProperty('${_browserPrefix}marquee-repetition', value, '');
}
@@ -3959,7 +4184,7 @@
getPropertyValue('${_browserPrefix}marquee-speed');
/** Sets the value of "marquee-speed" */
- void set marqueeSpeed(var value) {
+ void set marqueeSpeed(String value) {
setProperty('${_browserPrefix}marquee-speed', value, '');
}
@@ -3968,7 +4193,7 @@
getPropertyValue('${_browserPrefix}marquee-style');
/** Sets the value of "marquee-style" */
- void set marqueeStyle(var value) {
+ void set marqueeStyle(String value) {
setProperty('${_browserPrefix}marquee-style', value, '');
}
@@ -3977,7 +4202,7 @@
getPropertyValue('${_browserPrefix}mask');
/** Sets the value of "mask" */
- void set mask(var value) {
+ void set mask(String value) {
setProperty('${_browserPrefix}mask', value, '');
}
@@ -3986,7 +4211,7 @@
getPropertyValue('${_browserPrefix}mask-attachment');
/** Sets the value of "mask-attachment" */
- void set maskAttachment(var value) {
+ void set maskAttachment(String value) {
setProperty('${_browserPrefix}mask-attachment', value, '');
}
@@ -3995,7 +4220,7 @@
getPropertyValue('${_browserPrefix}mask-box-image');
/** Sets the value of "mask-box-image" */
- void set maskBoxImage(var value) {
+ void set maskBoxImage(String value) {
setProperty('${_browserPrefix}mask-box-image', value, '');
}
@@ -4004,7 +4229,7 @@
getPropertyValue('${_browserPrefix}mask-box-image-outset');
/** Sets the value of "mask-box-image-outset" */
- void set maskBoxImageOutset(var value) {
+ void set maskBoxImageOutset(String value) {
setProperty('${_browserPrefix}mask-box-image-outset', value, '');
}
@@ -4013,7 +4238,7 @@
getPropertyValue('${_browserPrefix}mask-box-image-repeat');
/** Sets the value of "mask-box-image-repeat" */
- void set maskBoxImageRepeat(var value) {
+ void set maskBoxImageRepeat(String value) {
setProperty('${_browserPrefix}mask-box-image-repeat', value, '');
}
@@ -4022,7 +4247,7 @@
getPropertyValue('${_browserPrefix}mask-box-image-slice');
/** Sets the value of "mask-box-image-slice" */
- void set maskBoxImageSlice(var value) {
+ void set maskBoxImageSlice(String value) {
setProperty('${_browserPrefix}mask-box-image-slice', value, '');
}
@@ -4031,7 +4256,7 @@
getPropertyValue('${_browserPrefix}mask-box-image-source');
/** Sets the value of "mask-box-image-source" */
- void set maskBoxImageSource(var value) {
+ void set maskBoxImageSource(String value) {
setProperty('${_browserPrefix}mask-box-image-source', value, '');
}
@@ -4040,7 +4265,7 @@
getPropertyValue('${_browserPrefix}mask-box-image-width');
/** Sets the value of "mask-box-image-width" */
- void set maskBoxImageWidth(var value) {
+ void set maskBoxImageWidth(String value) {
setProperty('${_browserPrefix}mask-box-image-width', value, '');
}
@@ -4049,7 +4274,7 @@
getPropertyValue('${_browserPrefix}mask-clip');
/** Sets the value of "mask-clip" */
- void set maskClip(var value) {
+ void set maskClip(String value) {
setProperty('${_browserPrefix}mask-clip', value, '');
}
@@ -4058,7 +4283,7 @@
getPropertyValue('${_browserPrefix}mask-composite');
/** Sets the value of "mask-composite" */
- void set maskComposite(var value) {
+ void set maskComposite(String value) {
setProperty('${_browserPrefix}mask-composite', value, '');
}
@@ -4067,7 +4292,7 @@
getPropertyValue('${_browserPrefix}mask-image');
/** Sets the value of "mask-image" */
- void set maskImage(var value) {
+ void set maskImage(String value) {
setProperty('${_browserPrefix}mask-image', value, '');
}
@@ -4076,7 +4301,7 @@
getPropertyValue('${_browserPrefix}mask-origin');
/** Sets the value of "mask-origin" */
- void set maskOrigin(var value) {
+ void set maskOrigin(String value) {
setProperty('${_browserPrefix}mask-origin', value, '');
}
@@ -4085,7 +4310,7 @@
getPropertyValue('${_browserPrefix}mask-position');
/** Sets the value of "mask-position" */
- void set maskPosition(var value) {
+ void set maskPosition(String value) {
setProperty('${_browserPrefix}mask-position', value, '');
}
@@ -4094,7 +4319,7 @@
getPropertyValue('${_browserPrefix}mask-position-x');
/** Sets the value of "mask-position-x" */
- void set maskPositionX(var value) {
+ void set maskPositionX(String value) {
setProperty('${_browserPrefix}mask-position-x', value, '');
}
@@ -4103,7 +4328,7 @@
getPropertyValue('${_browserPrefix}mask-position-y');
/** Sets the value of "mask-position-y" */
- void set maskPositionY(var value) {
+ void set maskPositionY(String value) {
setProperty('${_browserPrefix}mask-position-y', value, '');
}
@@ -4112,7 +4337,7 @@
getPropertyValue('${_browserPrefix}mask-repeat');
/** Sets the value of "mask-repeat" */
- void set maskRepeat(var value) {
+ void set maskRepeat(String value) {
setProperty('${_browserPrefix}mask-repeat', value, '');
}
@@ -4121,7 +4346,7 @@
getPropertyValue('${_browserPrefix}mask-repeat-x');
/** Sets the value of "mask-repeat-x" */
- void set maskRepeatX(var value) {
+ void set maskRepeatX(String value) {
setProperty('${_browserPrefix}mask-repeat-x', value, '');
}
@@ -4130,7 +4355,7 @@
getPropertyValue('${_browserPrefix}mask-repeat-y');
/** Sets the value of "mask-repeat-y" */
- void set maskRepeatY(var value) {
+ void set maskRepeatY(String value) {
setProperty('${_browserPrefix}mask-repeat-y', value, '');
}
@@ -4139,25 +4364,16 @@
getPropertyValue('${_browserPrefix}mask-size');
/** Sets the value of "mask-size" */
- void set maskSize(var value) {
+ void set maskSize(String value) {
setProperty('${_browserPrefix}mask-size', value, '');
}
- /** Gets the value of "match-nearest-mail-blockquote-color" */
- String get matchNearestMailBlockquoteColor =>
- getPropertyValue('${_browserPrefix}match-nearest-mail-blockquote-color');
-
- /** Sets the value of "match-nearest-mail-blockquote-color" */
- void set matchNearestMailBlockquoteColor(var value) {
- setProperty('${_browserPrefix}match-nearest-mail-blockquote-color', value, '');
- }
-
/** Gets the value of "max-height" */
String get maxHeight =>
getPropertyValue('max-height');
/** Sets the value of "max-height" */
- void set maxHeight(var value) {
+ void set maxHeight(String value) {
setProperty('max-height', value, '');
}
@@ -4166,7 +4382,7 @@
getPropertyValue('${_browserPrefix}max-logical-height');
/** Sets the value of "max-logical-height" */
- void set maxLogicalHeight(var value) {
+ void set maxLogicalHeight(String value) {
setProperty('${_browserPrefix}max-logical-height', value, '');
}
@@ -4175,7 +4391,7 @@
getPropertyValue('${_browserPrefix}max-logical-width');
/** Sets the value of "max-logical-width" */
- void set maxLogicalWidth(var value) {
+ void set maxLogicalWidth(String value) {
setProperty('${_browserPrefix}max-logical-width', value, '');
}
@@ -4184,16 +4400,25 @@
getPropertyValue('max-width');
/** Sets the value of "max-width" */
- void set maxWidth(var value) {
+ void set maxWidth(String value) {
setProperty('max-width', value, '');
}
+ /** Gets the value of "max-zoom" */
+ String get maxZoom =>
+ getPropertyValue('max-zoom');
+
+ /** Sets the value of "max-zoom" */
+ void set maxZoom(String value) {
+ setProperty('max-zoom', value, '');
+ }
+
/** Gets the value of "min-height" */
String get minHeight =>
getPropertyValue('min-height');
/** Sets the value of "min-height" */
- void set minHeight(var value) {
+ void set minHeight(String value) {
setProperty('min-height', value, '');
}
@@ -4202,7 +4427,7 @@
getPropertyValue('${_browserPrefix}min-logical-height');
/** Sets the value of "min-logical-height" */
- void set minLogicalHeight(var value) {
+ void set minLogicalHeight(String value) {
setProperty('${_browserPrefix}min-logical-height', value, '');
}
@@ -4211,7 +4436,7 @@
getPropertyValue('${_browserPrefix}min-logical-width');
/** Sets the value of "min-logical-width" */
- void set minLogicalWidth(var value) {
+ void set minLogicalWidth(String value) {
setProperty('${_browserPrefix}min-logical-width', value, '');
}
@@ -4220,16 +4445,25 @@
getPropertyValue('min-width');
/** Sets the value of "min-width" */
- void set minWidth(var value) {
+ void set minWidth(String value) {
setProperty('min-width', value, '');
}
+ /** Gets the value of "min-zoom" */
+ String get minZoom =>
+ getPropertyValue('min-zoom');
+
+ /** Sets the value of "min-zoom" */
+ void set minZoom(String value) {
+ setProperty('min-zoom', value, '');
+ }
+
/** Gets the value of "nbsp-mode" */
String get nbspMode =>
getPropertyValue('${_browserPrefix}nbsp-mode');
/** Sets the value of "nbsp-mode" */
- void set nbspMode(var value) {
+ void set nbspMode(String value) {
setProperty('${_browserPrefix}nbsp-mode', value, '');
}
@@ -4238,16 +4472,34 @@
getPropertyValue('opacity');
/** Sets the value of "opacity" */
- void set opacity(var value) {
+ void set opacity(String value) {
setProperty('opacity', value, '');
}
+ /** Gets the value of "order" */
+ String get order =>
+ getPropertyValue('${_browserPrefix}order');
+
+ /** Sets the value of "order" */
+ void set order(String value) {
+ setProperty('${_browserPrefix}order', value, '');
+ }
+
+ /** Gets the value of "orientation" */
+ String get orientation =>
+ getPropertyValue('orientation');
+
+ /** Sets the value of "orientation" */
+ void set orientation(String value) {
+ setProperty('orientation', value, '');
+ }
+
/** Gets the value of "orphans" */
String get orphans =>
getPropertyValue('orphans');
/** Sets the value of "orphans" */
- void set orphans(var value) {
+ void set orphans(String value) {
setProperty('orphans', value, '');
}
@@ -4256,7 +4508,7 @@
getPropertyValue('outline');
/** Sets the value of "outline" */
- void set outline(var value) {
+ void set outline(String value) {
setProperty('outline', value, '');
}
@@ -4265,7 +4517,7 @@
getPropertyValue('outline-color');
/** Sets the value of "outline-color" */
- void set outlineColor(var value) {
+ void set outlineColor(String value) {
setProperty('outline-color', value, '');
}
@@ -4274,7 +4526,7 @@
getPropertyValue('outline-offset');
/** Sets the value of "outline-offset" */
- void set outlineOffset(var value) {
+ void set outlineOffset(String value) {
setProperty('outline-offset', value, '');
}
@@ -4283,7 +4535,7 @@
getPropertyValue('outline-style');
/** Sets the value of "outline-style" */
- void set outlineStyle(var value) {
+ void set outlineStyle(String value) {
setProperty('outline-style', value, '');
}
@@ -4292,7 +4544,7 @@
getPropertyValue('outline-width');
/** Sets the value of "outline-width" */
- void set outlineWidth(var value) {
+ void set outlineWidth(String value) {
setProperty('outline-width', value, '');
}
@@ -4301,16 +4553,34 @@
getPropertyValue('overflow');
/** Sets the value of "overflow" */
- void set overflow(var value) {
+ void set overflow(String value) {
setProperty('overflow', value, '');
}
+ /** Gets the value of "overflow-scrolling" */
+ String get overflowScrolling =>
+ getPropertyValue('${_browserPrefix}overflow-scrolling');
+
+ /** Sets the value of "overflow-scrolling" */
+ void set overflowScrolling(String value) {
+ setProperty('${_browserPrefix}overflow-scrolling', value, '');
+ }
+
+ /** Gets the value of "overflow-wrap" */
+ String get overflowWrap =>
+ getPropertyValue('overflow-wrap');
+
+ /** Sets the value of "overflow-wrap" */
+ void set overflowWrap(String value) {
+ setProperty('overflow-wrap', value, '');
+ }
+
/** Gets the value of "overflow-x" */
String get overflowX =>
getPropertyValue('overflow-x');
/** Sets the value of "overflow-x" */
- void set overflowX(var value) {
+ void set overflowX(String value) {
setProperty('overflow-x', value, '');
}
@@ -4319,7 +4589,7 @@
getPropertyValue('overflow-y');
/** Sets the value of "overflow-y" */
- void set overflowY(var value) {
+ void set overflowY(String value) {
setProperty('overflow-y', value, '');
}
@@ -4328,7 +4598,7 @@
getPropertyValue('padding');
/** Sets the value of "padding" */
- void set padding(var value) {
+ void set padding(String value) {
setProperty('padding', value, '');
}
@@ -4337,7 +4607,7 @@
getPropertyValue('${_browserPrefix}padding-after');
/** Sets the value of "padding-after" */
- void set paddingAfter(var value) {
+ void set paddingAfter(String value) {
setProperty('${_browserPrefix}padding-after', value, '');
}
@@ -4346,7 +4616,7 @@
getPropertyValue('${_browserPrefix}padding-before');
/** Sets the value of "padding-before" */
- void set paddingBefore(var value) {
+ void set paddingBefore(String value) {
setProperty('${_browserPrefix}padding-before', value, '');
}
@@ -4355,7 +4625,7 @@
getPropertyValue('padding-bottom');
/** Sets the value of "padding-bottom" */
- void set paddingBottom(var value) {
+ void set paddingBottom(String value) {
setProperty('padding-bottom', value, '');
}
@@ -4364,7 +4634,7 @@
getPropertyValue('${_browserPrefix}padding-end');
/** Sets the value of "padding-end" */
- void set paddingEnd(var value) {
+ void set paddingEnd(String value) {
setProperty('${_browserPrefix}padding-end', value, '');
}
@@ -4373,7 +4643,7 @@
getPropertyValue('padding-left');
/** Sets the value of "padding-left" */
- void set paddingLeft(var value) {
+ void set paddingLeft(String value) {
setProperty('padding-left', value, '');
}
@@ -4382,7 +4652,7 @@
getPropertyValue('padding-right');
/** Sets the value of "padding-right" */
- void set paddingRight(var value) {
+ void set paddingRight(String value) {
setProperty('padding-right', value, '');
}
@@ -4391,7 +4661,7 @@
getPropertyValue('${_browserPrefix}padding-start');
/** Sets the value of "padding-start" */
- void set paddingStart(var value) {
+ void set paddingStart(String value) {
setProperty('${_browserPrefix}padding-start', value, '');
}
@@ -4400,7 +4670,7 @@
getPropertyValue('padding-top');
/** Sets the value of "padding-top" */
- void set paddingTop(var value) {
+ void set paddingTop(String value) {
setProperty('padding-top', value, '');
}
@@ -4409,7 +4679,7 @@
getPropertyValue('page');
/** Sets the value of "page" */
- void set page(var value) {
+ void set page(String value) {
setProperty('page', value, '');
}
@@ -4418,7 +4688,7 @@
getPropertyValue('page-break-after');
/** Sets the value of "page-break-after" */
- void set pageBreakAfter(var value) {
+ void set pageBreakAfter(String value) {
setProperty('page-break-after', value, '');
}
@@ -4427,7 +4697,7 @@
getPropertyValue('page-break-before');
/** Sets the value of "page-break-before" */
- void set pageBreakBefore(var value) {
+ void set pageBreakBefore(String value) {
setProperty('page-break-before', value, '');
}
@@ -4436,7 +4706,7 @@
getPropertyValue('page-break-inside');
/** Sets the value of "page-break-inside" */
- void set pageBreakInside(var value) {
+ void set pageBreakInside(String value) {
setProperty('page-break-inside', value, '');
}
@@ -4445,7 +4715,7 @@
getPropertyValue('${_browserPrefix}perspective');
/** Sets the value of "perspective" */
- void set perspective(var value) {
+ void set perspective(String value) {
setProperty('${_browserPrefix}perspective', value, '');
}
@@ -4454,7 +4724,7 @@
getPropertyValue('${_browserPrefix}perspective-origin');
/** Sets the value of "perspective-origin" */
- void set perspectiveOrigin(var value) {
+ void set perspectiveOrigin(String value) {
setProperty('${_browserPrefix}perspective-origin', value, '');
}
@@ -4463,7 +4733,7 @@
getPropertyValue('${_browserPrefix}perspective-origin-x');
/** Sets the value of "perspective-origin-x" */
- void set perspectiveOriginX(var value) {
+ void set perspectiveOriginX(String value) {
setProperty('${_browserPrefix}perspective-origin-x', value, '');
}
@@ -4472,7 +4742,7 @@
getPropertyValue('${_browserPrefix}perspective-origin-y');
/** Sets the value of "perspective-origin-y" */
- void set perspectiveOriginY(var value) {
+ void set perspectiveOriginY(String value) {
setProperty('${_browserPrefix}perspective-origin-y', value, '');
}
@@ -4481,7 +4751,7 @@
getPropertyValue('pointer-events');
/** Sets the value of "pointer-events" */
- void set pointerEvents(var value) {
+ void set pointerEvents(String value) {
setProperty('pointer-events', value, '');
}
@@ -4490,16 +4760,25 @@
getPropertyValue('position');
/** Sets the value of "position" */
- void set position(var value) {
+ void set position(String value) {
setProperty('position', value, '');
}
+ /** Gets the value of "print-color-adjust" */
+ String get printColorAdjust =>
+ getPropertyValue('${_browserPrefix}print-color-adjust');
+
+ /** Sets the value of "print-color-adjust" */
+ void set printColorAdjust(String value) {
+ setProperty('${_browserPrefix}print-color-adjust', value, '');
+ }
+
/** Gets the value of "quotes" */
String get quotes =>
getPropertyValue('quotes');
/** Sets the value of "quotes" */
- void set quotes(var value) {
+ void set quotes(String value) {
setProperty('quotes', value, '');
}
@@ -4508,7 +4787,7 @@
getPropertyValue('${_browserPrefix}region-break-after');
/** Sets the value of "region-break-after" */
- void set regionBreakAfter(var value) {
+ void set regionBreakAfter(String value) {
setProperty('${_browserPrefix}region-break-after', value, '');
}
@@ -4517,7 +4796,7 @@
getPropertyValue('${_browserPrefix}region-break-before');
/** Sets the value of "region-break-before" */
- void set regionBreakBefore(var value) {
+ void set regionBreakBefore(String value) {
setProperty('${_browserPrefix}region-break-before', value, '');
}
@@ -4526,7 +4805,7 @@
getPropertyValue('${_browserPrefix}region-break-inside');
/** Sets the value of "region-break-inside" */
- void set regionBreakInside(var value) {
+ void set regionBreakInside(String value) {
setProperty('${_browserPrefix}region-break-inside', value, '');
}
@@ -4535,7 +4814,7 @@
getPropertyValue('${_browserPrefix}region-overflow');
/** Sets the value of "region-overflow" */
- void set regionOverflow(var value) {
+ void set regionOverflow(String value) {
setProperty('${_browserPrefix}region-overflow', value, '');
}
@@ -4544,7 +4823,7 @@
getPropertyValue('resize');
/** Sets the value of "resize" */
- void set resize(var value) {
+ void set resize(String value) {
setProperty('resize', value, '');
}
@@ -4553,7 +4832,7 @@
getPropertyValue('right');
/** Sets the value of "right" */
- void set right(var value) {
+ void set right(String value) {
setProperty('right', value, '');
}
@@ -4562,16 +4841,52 @@
getPropertyValue('${_browserPrefix}rtl-ordering');
/** Sets the value of "rtl-ordering" */
- void set rtlOrdering(var value) {
+ void set rtlOrdering(String value) {
setProperty('${_browserPrefix}rtl-ordering', value, '');
}
+ /** Gets the value of "shape-inside" */
+ String get shapeInside =>
+ getPropertyValue('${_browserPrefix}shape-inside');
+
+ /** Sets the value of "shape-inside" */
+ void set shapeInside(String value) {
+ setProperty('${_browserPrefix}shape-inside', value, '');
+ }
+
+ /** Gets the value of "shape-margin" */
+ String get shapeMargin =>
+ getPropertyValue('${_browserPrefix}shape-margin');
+
+ /** Sets the value of "shape-margin" */
+ void set shapeMargin(String value) {
+ setProperty('${_browserPrefix}shape-margin', value, '');
+ }
+
+ /** Gets the value of "shape-outside" */
+ String get shapeOutside =>
+ getPropertyValue('${_browserPrefix}shape-outside');
+
+ /** Sets the value of "shape-outside" */
+ void set shapeOutside(String value) {
+ setProperty('${_browserPrefix}shape-outside', value, '');
+ }
+
+ /** Gets the value of "shape-padding" */
+ String get shapePadding =>
+ getPropertyValue('${_browserPrefix}shape-padding');
+
+ /** Sets the value of "shape-padding" */
+ void set shapePadding(String value) {
+ setProperty('${_browserPrefix}shape-padding', value, '');
+ }
+
/** Gets the value of "size" */
String get size =>
getPropertyValue('size');
/** Sets the value of "size" */
- void set size(var value) {
+ void set size(String value) {
setProperty('size', value, '');
}
@@ -4580,7 +4895,7 @@
getPropertyValue('speak');
/** Sets the value of "speak" */
- void set speak(var value) {
+ void set speak(String value) {
setProperty('speak', value, '');
}
@@ -4589,16 +4904,25 @@
getPropertyValue('src');
/** Sets the value of "src" */
- void set src(var value) {
+ void set src(String value) {
setProperty('src', value, '');
}
+ /** Gets the value of "tab-size" */
+ String get tabSize =>
+ getPropertyValue('tab-size');
+
+ /** Sets the value of "tab-size" */
+ void set tabSize(String value) {
+ setProperty('tab-size', value, '');
+ }
+
/** Gets the value of "table-layout" */
String get tableLayout =>
getPropertyValue('table-layout');
/** Sets the value of "table-layout" */
- void set tableLayout(var value) {
+ void set tableLayout(String value) {
setProperty('table-layout', value, '');
}
@@ -4607,7 +4931,7 @@
getPropertyValue('${_browserPrefix}tap-highlight-color');
/** Sets the value of "tap-highlight-color" */
- void set tapHighlightColor(var value) {
+ void set tapHighlightColor(String value) {
setProperty('${_browserPrefix}tap-highlight-color', value, '');
}
@@ -4616,16 +4940,25 @@
getPropertyValue('text-align');
/** Sets the value of "text-align" */
- void set textAlign(var value) {
+ void set textAlign(String value) {
setProperty('text-align', value, '');
}
+ /** Gets the value of "text-align-last" */
+ String get textAlignLast =>
+ getPropertyValue('${_browserPrefix}text-align-last');
+
+ /** Sets the value of "text-align-last" */
+ void set textAlignLast(String value) {
+ setProperty('${_browserPrefix}text-align-last', value, '');
+ }
+
/** Gets the value of "text-combine" */
String get textCombine =>
getPropertyValue('${_browserPrefix}text-combine');
/** Sets the value of "text-combine" */
- void set textCombine(var value) {
+ void set textCombine(String value) {
setProperty('${_browserPrefix}text-combine', value, '');
}
@@ -4634,16 +4967,34 @@
getPropertyValue('text-decoration');
/** Sets the value of "text-decoration" */
- void set textDecoration(var value) {
+ void set textDecoration(String value) {
setProperty('text-decoration', value, '');
}
+ /** Gets the value of "text-decoration-line" */
+ String get textDecorationLine =>
+ getPropertyValue('${_browserPrefix}text-decoration-line');
+
+ /** Sets the value of "text-decoration-line" */
+ void set textDecorationLine(String value) {
+ setProperty('${_browserPrefix}text-decoration-line', value, '');
+ }
+
+ /** Gets the value of "text-decoration-style" */
+ String get textDecorationStyle =>
+ getPropertyValue('${_browserPrefix}text-decoration-style');
+
+ /** Sets the value of "text-decoration-style" */
+ void set textDecorationStyle(String value) {
+ setProperty('${_browserPrefix}text-decoration-style', value, '');
+ }
+
/** Gets the value of "text-decorations-in-effect" */
String get textDecorationsInEffect =>
getPropertyValue('${_browserPrefix}text-decorations-in-effect');
/** Sets the value of "text-decorations-in-effect" */
- void set textDecorationsInEffect(var value) {
+ void set textDecorationsInEffect(String value) {
setProperty('${_browserPrefix}text-decorations-in-effect', value, '');
}
@@ -4652,7 +5003,7 @@
getPropertyValue('${_browserPrefix}text-emphasis');
/** Sets the value of "text-emphasis" */
- void set textEmphasis(var value) {
+ void set textEmphasis(String value) {
setProperty('${_browserPrefix}text-emphasis', value, '');
}
@@ -4661,7 +5012,7 @@
getPropertyValue('${_browserPrefix}text-emphasis-color');
/** Sets the value of "text-emphasis-color" */
- void set textEmphasisColor(var value) {
+ void set textEmphasisColor(String value) {
setProperty('${_browserPrefix}text-emphasis-color', value, '');
}
@@ -4670,7 +5021,7 @@
getPropertyValue('${_browserPrefix}text-emphasis-position');
/** Sets the value of "text-emphasis-position" */
- void set textEmphasisPosition(var value) {
+ void set textEmphasisPosition(String value) {
setProperty('${_browserPrefix}text-emphasis-position', value, '');
}
@@ -4679,7 +5030,7 @@
getPropertyValue('${_browserPrefix}text-emphasis-style');
/** Sets the value of "text-emphasis-style" */
- void set textEmphasisStyle(var value) {
+ void set textEmphasisStyle(String value) {
setProperty('${_browserPrefix}text-emphasis-style', value, '');
}
@@ -4688,7 +5039,7 @@
getPropertyValue('${_browserPrefix}text-fill-color');
/** Sets the value of "text-fill-color" */
- void set textFillColor(var value) {
+ void set textFillColor(String value) {
setProperty('${_browserPrefix}text-fill-color', value, '');
}
@@ -4697,7 +5048,7 @@
getPropertyValue('text-indent');
/** Sets the value of "text-indent" */
- void set textIndent(var value) {
+ void set textIndent(String value) {
setProperty('text-indent', value, '');
}
@@ -4706,7 +5057,7 @@
getPropertyValue('text-line-through');
/** Sets the value of "text-line-through" */
- void set textLineThrough(var value) {
+ void set textLineThrough(String value) {
setProperty('text-line-through', value, '');
}
@@ -4715,7 +5066,7 @@
getPropertyValue('text-line-through-color');
/** Sets the value of "text-line-through-color" */
- void set textLineThroughColor(var value) {
+ void set textLineThroughColor(String value) {
setProperty('text-line-through-color', value, '');
}
@@ -4724,7 +5075,7 @@
getPropertyValue('text-line-through-mode');
/** Sets the value of "text-line-through-mode" */
- void set textLineThroughMode(var value) {
+ void set textLineThroughMode(String value) {
setProperty('text-line-through-mode', value, '');
}
@@ -4733,7 +5084,7 @@
getPropertyValue('text-line-through-style');
/** Sets the value of "text-line-through-style" */
- void set textLineThroughStyle(var value) {
+ void set textLineThroughStyle(String value) {
setProperty('text-line-through-style', value, '');
}
@@ -4742,7 +5093,7 @@
getPropertyValue('text-line-through-width');
/** Sets the value of "text-line-through-width" */
- void set textLineThroughWidth(var value) {
+ void set textLineThroughWidth(String value) {
setProperty('text-line-through-width', value, '');
}
@@ -4751,7 +5102,7 @@
getPropertyValue('${_browserPrefix}text-orientation');
/** Sets the value of "text-orientation" */
- void set textOrientation(var value) {
+ void set textOrientation(String value) {
setProperty('${_browserPrefix}text-orientation', value, '');
}
@@ -4760,7 +5111,7 @@
getPropertyValue('text-overflow');
/** Sets the value of "text-overflow" */
- void set textOverflow(var value) {
+ void set textOverflow(String value) {
setProperty('text-overflow', value, '');
}
@@ -4769,7 +5120,7 @@
getPropertyValue('text-overline');
/** Sets the value of "text-overline" */
- void set textOverline(var value) {
+ void set textOverline(String value) {
setProperty('text-overline', value, '');
}
@@ -4778,7 +5129,7 @@
getPropertyValue('text-overline-color');
/** Sets the value of "text-overline-color" */
- void set textOverlineColor(var value) {
+ void set textOverlineColor(String value) {
setProperty('text-overline-color', value, '');
}
@@ -4787,7 +5138,7 @@
getPropertyValue('text-overline-mode');
/** Sets the value of "text-overline-mode" */
- void set textOverlineMode(var value) {
+ void set textOverlineMode(String value) {
setProperty('text-overline-mode', value, '');
}
@@ -4796,7 +5147,7 @@
getPropertyValue('text-overline-style');
/** Sets the value of "text-overline-style" */
- void set textOverlineStyle(var value) {
+ void set textOverlineStyle(String value) {
setProperty('text-overline-style', value, '');
}
@@ -4805,7 +5156,7 @@
getPropertyValue('text-overline-width');
/** Sets the value of "text-overline-width" */
- void set textOverlineWidth(var value) {
+ void set textOverlineWidth(String value) {
setProperty('text-overline-width', value, '');
}
@@ -4814,7 +5165,7 @@
getPropertyValue('text-rendering');
/** Sets the value of "text-rendering" */
- void set textRendering(var value) {
+ void set textRendering(String value) {
setProperty('text-rendering', value, '');
}
@@ -4823,7 +5174,7 @@
getPropertyValue('${_browserPrefix}text-security');
/** Sets the value of "text-security" */
- void set textSecurity(var value) {
+ void set textSecurity(String value) {
setProperty('${_browserPrefix}text-security', value, '');
}
@@ -4832,7 +5183,7 @@
getPropertyValue('text-shadow');
/** Sets the value of "text-shadow" */
- void set textShadow(var value) {
+ void set textShadow(String value) {
setProperty('text-shadow', value, '');
}
@@ -4841,7 +5192,7 @@
getPropertyValue('${_browserPrefix}text-size-adjust');
/** Sets the value of "text-size-adjust" */
- void set textSizeAdjust(var value) {
+ void set textSizeAdjust(String value) {
setProperty('${_browserPrefix}text-size-adjust', value, '');
}
@@ -4850,7 +5201,7 @@
getPropertyValue('${_browserPrefix}text-stroke');
/** Sets the value of "text-stroke" */
- void set textStroke(var value) {
+ void set textStroke(String value) {
setProperty('${_browserPrefix}text-stroke', value, '');
}
@@ -4859,7 +5210,7 @@
getPropertyValue('${_browserPrefix}text-stroke-color');
/** Sets the value of "text-stroke-color" */
- void set textStrokeColor(var value) {
+ void set textStrokeColor(String value) {
setProperty('${_browserPrefix}text-stroke-color', value, '');
}
@@ -4868,7 +5219,7 @@
getPropertyValue('${_browserPrefix}text-stroke-width');
/** Sets the value of "text-stroke-width" */
- void set textStrokeWidth(var value) {
+ void set textStrokeWidth(String value) {
setProperty('${_browserPrefix}text-stroke-width', value, '');
}
@@ -4877,7 +5228,7 @@
getPropertyValue('text-transform');
/** Sets the value of "text-transform" */
- void set textTransform(var value) {
+ void set textTransform(String value) {
setProperty('text-transform', value, '');
}
@@ -4886,7 +5237,7 @@
getPropertyValue('text-underline');
/** Sets the value of "text-underline" */
- void set textUnderline(var value) {
+ void set textUnderline(String value) {
setProperty('text-underline', value, '');
}
@@ -4895,7 +5246,7 @@
getPropertyValue('text-underline-color');
/** Sets the value of "text-underline-color" */
- void set textUnderlineColor(var value) {
+ void set textUnderlineColor(String value) {
setProperty('text-underline-color', value, '');
}
@@ -4904,7 +5255,7 @@
getPropertyValue('text-underline-mode');
/** Sets the value of "text-underline-mode" */
- void set textUnderlineMode(var value) {
+ void set textUnderlineMode(String value) {
setProperty('text-underline-mode', value, '');
}
@@ -4913,7 +5264,7 @@
getPropertyValue('text-underline-style');
/** Sets the value of "text-underline-style" */
- void set textUnderlineStyle(var value) {
+ void set textUnderlineStyle(String value) {
setProperty('text-underline-style', value, '');
}
@@ -4922,7 +5273,7 @@
getPropertyValue('text-underline-width');
/** Sets the value of "text-underline-width" */
- void set textUnderlineWidth(var value) {
+ void set textUnderlineWidth(String value) {
setProperty('text-underline-width', value, '');
}
@@ -4931,7 +5282,7 @@
getPropertyValue('top');
/** Sets the value of "top" */
- void set top(var value) {
+ void set top(String value) {
setProperty('top', value, '');
}
@@ -4940,7 +5291,7 @@
getPropertyValue('${_browserPrefix}transform');
/** Sets the value of "transform" */
- void set transform(var value) {
+ void set transform(String value) {
setProperty('${_browserPrefix}transform', value, '');
}
@@ -4949,7 +5300,7 @@
getPropertyValue('${_browserPrefix}transform-origin');
/** Sets the value of "transform-origin" */
- void set transformOrigin(var value) {
+ void set transformOrigin(String value) {
setProperty('${_browserPrefix}transform-origin', value, '');
}
@@ -4958,7 +5309,7 @@
getPropertyValue('${_browserPrefix}transform-origin-x');
/** Sets the value of "transform-origin-x" */
- void set transformOriginX(var value) {
+ void set transformOriginX(String value) {
setProperty('${_browserPrefix}transform-origin-x', value, '');
}
@@ -4967,7 +5318,7 @@
getPropertyValue('${_browserPrefix}transform-origin-y');
/** Sets the value of "transform-origin-y" */
- void set transformOriginY(var value) {
+ void set transformOriginY(String value) {
setProperty('${_browserPrefix}transform-origin-y', value, '');
}
@@ -4976,7 +5327,7 @@
getPropertyValue('${_browserPrefix}transform-origin-z');
/** Sets the value of "transform-origin-z" */
- void set transformOriginZ(var value) {
+ void set transformOriginZ(String value) {
setProperty('${_browserPrefix}transform-origin-z', value, '');
}
@@ -4985,7 +5336,7 @@
getPropertyValue('${_browserPrefix}transform-style');
/** Sets the value of "transform-style" */
- void set transformStyle(var value) {
+ void set transformStyle(String value) {
setProperty('${_browserPrefix}transform-style', value, '');
}
@@ -4994,7 +5345,7 @@
getPropertyValue('${_browserPrefix}transition');
/** Sets the value of "transition" */
- void set transition(var value) {
+ void set transition(String value) {
setProperty('${_browserPrefix}transition', value, '');
}
@@ -5003,7 +5354,7 @@
getPropertyValue('${_browserPrefix}transition-delay');
/** Sets the value of "transition-delay" */
- void set transitionDelay(var value) {
+ void set transitionDelay(String value) {
setProperty('${_browserPrefix}transition-delay', value, '');
}
@@ -5012,7 +5363,7 @@
getPropertyValue('${_browserPrefix}transition-duration');
/** Sets the value of "transition-duration" */
- void set transitionDuration(var value) {
+ void set transitionDuration(String value) {
setProperty('${_browserPrefix}transition-duration', value, '');
}
@@ -5021,7 +5372,7 @@
getPropertyValue('${_browserPrefix}transition-property');
/** Sets the value of "transition-property" */
- void set transitionProperty(var value) {
+ void set transitionProperty(String value) {
setProperty('${_browserPrefix}transition-property', value, '');
}
@@ -5030,7 +5381,7 @@
getPropertyValue('${_browserPrefix}transition-timing-function');
/** Sets the value of "transition-timing-function" */
- void set transitionTimingFunction(var value) {
+ void set transitionTimingFunction(String value) {
setProperty('${_browserPrefix}transition-timing-function', value, '');
}
@@ -5039,7 +5390,7 @@
getPropertyValue('unicode-bidi');
/** Sets the value of "unicode-bidi" */
- void set unicodeBidi(var value) {
+ void set unicodeBidi(String value) {
setProperty('unicode-bidi', value, '');
}
@@ -5048,7 +5399,7 @@
getPropertyValue('unicode-range');
/** Sets the value of "unicode-range" */
- void set unicodeRange(var value) {
+ void set unicodeRange(String value) {
setProperty('unicode-range', value, '');
}
@@ -5057,7 +5408,7 @@
getPropertyValue('${_browserPrefix}user-drag');
/** Sets the value of "user-drag" */
- void set userDrag(var value) {
+ void set userDrag(String value) {
setProperty('${_browserPrefix}user-drag', value, '');
}
@@ -5066,7 +5417,7 @@
getPropertyValue('${_browserPrefix}user-modify');
/** Sets the value of "user-modify" */
- void set userModify(var value) {
+ void set userModify(String value) {
setProperty('${_browserPrefix}user-modify', value, '');
}
@@ -5075,16 +5426,25 @@
getPropertyValue('${_browserPrefix}user-select');
/** Sets the value of "user-select" */
- void set userSelect(var value) {
+ void set userSelect(String value) {
setProperty('${_browserPrefix}user-select', value, '');
}
+ /** Gets the value of "user-zoom" */
+ String get userZoom =>
+ getPropertyValue('user-zoom');
+
+ /** Sets the value of "user-zoom" */
+ void set userZoom(String value) {
+ setProperty('user-zoom', value, '');
+ }
+
/** Gets the value of "vertical-align" */
String get verticalAlign =>
getPropertyValue('vertical-align');
/** Sets the value of "vertical-align" */
- void set verticalAlign(var value) {
+ void set verticalAlign(String value) {
setProperty('vertical-align', value, '');
}
@@ -5093,7 +5453,7 @@
getPropertyValue('visibility');
/** Sets the value of "visibility" */
- void set visibility(var value) {
+ void set visibility(String value) {
setProperty('visibility', value, '');
}
@@ -5102,7 +5462,7 @@
getPropertyValue('white-space');
/** Sets the value of "white-space" */
- void set whiteSpace(var value) {
+ void set whiteSpace(String value) {
setProperty('white-space', value, '');
}
@@ -5111,7 +5471,7 @@
getPropertyValue('widows');
/** Sets the value of "widows" */
- void set widows(var value) {
+ void set widows(String value) {
setProperty('widows', value, '');
}
@@ -5120,7 +5480,7 @@
getPropertyValue('width');
/** Sets the value of "width" */
- void set width(var value) {
+ void set width(String value) {
setProperty('width', value, '');
}
@@ -5129,7 +5489,7 @@
getPropertyValue('word-break');
/** Sets the value of "word-break" */
- void set wordBreak(var value) {
+ void set wordBreak(String value) {
setProperty('word-break', value, '');
}
@@ -5138,7 +5498,7 @@
getPropertyValue('word-spacing');
/** Sets the value of "word-spacing" */
- void set wordSpacing(var value) {
+ void set wordSpacing(String value) {
setProperty('word-spacing', value, '');
}
@@ -5147,17 +5507,35 @@
getPropertyValue('word-wrap');
/** Sets the value of "word-wrap" */
- void set wordWrap(var value) {
+ void set wordWrap(String value) {
setProperty('word-wrap', value, '');
}
- /** Gets the value of "wrap-shape" */
- String get wrapShape =>
- getPropertyValue('${_browserPrefix}wrap-shape');
+ /** Gets the value of "wrap" */
+ String get wrap =>
+ getPropertyValue('${_browserPrefix}wrap');
- /** Sets the value of "wrap-shape" */
- void set wrapShape(var value) {
- setProperty('${_browserPrefix}wrap-shape', value, '');
+ /** Sets the value of "wrap" */
+ void set wrap(String value) {
+ setProperty('${_browserPrefix}wrap', value, '');
+ }
+
+ /** Gets the value of "wrap-flow" */
+ String get wrapFlow =>
+ getPropertyValue('${_browserPrefix}wrap-flow');
+
+ /** Sets the value of "wrap-flow" */
+ void set wrapFlow(String value) {
+ setProperty('${_browserPrefix}wrap-flow', value, '');
+ }
+
+ /** Gets the value of "wrap-through" */
+ String get wrapThrough =>
+ getPropertyValue('${_browserPrefix}wrap-through');
+
+ /** Sets the value of "wrap-through" */
+ void set wrapThrough(String value) {
+ setProperty('${_browserPrefix}wrap-through', value, '');
}
/** Gets the value of "writing-mode" */
@@ -5165,7 +5543,7 @@
getPropertyValue('${_browserPrefix}writing-mode');
/** Sets the value of "writing-mode" */
- void set writingMode(var value) {
+ void set writingMode(String value) {
setProperty('${_browserPrefix}writing-mode', value, '');
}
@@ -5174,7 +5552,7 @@
getPropertyValue('z-index');
/** Sets the value of "z-index" */
- void set zIndex(var value) {
+ void set zIndex(String value) {
setProperty('z-index', value, '');
}
@@ -5183,7 +5561,7 @@
getPropertyValue('zoom');
/** Sets the value of "zoom" */
- void set zoom(var value) {
+ void set zoom(String value) {
setProperty('zoom', value, '');
}
}
@@ -5372,13 +5750,10 @@
class CanvasElement extends _Element_Merged {
factory CanvasElement({int width, int height}) {
- if (!?width) {
- return _Elements.createCanvasElement();
- }
- if (!?height) {
- return _Elements.createCanvasElement(width);
- }
- return _Elements.createCanvasElement(width, height);
+ var e = document.$dom_createElement("canvas");
+ if (width != null) e.width = width;
+ if (height != null) e.height = height;
+ return e;
}
CanvasElement.internal(): super.internal();
@@ -6464,7 +6839,7 @@
/// @domName HTMLContentElement
class ContentElement extends _Element_Merged {
- factory ContentElement() => _Elements.createContentElement();
+ factory ContentElement() => document.$dom_createElement("content");
ContentElement.internal(): super.internal();
@@ -6628,7 +7003,7 @@
/// @domName HTMLDListElement
class DListElement extends _Element_Merged {
- factory DListElement() => _Elements.createDListElement();
+ factory DListElement() => document.$dom_createElement("dl");
DListElement.internal(): super.internal();
@@ -6651,9 +7026,7 @@
class DOMApplicationCache extends EventTarget {
DOMApplicationCache.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
DOMApplicationCacheEvents get on =>
new DOMApplicationCacheEvents(this);
@@ -6987,6 +7360,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ DOMMimeType get first => this[0];
+
DOMMimeType get last => this[length - 1];
DOMMimeType removeLast() {
@@ -7148,6 +7523,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ DOMPlugin get first => this[0];
+
DOMPlugin get last => this[length - 1];
DOMPlugin removeLast() {
@@ -7385,7 +7762,7 @@
/// @domName HTMLDataListElement
class DataListElement extends _Element_Merged {
- factory DataListElement() => _Elements.createDataListElement();
+ factory DataListElement() => document.$dom_createElement("datalist");
DataListElement.internal(): super.internal();
@@ -7772,9 +8149,7 @@
class DedicatedWorkerContext extends WorkerContext {
DedicatedWorkerContext.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
DedicatedWorkerContextEvents get on =>
new DedicatedWorkerContextEvents(this);
@@ -7815,7 +8190,7 @@
/// @domName HTMLDetailsElement
class DetailsElement extends _Element_Merged {
- factory DetailsElement() => _Elements.createDetailsElement();
+ factory DetailsElement() => document.$dom_createElement("details");
DetailsElement.internal(): super.internal();
@@ -7993,7 +8368,7 @@
/// @domName HTMLDivElement
class DivElement extends _Element_Merged {
- factory DivElement() => _Elements.createDivElement();
+ factory DivElement() => document.$dom_createElement("div");
DivElement.internal(): super.internal();
}
@@ -8007,9 +8382,7 @@
Document.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
DocumentEvents get on =>
new DocumentEvents(this);
@@ -8388,24 +8761,30 @@
_DocumentFragmentFactoryProvider.createDocumentFragment_html(html);
factory DocumentFragment.svg(String svgContent) =>
- new _DocumentFragmentFactoryProvider.createDocumentFragment_svg(svgContent);
+ _DocumentFragmentFactoryProvider.createDocumentFragment_svg(svgContent);
- List<Element> _elements;
-
- List<Element> get elements {
- if (_elements == null) {
- _elements = new FilteredElementList(this);
- }
- return _elements;
- }
+ List<Element> get elements => this.children;
// TODO: The type of value should be Collection<Element>. See http://b/5392897
void set elements(value) {
+ this.children = value;
+ }
+
+ List<Element> _children;
+
+ List<Element> get children {
+ if (_children == null) {
+ _children = new FilteredElementList(this);
+ }
+ return _children;
+ }
+
+ void set children(Collection<Element> value) {
// Copy list first since we don't want liveness during iteration.
List copy = new List.from(value);
- final elements = this.elements;
- elements.clear();
- elements.addAll(copy);
+ var children = this.children;
+ children.clear();
+ children.addAll(copy);
}
Element query(String selectors) => $dom_querySelector(selectors);
@@ -8615,9 +8994,7 @@
DocumentFragment.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
ElementEvents get on =>
new ElementEvents(this);
@@ -8868,6 +9245,11 @@
return result;
}
+ Element get first {
+ return _element.$dom_firstElementChild;
+ }
+
+
Element get last {
return _element.$dom_lastElementChild;
}
@@ -8882,10 +9264,6 @@
_FrozenElementList._wrap(this._nodeList);
- Element get first {
- return _nodeList[0];
- }
-
bool contains(Element element) {
for (Element el in this) {
if (el == element) return true;
@@ -8994,6 +9372,8 @@
throw new UnsupportedError('');
}
+ Element get first => _nodeList.first;
+
Element get last => _nodeList.last;
}
@@ -9021,16 +9401,7 @@
bool get hasNext => _index < _list.length;
}
-/**
- * All your attribute manipulation needs in one place.
- * Extends the regular Map interface by automatically coercing non-string
- * values to strings.
- */
-abstract class AttributeMap implements Map<String, String> {
- void operator []=(String key, value);
-}
-
-class _ElementAttributeMap extends AttributeMap {
+class _ElementAttributeMap implements Map<String, String> {
final Element _element;
@@ -9125,7 +9496,7 @@
* Provides a Map abstraction on top of data-* attributes, similar to the
* dataSet in the old DOM.
*/
-class _DataAttributeMap extends AttributeMap {
+class _DataAttributeMap implements Map<String, String> {
final Map<String, String> $dom_attributes;
@@ -9238,7 +9609,7 @@
String toString() => "($left, $top, $width, $height)";
}
-class Element extends Node implements ElementTraversal {
+abstract class Element extends Node implements ElementTraversal {
factory Element.html(String html) =>
_ElementFactoryProvider.createElement_html(html);
@@ -9249,7 +9620,7 @@
* @domName Element.hasAttribute, Element.getAttribute, Element.setAttribute,
* Element.removeAttribute
*/
- _ElementAttributeMap get attributes => new _ElementAttributeMap(this);
+ Map<String, String> get attributes => new _ElementAttributeMap(this);
void set attributes(Map<String, String> value) {
Map<String, String> attributes = this.attributes;
@@ -9260,16 +9631,27 @@
}
void set elements(Collection<Element> value) {
- final elements = this.elements;
- elements.clear();
- elements.addAll(value);
+ this.children = value;
}
/**
+ * Deprecated, use [children] instead.
+ */
+ List<Element> get elements => this.children;
+
+ /**
* @domName childElementCount, firstElementChild, lastElementChild,
* children, Node.nodes.add
*/
- List<Element> get elements => new _ChildrenElementList._wrap(this);
+ List<Element> get children => new _ChildrenElementList._wrap(this);
+
+ void set children(Collection<Element> value) {
+ // Copy list first since we don't want liveness during iteration.
+ List copy = new List.from(value);
+ var children = this.children;
+ children.clear();
+ children.addAll(copy);
+ }
Element query(String selectors) => $dom_querySelector(selectors);
@@ -9355,67 +9737,65 @@
Element.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
ElementEvents get on =>
new ElementEvents(this);
- /** @domName HTMLElement.children */
+ /// @domName HTMLElement.children; @docsEditable true
HTMLCollection get $dom_children;
- /** @domName HTMLElement.contentEditable */
+ /// @domName HTMLElement.contentEditable; @docsEditable true
String contentEditable;
- /** @domName HTMLElement.dir */
+ /// @domName HTMLElement.dir; @docsEditable true
String dir;
- /** @domName HTMLElement.draggable */
+ /// @domName HTMLElement.draggable; @docsEditable true
bool draggable;
- /** @domName HTMLElement.hidden */
+ /// @domName HTMLElement.hidden; @docsEditable true
bool hidden;
- /** @domName HTMLElement.id */
+ /// @domName HTMLElement.id; @docsEditable true
String id;
- /** @domName HTMLElement.innerHTML */
+ /// @domName HTMLElement.innerHTML; @docsEditable true
String innerHTML;
- /** @domName HTMLElement.isContentEditable */
+ /// @domName HTMLElement.isContentEditable; @docsEditable true
bool get isContentEditable;
- /** @domName HTMLElement.lang */
+ /// @domName HTMLElement.lang; @docsEditable true
String lang;
- /** @domName HTMLElement.outerHTML */
+ /// @domName HTMLElement.outerHTML; @docsEditable true
String get outerHTML;
- /** @domName HTMLElement.spellcheck */
+ /// @domName HTMLElement.spellcheck; @docsEditable true
bool spellcheck;
- /** @domName HTMLElement.tabIndex */
+ /// @domName HTMLElement.tabIndex; @docsEditable true
int tabIndex;
- /** @domName HTMLElement.title */
+ /// @domName HTMLElement.title; @docsEditable true
String title;
- /** @domName HTMLElement.translate */
+ /// @domName HTMLElement.translate; @docsEditable true
bool translate;
- /** @domName HTMLElement.webkitdropzone */
+ /// @domName HTMLElement.webkitdropzone; @docsEditable true
String webkitdropzone;
- /** @domName HTMLElement.click */
+ /// @domName HTMLElement.click; @docsEditable true
void click();
- /** @domName HTMLElement.insertAdjacentElement */
+ /// @domName HTMLElement.insertAdjacentElement; @docsEditable true
Element insertAdjacentElement(String where, Element element);
- /** @domName HTMLElement.insertAdjacentHTML */
+ /// @domName HTMLElement.insertAdjacentHTML; @docsEditable true
void insertAdjacentHTML(String where, String html);
- /** @domName HTMLElement.insertAdjacentText */
+ /// @domName HTMLElement.insertAdjacentText; @docsEditable true
void insertAdjacentText(String where, String text);
static const int ALLOW_KEYBOARD_INPUT = 1;
@@ -9654,15 +10034,15 @@
temp.innerHTML = html;
Element element;
- if (temp.elements.length == 1) {
- element = temp.elements[0];
- } else if (parentTag == 'html' && temp.elements.length == 2) {
+ if (temp.children.length == 1) {
+ element = temp.children[0];
+ } else if (parentTag == 'html' && temp.children.length == 2) {
// Work around for edge case in WebKit and possibly other browsers where
// both body and head elements are created even though the inner html
// only contains a head or body element.
- element = temp.elements[tag == 'head' ? 0 : 1];
+ element = temp.children[tag == 'head' ? 0 : 1];
} else {
- throw new ArgumentError('HTML had ${temp.elements.length} '
+ throw new ArgumentError('HTML had ${temp.children.length} '
'top level elements but 1 expected');
}
element.remove();
@@ -9843,7 +10223,7 @@
/// @domName HTMLEmbedElement
class EmbedElement extends _Element_Merged {
- factory EmbedElement() => _Elements.createEmbedElement();
+ factory EmbedElement() => document.$dom_createElement("embed");
EmbedElement.internal(): super.internal();
@@ -10263,9 +10643,7 @@
factory EventSource(String scriptUrl) => _EventSourceFactoryProvider.createEventSource(scriptUrl);
EventSource.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
EventSourceEvents get on =>
new EventSourceEvents(this);
@@ -10394,7 +10772,7 @@
/// @domName HTMLFieldSetElement
class FieldSetElement extends _Element_Merged {
- factory FieldSetElement() => _Elements.createFieldSetElement();
+ factory FieldSetElement() => document.$dom_createElement("fieldset");
FieldSetElement.internal(): super.internal();
@@ -10623,9 +11001,7 @@
factory FileReader() => _FileReaderFactoryProvider.createFileReader();
FileReader.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
FileReaderEvents get on =>
new FileReaderEvents(this);
@@ -10768,9 +11144,7 @@
class FileWriter extends EventTarget {
FileWriter.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
FileWriterEvents get on =>
new FileWriterEvents(this);
@@ -10969,6 +11343,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ num get first => this[0];
+
num get last => this[length - 1];
num removeLast() {
@@ -11100,6 +11476,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ num get first => this[0];
+
num get last => this[length - 1];
num removeLast() {
@@ -11212,7 +11590,7 @@
/// @domName HTMLFormElement
class FormElement extends _Element_Merged {
- factory FormElement() => _Elements.createFormElement();
+ factory FormElement() => document.$dom_createElement("form");
FormElement.internal(): super.internal();
@@ -11411,9 +11789,7 @@
class FrameSetElement extends _Element_Merged {
FrameSetElement.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
FrameSetElementEvents get on =>
new FrameSetElementEvents(this);
@@ -11566,7 +11942,7 @@
/// @domName HTMLHRElement
class HRElement extends _Element_Merged {
- factory HRElement() => _Elements.createHRElement();
+ factory HRElement() => document.$dom_createElement("hr");
HRElement.internal(): super.internal();
@@ -11677,6 +12053,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ Node get first => this[0];
+
Node get last => this[length - 1];
Node removeLast() {
@@ -11788,6 +12166,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ Node get first => this[0];
+
Node get last => this[length - 1];
Node removeLast() {
@@ -11890,7 +12270,7 @@
/// @domName HTMLHeadElement
class HeadElement extends _Element_Merged {
- factory HeadElement() => _Elements.createHeadElement();
+ factory HeadElement() => document.$dom_createElement("head");
HeadElement.internal(): super.internal();
@@ -11912,17 +12292,17 @@
/// @domName HTMLHeadingElement
class HeadingElement extends _Element_Merged {
- factory HeadingElement.h1() => _Elements.createHeadingElement_h1();
+ factory HeadingElement.h1() => document.$dom_createElement("h1");
- factory HeadingElement.h2() => _Elements.createHeadingElement_h2();
+ factory HeadingElement.h2() => document.$dom_createElement("h2");
- factory HeadingElement.h3() => _Elements.createHeadingElement_h3();
+ factory HeadingElement.h3() => document.$dom_createElement("h3");
- factory HeadingElement.h4() => _Elements.createHeadingElement_h4();
+ factory HeadingElement.h4() => document.$dom_createElement("h4");
- factory HeadingElement.h5() => _Elements.createHeadingElement_h5();
+ factory HeadingElement.h5() => document.$dom_createElement("h5");
- factory HeadingElement.h6() => _Elements.createHeadingElement_h6();
+ factory HeadingElement.h6() => document.$dom_createElement("h6");
HeadingElement.internal(): super.internal();
@@ -12030,7 +12410,7 @@
/// @domName HTMLHtmlElement
class HtmlElement extends _Element_Merged {
- factory HtmlElement() => _Elements.createHtmlElement();
+ factory HtmlElement() => document.$dom_createElement("html");
HtmlElement.internal(): super.internal();
}
@@ -12040,19 +12420,19 @@
class HttpRequest extends EventTarget {
- factory HttpRequest.get(String url, onSuccess(HttpRequest request)) =>
- _HttpRequestFactoryProvider.createHttpRequest_get(url, onSuccess);
+ factory HttpRequest.get(String url, onComplete(HttpRequest request)) =>
+ _HttpRequestFactoryProvider.createHttpRequest_get(url, onComplete);
- factory HttpRequest.getWithCredentials(String url, onSuccess(HttpRequest request)) =>
- _HttpRequestFactoryProvider.createHttpRequestgetWithCredentials(url, onSuccess);
+ factory HttpRequest.getWithCredentials(String url,
+ onComplete(HttpRequest request)) =>
+ _HttpRequestFactoryProvider.createHttpRequest_getWithCredentials(url,
+ onComplete);
factory HttpRequest() => _HttpRequestFactoryProvider.createHttpRequest();
HttpRequest.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
HttpRequestEvents get on =>
new HttpRequestEvents(this);
@@ -12232,9 +12612,7 @@
class HttpRequestUpload extends EventTarget {
HttpRequestUpload.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
HttpRequestUploadEvents get on =>
new HttpRequestUploadEvents(this);
@@ -12370,9 +12748,7 @@
class IDBDatabase extends EventTarget {
IDBDatabase.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
IDBDatabaseEvents get on =>
new IDBDatabaseEvents(this);
@@ -13026,9 +13402,7 @@
class IDBOpenDBRequest extends IDBRequest implements EventTarget {
IDBOpenDBRequest.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
IDBOpenDBRequestEvents get on =>
new IDBOpenDBRequestEvents(this);
@@ -13052,9 +13426,7 @@
class IDBRequest extends EventTarget {
IDBRequest.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
IDBRequestEvents get on =>
new IDBRequestEvents(this);
@@ -13118,9 +13490,7 @@
class IDBTransaction extends EventTarget {
IDBTransaction.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
IDBTransactionEvents get on =>
new IDBTransactionEvents(this);
@@ -13220,9 +13590,7 @@
class IDBVersionChangeRequest extends IDBRequest implements EventTarget {
IDBVersionChangeRequest.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
IDBVersionChangeRequestEvents get on =>
new IDBVersionChangeRequestEvents(this);
@@ -13243,7 +13611,7 @@
/// @domName HTMLIFrameElement
class IFrameElement extends _Element_Merged {
- factory IFrameElement() => _Elements.createIFrameElement();
+ factory IFrameElement() => document.$dom_createElement("iframe");
IFrameElement.internal(): super.internal();
@@ -13412,16 +13780,11 @@
class ImageElement extends _Element_Merged {
factory ImageElement({String src, int width, int height}) {
- if (!?src) {
- return _Elements.createImageElement();
- }
- if (!?width) {
- return _Elements.createImageElement(src);
- }
- if (!?height) {
- return _Elements.createImageElement(src, width);
- }
- return _Elements.createImageElement(src, width, height);
+ var e = document.$dom_createElement("img");
+ if (src != null) e.src = src;
+ if (width != null) e.width = width;
+ if (height != null) e.height = height;
+ return e;
}
ImageElement.internal(): super.internal();
@@ -13569,16 +13932,13 @@
class InputElement extends _Element_Merged {
factory InputElement({String type}) {
- if (!?type) {
- return _Elements.createInputElement();
- }
- return _Elements.createInputElement(type);
+ var e = document.$dom_createElement("input");
+ if (type != null) e.type = type;
+ return e;
}
InputElement.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
InputElementEvents get on =>
new InputElementEvents(this);
@@ -14117,6 +14477,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ int get first => this[0];
+
int get last => this[length - 1];
int removeLast() {
@@ -14248,6 +14610,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ int get first => this[0];
+
int get last => this[length - 1];
int removeLast() {
@@ -14379,6 +14743,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ int get first => this[0];
+
int get last => this[length - 1];
int removeLast() {
@@ -14542,7 +14908,7 @@
/// @domName HTMLKeygenElement
class KeygenElement extends _Element_Merged {
- factory KeygenElement() => _Elements.createKeygenElement();
+ factory KeygenElement() => document.$dom_createElement("keygen");
KeygenElement.internal(): super.internal();
@@ -14628,7 +14994,7 @@
/// @domName HTMLLIElement
class LIElement extends _Element_Merged {
- factory LIElement() => _Elements.createLIElement();
+ factory LIElement() => document.$dom_createElement("li");
LIElement.internal(): super.internal();
@@ -14658,7 +15024,7 @@
/// @domName HTMLLabelElement
class LabelElement extends _Element_Merged {
- factory LabelElement() => _Elements.createLabelElement();
+ factory LabelElement() => document.$dom_createElement("label");
LabelElement.internal(): super.internal();
@@ -14688,7 +15054,7 @@
/// @domName HTMLLegendElement
class LegendElement extends _Element_Merged {
- factory LegendElement() => _Elements.createLegendElement();
+ factory LegendElement() => document.$dom_createElement("legend");
LegendElement.internal(): super.internal();
@@ -14714,7 +15080,7 @@
/// @domName HTMLLinkElement
class LinkElement extends _Element_Merged {
- factory LinkElement() => _Elements.createLinkElement();
+ factory LinkElement() => document.$dom_createElement("link");
LinkElement.internal(): super.internal();
@@ -14979,7 +15345,7 @@
* registered under [name].
*/
lookupPort(String name) {
- var port = JSON.parse(localStorage['dart-port:$name']);
+ var port = JSON.parse(document.documentElement.attributes['dart-port:$name']);
return _deserialize(port);
}
@@ -14990,14 +15356,12 @@
*/
registerPort(String name, var port) {
var serialized = _serialize(port);
- localStorage['dart-port:$name'] = JSON.stringify(serialized);
+ document.documentElement.attributes['dart-port:$name'] = JSON.stringify(serialized);
}
LocalWindow.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
LocalWindowEvents get on =>
new LocalWindowEvents(this);
@@ -15230,10 +15594,6 @@
String atob(String string) native "DOMWindow_atob_Callback";
- /** @domName DOMWindow.blur */
- void blur() native "DOMWindow_blur_Callback";
-
-
/** @domName DOMWindow.btoa */
String btoa(String string) native "DOMWindow_btoa_Callback";
@@ -15270,10 +15630,6 @@
bool find(String string, bool caseSensitive, bool backwards, bool wrap, bool wholeWord, bool searchInFrames, bool showDialog) native "DOMWindow_find_Callback";
- /** @domName DOMWindow.focus */
- void focus() native "DOMWindow_focus_Callback";
-
-
/** @domName DOMWindow.getComputedStyle */
CSSStyleDeclaration $dom_getComputedStyle(Element element, String pseudoElement) native "DOMWindow_getComputedStyle_Callback";
@@ -15546,7 +15902,7 @@
/// @domName HTMLMapElement
class MapElement extends _Element_Merged {
- factory MapElement() => _Elements.createMapElement();
+ factory MapElement() => document.$dom_createElement("map");
MapElement.internal(): super.internal();
@@ -15775,9 +16131,7 @@
class MediaElement extends _Element_Merged {
MediaElement.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
MediaElementEvents get on =>
new MediaElementEvents(this);
@@ -16377,9 +16731,7 @@
factory MediaStream(MediaStreamTrackList audioTracks, MediaStreamTrackList videoTracks) => _MediaStreamFactoryProvider.createMediaStream(audioTracks, videoTracks);
MediaStream.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
MediaStreamEvents get on =>
new MediaStreamEvents(this);
@@ -16465,9 +16817,7 @@
class MediaStreamTrack extends EventTarget {
MediaStreamTrack.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
MediaStreamTrackEvents get on =>
new MediaStreamTrackEvents(this);
@@ -16547,9 +16897,7 @@
class MediaStreamTrackList extends EventTarget {
MediaStreamTrackList.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
MediaStreamTrackListEvents get on =>
new MediaStreamTrackListEvents(this);
@@ -16624,7 +16972,7 @@
/// @domName HTMLMenuElement
class MenuElement extends _Element_Merged {
- factory MenuElement() => _Elements.createMenuElement();
+ factory MenuElement() => document.$dom_createElement("menu");
MenuElement.internal(): super.internal();
@@ -16709,9 +17057,7 @@
class MessagePort extends EventTarget {
MessagePort.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
MessagePortEvents get on =>
new MessagePortEvents(this);
@@ -16828,7 +17174,7 @@
/// @domName HTMLMeterElement
class MeterElement extends _Element_Merged {
- factory MeterElement() => _Elements.createMeterElement();
+ factory MeterElement() => document.$dom_createElement("meter");
MeterElement.internal(): super.internal();
@@ -17270,6 +17616,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ Node get first => this[0];
+
Node get last => this[length - 1];
Node removeLast() {
@@ -17509,7 +17857,7 @@
Collection map(f(Node element)) => _Collections.map(this, [], f);
Collection<Node> filter(bool f(Node element)) =>
- new _NodeListWrapper(_Collections.filter(this, <Node>[], f));
+ _Collections.filter(this, <Node>[], f);
bool every(bool f(Node element)) => _Collections.every(this, f);
@@ -17545,7 +17893,7 @@
"Cannot insertRange on immutable List.");
}
List<Node> getRange(int start, int rangeLength) =>
- new _NodeListWrapper(_Lists.getRange(this, start, rangeLength, <Node>[]));
+ _Lists.getRange(this, start, rangeLength, <Node>[]);
// -- end List<Node> mixins.
@@ -17821,195 +18169,6 @@
// 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.
-
-// TODO(nweiz): when all implementations we target have the same name for the
-// implementation of List<E>, extend that rather than wrapping.
-class _ListWrapper<E> implements List<E> {
- List _list;
-
- _ListWrapper(List this._list);
-
- Iterator<E> iterator() => _list.iterator();
-
- bool contains(E element) => _list.contains(element);
-
- void forEach(void f(E element)) => _list.forEach(f);
-
- Collection map(f(E element)) => _list.map(f);
-
- List<E> filter(bool f(E element)) => _list.filter(f);
-
- bool every(bool f(E element)) => _list.every(f);
-
- bool some(bool f(E element)) => _list.some(f);
-
- bool get isEmpty => _list.isEmpty;
-
- int get length => _list.length;
-
- E operator [](int index) => _list[index];
-
- void operator []=(int index, E value) { _list[index] = value; }
-
- void set length(int newLength) { _list.length = newLength; }
-
- void add(E value) => _list.add(value);
-
- void addLast(E value) => _list.addLast(value);
-
- void addAll(Collection<E> collection) => _list.addAll(collection);
-
- void sort([Comparator<E> compare = Comparable.compare]) => _list.sort(compare);
-
- int indexOf(E element, [int start = 0]) => _list.indexOf(element, start);
-
- int lastIndexOf(E element, [int start = 0]) =>
- _list.lastIndexOf(element, start);
-
- void clear() => _list.clear();
-
- E removeLast() => _list.removeLast();
-
- E get last => _list.last;
-
- List<E> getRange(int start, int rangeLength) =>
- _list.getRange(start, rangeLength);
-
- void setRange(int start, int rangeLength, List<E> from, [int startFrom = 0])
- => _list.setRange(start, rangeLength, from, startFrom);
-
- void removeRange(int start, int rangeLength) =>
- _list.removeRange(start, rangeLength);
-
- void insertRange(int start, int rangeLength, [E initialValue = null]) =>
- _list.insertRange(start, rangeLength, initialValue);
-
- E get first => _list[0];
-}
-
-/**
- * This class is used to insure the results of list operations are NodeLists
- * instead of lists.
- */
-class _NodeListWrapper extends _ListWrapper<Node> implements List {
- _NodeListWrapper(List list) : super(list);
-
- List<Node> filter(bool f(Node element)) =>
- new _NodeListWrapper(_list.filter(f));
-
- List<Node> getRange(int start, int rangeLength) =>
- new _NodeListWrapper(_list.getRange(start, rangeLength));
-}
-
-class NodeList extends NativeFieldWrapperClass1 implements List<Node> {
- Node _parent;
-
- // -- start List<Node> mixins.
- // Node is the element type.
-
- // From Iterable<Node>:
-
- Iterator<Node> iterator() {
- // Note: NodeLists are not fixed size. And most probably length shouldn't
- // be cached in both iterator _and_ forEach method. For now caching it
- // for consistency.
- return new FixedSizeListIterator<Node>(this);
- }
-
- // From Collection<Node>:
-
- void add(Node value) {
- _parent.$dom_appendChild(value);
- }
-
- void addLast(Node value) {
- _parent.$dom_appendChild(value);
- }
-
- void addAll(Collection<Node> collection) {
- for (Node node in collection) {
- _parent.$dom_appendChild(node);
- }
- }
-
- Node removeLast() {
- final result = this.last;
- if (result != null) {
- _parent.$dom_removeChild(result);
- }
- return result;
- }
-
- void clear() {
- _parent.text = '';
- }
-
- void operator []=(int index, Node value) {
- _parent.$dom_replaceChild(value, this[index]);
- }
-
- bool contains(Node element) => _Collections.contains(this, element);
-
- void forEach(void f(Node element)) => _Collections.forEach(this, f);
-
- Collection map(f(Node element)) => _Collections.map(this, [], f);
-
- Collection<Node> filter(bool f(Node element)) =>
- new _NodeListWrapper(_Collections.filter(this, <Node>[], f));
-
- bool every(bool f(Node element)) => _Collections.every(this, f);
-
- bool some(bool f(Node element)) => _Collections.some(this, f);
-
- bool get isEmpty => this.length == 0;
-
- // From List<Node>:
-
- void sort([Comparator<Node> compare = Comparable.compare]) {
- throw new UnsupportedError("Cannot sort immutable List.");
- }
-
- int indexOf(Node element, [int start = 0]) =>
- _Lists.indexOf(this, element, start, this.length);
-
- int lastIndexOf(Node element, [int start = 0]) =>
- _Lists.lastIndexOf(this, element, start);
-
- Node get last => this[length - 1];
- Node get first => this[0];
-
- // FIXME: implement thesee.
- void setRange(int start, int rangeLength, List<Node> from, [int startFrom]) {
- throw new UnsupportedError("Cannot setRange on immutable List.");
- }
- void removeRange(int start, int rangeLength) {
- throw new UnsupportedError("Cannot removeRange on immutable List.");
- }
- void insertRange(int start, int rangeLength, [Node initialValue]) {
- throw new UnsupportedError("Cannot insertRange on immutable List.");
- }
- List<Node> getRange(int start, int rangeLength) =>
- new _NodeListWrapper(_Lists.getRange(this, start, rangeLength, <Node>[]));
-
- // -- end List<Node> mixins.
-
- NodeList.internal();
-
-
- /** @domName NodeList.length */
- int get length native "NodeList_length_Getter";
-
- Node operator[](int index) native "NodeList_item_Callback";
-
-
- /** @domName NodeList.item */
- Node _item(int index) native "NodeList_item_Callback";
-
-}
-// Copyright (c) 2012, 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.
-
// WARNING: Do not edit - generated code.
@@ -18044,9 +18203,7 @@
}
Notification.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
NotificationEvents get on =>
new NotificationEvents(this);
@@ -18235,7 +18392,7 @@
/// @domName HTMLOListElement
class OListElement extends _Element_Merged {
- factory OListElement() => _Elements.createOListElement();
+ factory OListElement() => document.$dom_createElement("ol");
OListElement.internal(): super.internal();
@@ -18281,7 +18438,7 @@
/// @domName HTMLObjectElement
class ObjectElement extends _Element_Merged {
- factory ObjectElement() => _Elements.createObjectElement();
+ factory ObjectElement() => document.$dom_createElement("object");
ObjectElement.internal(): super.internal();
@@ -18463,7 +18620,7 @@
/// @domName HTMLOptGroupElement
class OptGroupElement extends _Element_Merged {
- factory OptGroupElement() => _Elements.createOptGroupElement();
+ factory OptGroupElement() => document.$dom_createElement("optgroup");
OptGroupElement.internal(): super.internal();
@@ -18631,7 +18788,7 @@
/// @domName HTMLOutputElement
class OutputElement extends _Element_Merged {
- factory OutputElement() => _Elements.createOutputElement();
+ factory OutputElement() => document.$dom_createElement("output");
OutputElement.internal(): super.internal();
@@ -18883,7 +19040,7 @@
/// @domName HTMLParagraphElement
class ParagraphElement extends _Element_Merged {
- factory ParagraphElement() => _Elements.createParagraphElement();
+ factory ParagraphElement() => document.$dom_createElement("p");
ParagraphElement.internal(): super.internal();
@@ -18905,7 +19062,7 @@
/// @domName HTMLParamElement
class ParamElement extends _Element_Merged {
- factory ParamElement() => _Elements.createParamElement();
+ factory ParamElement() => document.$dom_createElement("param");
ParamElement.internal(): super.internal();
@@ -18954,9 +19111,7 @@
factory PeerConnection00(String serverConfiguration, IceCallback iceCallback) => _PeerConnection00FactoryProvider.createPeerConnection00(serverConfiguration, iceCallback);
PeerConnection00.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
PeerConnection00Events get on =>
new PeerConnection00Events(this);
@@ -19323,7 +19478,7 @@
/// @domName HTMLPreElement
class PreElement extends _Element_Merged {
- factory PreElement() => _Elements.createPreElement();
+ factory PreElement() => document.$dom_createElement("pre");
PreElement.internal(): super.internal();
@@ -19381,7 +19536,7 @@
/// @domName HTMLProgressElement
class ProgressElement extends _Element_Merged {
- factory ProgressElement() => _Elements.createProgressElement();
+ factory ProgressElement() => document.$dom_createElement("progress");
ProgressElement.internal(): super.internal();
@@ -19488,9 +19643,7 @@
class RTCDataChannel extends EventTarget {
RTCDataChannel.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
RTCDataChannelEvents get on =>
new RTCDataChannelEvents(this);
@@ -19667,9 +19820,7 @@
}
RTCPeerConnection.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
RTCPeerConnectionEvents get on =>
new RTCPeerConnectionEvents(this);
@@ -19882,7 +20033,7 @@
/// @domName RadioNodeList
-class RadioNodeList extends NodeList {
+class RadioNodeList extends _NodeList {
RadioNodeList.internal(): super.internal();
@@ -20285,6 +20436,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ Map get first => this[0];
+
Map get last => this[length - 1];
Map removeLast() {
@@ -20439,7 +20592,7 @@
/// @domName HTMLScriptElement
class ScriptElement extends _Element_Merged {
- factory ScriptElement() => _Elements.createScriptElement();
+ factory ScriptElement() => document.$dom_createElement("script");
ScriptElement.internal(): super.internal();
@@ -20518,9 +20671,7 @@
class ScriptProcessorNode extends AudioNode implements EventTarget {
ScriptProcessorNode.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
ScriptProcessorNodeEvents get on =>
new ScriptProcessorNodeEvents(this);
@@ -20617,7 +20768,7 @@
/// @domName HTMLSelectElement
class SelectElement extends _Element_Merged {
- factory SelectElement() => _Elements.createSelectElement();
+ factory SelectElement() => document.$dom_createElement("select");
SelectElement.internal(): super.internal();
@@ -20879,9 +21030,7 @@
class SharedWorkerContext extends WorkerContext {
SharedWorkerContext.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
SharedWorkerContextEvents get on =>
new SharedWorkerContextEvents(this);
@@ -21003,6 +21152,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ SourceBuffer get first => this[0];
+
SourceBuffer get last => this[length - 1];
SourceBuffer removeLast() {
@@ -21053,7 +21204,7 @@
/// @domName HTMLSourceElement
class SourceElement extends _Element_Merged {
- factory SourceElement() => _Elements.createSourceElement();
+ factory SourceElement() => document.$dom_createElement("source");
SourceElement.internal(): super.internal();
@@ -21091,7 +21242,7 @@
/// @domName HTMLSpanElement
class SpanElement extends _Element_Merged {
- factory SpanElement() => _Elements.createSpanElement();
+ factory SpanElement() => document.$dom_createElement("span");
SpanElement.internal(): super.internal();
}
@@ -21202,6 +21353,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ SpeechGrammar get first => this[0];
+
SpeechGrammar get last => this[length - 1];
SpeechGrammar removeLast() {
@@ -21311,9 +21464,7 @@
factory SpeechRecognition() => _SpeechRecognitionFactoryProvider.createSpeechRecognition();
SpeechRecognition.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
SpeechRecognitionEvents get on =>
new SpeechRecognitionEvents(this);
@@ -21532,7 +21683,7 @@
String operator [](String key) => $dom_getItem(key);
- void operator []=(String key, String value) => $dom_setItem(key, value);
+ void operator []=(String key, String value) { $dom_setItem(key, value); }
String putIfAbsent(String key, String ifAbsent()) {
if (!containsKey(key)) this[key] = ifAbsent();
@@ -21700,7 +21851,7 @@
/// @domName HTMLStyleElement
class StyleElement extends _Element_Merged {
- factory StyleElement() => _Elements.createStyleElement();
+ factory StyleElement() => document.$dom_createElement("style");
StyleElement.internal(): super.internal();
@@ -21814,7 +21965,7 @@
/// @domName HTMLTableCaptionElement
class TableCaptionElement extends _Element_Merged {
- factory TableCaptionElement() => _Elements.createTableCaptionElement();
+ factory TableCaptionElement() => document.$dom_createElement("caption");
TableCaptionElement.internal(): super.internal();
@@ -21836,7 +21987,7 @@
/// @domName HTMLTableCellElement
class TableCellElement extends _Element_Merged {
- factory TableCellElement() => _Elements.createTableCellElement();
+ factory TableCellElement() => document.$dom_createElement("td");
TableCellElement.internal(): super.internal();
@@ -21966,7 +22117,7 @@
/// @domName HTMLTableColElement
class TableColElement extends _Element_Merged {
- factory TableColElement() => _Elements.createTableColElement();
+ factory TableColElement() => document.$dom_createElement("col");
TableColElement.internal(): super.internal();
@@ -22028,7 +22179,7 @@
/// @domName HTMLTableElement
class TableElement extends _Element_Merged {
- factory TableElement() => _Elements.createTableElement();
+ factory TableElement() => document.$dom_createElement("table");
TableElement.internal(): super.internal();
@@ -22182,7 +22333,7 @@
/// @domName HTMLTableRowElement
class TableRowElement extends _Element_Merged {
- factory TableRowElement() => _Elements.createTableRowElement();
+ factory TableRowElement() => document.$dom_createElement("tr");
TableRowElement.internal(): super.internal();
@@ -22336,7 +22487,7 @@
/// @domName HTMLTextAreaElement
class TextAreaElement extends _Element_Merged {
- factory TextAreaElement() => _Elements.createTextAreaElement();
+ factory TextAreaElement() => document.$dom_createElement("textarea");
TextAreaElement.internal(): super.internal();
@@ -22591,9 +22742,7 @@
class TextTrack extends EventTarget {
TextTrack.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
TextTrackEvents get on =>
new TextTrackEvents(this);
@@ -22665,9 +22814,7 @@
factory TextTrackCue(num startTime, num endTime, String text) => _TextTrackCueFactoryProvider.createTextTrackCue(startTime, endTime, text);
TextTrackCue.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
TextTrackCueEvents get on =>
new TextTrackCueEvents(this);
@@ -22863,6 +23010,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ TextTrackCue get first => this[0];
+
TextTrackCue get last => this[length - 1];
TextTrackCue removeLast() {
@@ -22906,9 +23055,7 @@
class TextTrackList extends EventTarget implements List<TextTrack> {
TextTrackList.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
TextTrackListEvents get on =>
new TextTrackListEvents(this);
@@ -22976,6 +23123,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ TextTrack get first => this[0];
+
TextTrack get last => this[length - 1];
TextTrack removeLast() {
@@ -23064,7 +23213,7 @@
/// @domName HTMLTitleElement
class TitleElement extends _Element_Merged {
- factory TitleElement() => _Elements.createTitleElement();
+ factory TitleElement() => document.$dom_createElement("title");
TitleElement.internal(): super.internal();
}
@@ -23247,6 +23396,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ Touch get first => this[0];
+
Touch get last => this[length - 1];
Touch removeLast() {
@@ -23285,7 +23436,7 @@
/// @domName HTMLTrackElement
class TrackElement extends _Element_Merged {
- factory TrackElement() => _Elements.createTrackElement();
+ factory TrackElement() => document.$dom_createElement("track");
TrackElement.internal(): super.internal();
static const int ERROR = 3;
@@ -23507,7 +23658,7 @@
/// @domName HTMLUListElement
class UListElement extends _Element_Merged {
- factory UListElement() => _Elements.createUListElement();
+ factory UListElement() => document.$dom_createElement("ul");
UListElement.internal(): super.internal();
@@ -23615,6 +23766,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ int get first => this[0];
+
int get last => this[length - 1];
int removeLast() {
@@ -23746,6 +23899,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ int get first => this[0];
+
int get last => this[length - 1];
int removeLast() {
@@ -23877,6 +24032,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ int get first => this[0];
+
int get last => this[length - 1];
int removeLast() {
@@ -24083,7 +24240,7 @@
/// @domName HTMLVideoElement
class VideoElement extends MediaElement {
- factory VideoElement() => _Elements.createVideoElement();
+ factory VideoElement() => document.$dom_createElement("video");
VideoElement.internal(): super.internal();
@@ -25874,9 +26031,7 @@
factory WebSocket(String url) => _WebSocketFactoryProvider.createWebSocket(url);
WebSocket.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
WebSocketEvents get on =>
new WebSocketEvents(this);
@@ -26019,9 +26174,7 @@
factory Worker(String scriptUrl) => _WorkerFactoryProvider.createWorker(scriptUrl);
Worker.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
WorkerEvents get on =>
new WorkerEvents(this);
@@ -26051,9 +26204,7 @@
class WorkerContext extends EventTarget {
WorkerContext.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
WorkerContextEvents get on =>
new WorkerContextEvents(this);
@@ -26561,6 +26712,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ CSSRule get first => this[0];
+
CSSRule get last => this[length - 1];
CSSRule removeLast() {
@@ -26664,6 +26817,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ CSSValue get first => this[0];
+
CSSValue get last => this[length - 1];
CSSValue removeLast() {
@@ -26767,6 +26922,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ ClientRect get first => this[0];
+
ClientRect get last => this[length - 1];
ClientRect removeLast() {
@@ -26878,6 +27035,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ String get first => this[0];
+
String get last => this[length - 1];
String removeLast() {
@@ -27058,311 +27217,6 @@
// 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.
-
-class _Elements {
-
-
- static AnchorElement createAnchorElement([String href]) {
- AnchorElement _e = document.$dom_createElement("a");
- if (href != null) _e.href = href;
- return _e;
- }
-
- static AreaElement createAreaElement() {
- AreaElement _e = document.$dom_createElement("area");
- return _e;
- }
-
- static BRElement createBRElement() {
- BRElement _e = document.$dom_createElement("br");
- return _e;
- }
-
- static BaseElement createBaseElement() {
- BaseElement _e = document.$dom_createElement("base");
- return _e;
- }
-
- static BodyElement createBodyElement() {
- BodyElement _e = document.$dom_createElement("body");
- return _e;
- }
-
- static ButtonElement createButtonElement() {
- ButtonElement _e = document.$dom_createElement("button");
- return _e;
- }
-
- static CanvasElement createCanvasElement([int width, int height]) {
- CanvasElement _e = document.$dom_createElement("canvas");
- if (width != null) _e.width = width;
- if (height != null) _e.height = height;
- return _e;
- }
-
- static ContentElement createContentElement() {
- ContentElement _e = document.$dom_createElement("content");
- return _e;
- }
-
- static DListElement createDListElement() {
- DListElement _e = document.$dom_createElement("dl");
- return _e;
- }
-
- static DataListElement createDataListElement() {
- DataListElement _e = document.$dom_createElement("datalist");
- return _e;
- }
-
- static DetailsElement createDetailsElement() {
- DetailsElement _e = document.$dom_createElement("details");
- return _e;
- }
-
- static DivElement createDivElement() {
- DivElement _e = document.$dom_createElement("div");
- return _e;
- }
-
- static EmbedElement createEmbedElement() {
- EmbedElement _e = document.$dom_createElement("embed");
- return _e;
- }
-
- static FieldSetElement createFieldSetElement() {
- FieldSetElement _e = document.$dom_createElement("fieldset");
- return _e;
- }
-
- static FormElement createFormElement() {
- FormElement _e = document.$dom_createElement("form");
- return _e;
- }
-
- static HRElement createHRElement() {
- HRElement _e = document.$dom_createElement("hr");
- return _e;
- }
-
- static HeadElement createHeadElement() {
- HeadElement _e = document.$dom_createElement("head");
- return _e;
- }
-
- static HeadingElement createHeadingElement_h1() {
- HeadingElement _e = document.$dom_createElement("h1");
- return _e;
- }
-
- static HeadingElement createHeadingElement_h2() {
- HeadingElement _e = document.$dom_createElement("h2");
- return _e;
- }
-
- static HeadingElement createHeadingElement_h3() {
- HeadingElement _e = document.$dom_createElement("h3");
- return _e;
- }
-
- static HeadingElement createHeadingElement_h4() {
- HeadingElement _e = document.$dom_createElement("h4");
- return _e;
- }
-
- static HeadingElement createHeadingElement_h5() {
- HeadingElement _e = document.$dom_createElement("h5");
- return _e;
- }
-
- static HeadingElement createHeadingElement_h6() {
- HeadingElement _e = document.$dom_createElement("h6");
- return _e;
- }
-
- static HtmlElement createHtmlElement() {
- HtmlElement _e = document.$dom_createElement("html");
- return _e;
- }
-
- static IFrameElement createIFrameElement() {
- IFrameElement _e = document.$dom_createElement("iframe");
- return _e;
- }
-
- static ImageElement createImageElement([String src, int width, int height]) {
- ImageElement _e = document.$dom_createElement("img");
- if (src != null) _e.src = src;
- if (width != null) _e.width = width;
- if (height != null) _e.height = height;
- return _e;
- }
-
- static InputElement createInputElement([String type]) {
- InputElement _e = document.$dom_createElement("input");
- if (type != null) _e.type = type;
- return _e;
- }
-
- static KeygenElement createKeygenElement() {
- KeygenElement _e = document.$dom_createElement("keygen");
- return _e;
- }
-
- static LIElement createLIElement() {
- LIElement _e = document.$dom_createElement("li");
- return _e;
- }
-
- static LabelElement createLabelElement() {
- LabelElement _e = document.$dom_createElement("label");
- return _e;
- }
-
- static LegendElement createLegendElement() {
- LegendElement _e = document.$dom_createElement("legend");
- return _e;
- }
-
- static LinkElement createLinkElement() {
- LinkElement _e = document.$dom_createElement("link");
- return _e;
- }
-
- static MapElement createMapElement() {
- MapElement _e = document.$dom_createElement("map");
- return _e;
- }
-
- static MenuElement createMenuElement() {
- MenuElement _e = document.$dom_createElement("menu");
- return _e;
- }
-
- static MeterElement createMeterElement() {
- MeterElement _e = document.$dom_createElement("meter");
- return _e;
- }
-
- static OListElement createOListElement() {
- OListElement _e = document.$dom_createElement("ol");
- return _e;
- }
-
- static ObjectElement createObjectElement() {
- ObjectElement _e = document.$dom_createElement("object");
- return _e;
- }
-
- static OptGroupElement createOptGroupElement() {
- OptGroupElement _e = document.$dom_createElement("optgroup");
- return _e;
- }
-
- static OutputElement createOutputElement() {
- OutputElement _e = document.$dom_createElement("output");
- return _e;
- }
-
- static ParagraphElement createParagraphElement() {
- ParagraphElement _e = document.$dom_createElement("p");
- return _e;
- }
-
- static ParamElement createParamElement() {
- ParamElement _e = document.$dom_createElement("param");
- return _e;
- }
-
- static PreElement createPreElement() {
- PreElement _e = document.$dom_createElement("pre");
- return _e;
- }
-
- static ProgressElement createProgressElement() {
- ProgressElement _e = document.$dom_createElement("progress");
- return _e;
- }
-
- static ScriptElement createScriptElement() {
- ScriptElement _e = document.$dom_createElement("script");
- return _e;
- }
-
- static SelectElement createSelectElement() {
- SelectElement _e = document.$dom_createElement("select");
- return _e;
- }
-
- static SourceElement createSourceElement() {
- SourceElement _e = document.$dom_createElement("source");
- return _e;
- }
-
- static SpanElement createSpanElement() {
- SpanElement _e = document.$dom_createElement("span");
- return _e;
- }
-
- static StyleElement createStyleElement() {
- StyleElement _e = document.$dom_createElement("style");
- return _e;
- }
-
- static TableCaptionElement createTableCaptionElement() {
- TableCaptionElement _e = document.$dom_createElement("caption");
- return _e;
- }
-
- static TableCellElement createTableCellElement() {
- TableCellElement _e = document.$dom_createElement("td");
- return _e;
- }
-
- static TableColElement createTableColElement() {
- TableColElement _e = document.$dom_createElement("col");
- return _e;
- }
-
- static TableElement createTableElement() {
- TableElement _e = document.$dom_createElement("table");
- return _e;
- }
-
- static TableRowElement createTableRowElement() {
- TableRowElement _e = document.$dom_createElement("tr");
- return _e;
- }
-
- static TextAreaElement createTextAreaElement() {
- TextAreaElement _e = document.$dom_createElement("textarea");
- return _e;
- }
-
- static TitleElement createTitleElement() {
- TitleElement _e = document.$dom_createElement("title");
- return _e;
- }
-
- static TrackElement createTrackElement() {
- TrackElement _e = document.$dom_createElement("track");
- return _e;
- }
-
- static UListElement createUListElement() {
- UListElement _e = document.$dom_createElement("ul");
- return _e;
- }
-
- static VideoElement createVideoElement() {
- VideoElement _e = document.$dom_createElement("video");
- return _e;
- }
-}
-// Copyright (c) 2012, 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.
-
// WARNING: Do not edit - generated code.
@@ -27434,6 +27288,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ Entry get first => this[0];
+
Entry get last => this[length - 1];
Entry removeLast() {
@@ -27537,6 +27393,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ EntrySync get first => this[0];
+
EntrySync get last => this[length - 1];
EntrySync removeLast() {
@@ -27648,6 +27506,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ File get first => this[0];
+
File get last => this[length - 1];
File removeLast() {
@@ -27775,6 +27635,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ Gamepad get first => this[0];
+
Gamepad get last => this[length - 1];
Gamepad removeLast() {
@@ -27927,6 +27789,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ MediaStream get first => this[0];
+
MediaStream get last => this[length - 1];
MediaStream removeLast() {
@@ -27975,6 +27839,111 @@
// 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.
+// WARNING: Do not edit - generated code.
+
+
+/// @domName NodeList
+class _NodeList extends NativeFieldWrapperClass1 implements List<Node> {
+ _NodeList.internal();
+
+
+ /** @domName NodeList.length */
+ int get length native "NodeList_length_Getter";
+
+ Node operator[](int index) native "NodeList_item_Callback";
+
+ void operator[]=(int index, Node value) {
+ throw new UnsupportedError("Cannot assign element of immutable List.");
+ }
+ // -- start List<Node> mixins.
+ // Node is the element type.
+
+ // From Iterable<Node>:
+
+ Iterator<Node> iterator() {
+ // Note: NodeLists are not fixed size. And most probably length shouldn't
+ // be cached in both iterator _and_ forEach method. For now caching it
+ // for consistency.
+ return new FixedSizeListIterator<Node>(this);
+ }
+
+ // From Collection<Node>:
+
+ void add(Node value) {
+ throw new UnsupportedError("Cannot add to immutable List.");
+ }
+
+ void addLast(Node value) {
+ throw new UnsupportedError("Cannot add to immutable List.");
+ }
+
+ void addAll(Collection<Node> collection) {
+ throw new UnsupportedError("Cannot add to immutable List.");
+ }
+
+ bool contains(Node element) => _Collections.contains(this, element);
+
+ void forEach(void f(Node element)) => _Collections.forEach(this, f);
+
+ Collection map(f(Node element)) => _Collections.map(this, [], f);
+
+ Collection<Node> filter(bool f(Node element)) =>
+ _Collections.filter(this, <Node>[], f);
+
+ bool every(bool f(Node element)) => _Collections.every(this, f);
+
+ bool some(bool f(Node element)) => _Collections.some(this, f);
+
+ bool get isEmpty => this.length == 0;
+
+ // From List<Node>:
+
+ void sort([Comparator<Node> compare = Comparable.compare]) {
+ throw new UnsupportedError("Cannot sort immutable List.");
+ }
+
+ int indexOf(Node element, [int start = 0]) =>
+ _Lists.indexOf(this, element, start, this.length);
+
+ int lastIndexOf(Node element, [int start]) {
+ if (start == null) start = length - 1;
+ return _Lists.lastIndexOf(this, element, start);
+ }
+
+ Node get first => this[0];
+
+ Node get last => this[length - 1];
+
+ Node removeLast() {
+ throw new UnsupportedError("Cannot removeLast on immutable List.");
+ }
+
+ void setRange(int start, int rangeLength, List<Node> from, [int startFrom]) {
+ throw new UnsupportedError("Cannot setRange on immutable List.");
+ }
+
+ void removeRange(int start, int rangeLength) {
+ throw new UnsupportedError("Cannot removeRange on immutable List.");
+ }
+
+ void insertRange(int start, int rangeLength, [Node initialValue]) {
+ throw new UnsupportedError("Cannot insertRange on immutable List.");
+ }
+
+ List<Node> getRange(int start, int rangeLength) =>
+ _Lists.getRange(this, start, rangeLength, <Node>[]);
+
+ // -- end List<Node> mixins.
+
+
+ /** @domName NodeList.item */
+ Node _item(int index) native "NodeList_item_Callback";
+
+}
+// Copyright (c) 2012, 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.
+
class _NotificationFactoryProvider {
static Notification createNotification(String title, [Map options]) native "Notification_constructor_Callback";
@@ -28134,6 +28103,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ SpeechInputResult get first => this[0];
+
SpeechInputResult get last => this[length - 1];
SpeechInputResult removeLast() {
@@ -28245,6 +28216,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ SpeechRecognitionResult get first => this[0];
+
SpeechRecognitionResult get last => this[length - 1];
SpeechRecognitionResult removeLast() {
@@ -28348,6 +28321,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ StyleSheet get first => this[0];
+
StyleSheet get last => this[length - 1];
StyleSheet removeLast() {
@@ -28459,6 +28434,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ Animation get first => this[0];
+
Animation get last => this[length - 1];
Animation removeLast() {
@@ -28524,19 +28501,88 @@
// BSD-style license that can be found in the LICENSE file.
+/**
+ * An object representing the top-level context object for web scripting.
+ *
+ * In a web browser, a [Window] object represents the actual browser window.
+ * In a multi-tabbed browser, each tab has its own [Window] object. A [Window]
+ * is the container that displays a [Document]'s content. All web scripting
+ * happens within the context of a [Window] object.
+ *
+ * **Note:** This class represents any window, whereas [LocalWindow] is
+ * used to access the properties and content of the current window.
+ *
+ * See also:
+ *
+ * * [DOM Window](https://developer.mozilla.org/en-US/docs/DOM/window) from MDN.
+ * * [Window](http://www.w3.org/TR/Window/) from the W3C.
+ */
abstract class Window {
// Fields.
+
+ /**
+ * The current location of this window.
+ *
+ * Location currentLocation = window.location;
+ * print(currentLocation.href); // 'http://www.example.com:80/'
+ */
Location get location;
History get history;
+ /**
+ * Indicates whether this window is closed.
+ *
+ * print(window.closed); // 'false'
+ * window.close();
+ * print(window.closed); // 'true'
+ */
bool get closed;
+
+ /**
+ * A reference to the window that opened this one.
+ *
+ * Window thisWindow = window;
+ * Window otherWindow = thisWindow.open('http://www.example.com/', 'foo');
+ * print(otherWindow.opener == thisWindow); // 'true'
+ */
Window get opener;
+
+ /**
+ * A reference to the parent of this window.
+ *
+ * If this [Window] has no parent, [parent] will return a reference to
+ * the [Window] itself.
+ *
+ * IFrameElement myIFrame = new IFrameElement();
+ * window.document.body.elements.add(myIFrame);
+ * print(myIframe.contentWindow.parent == window) // 'true'
+ *
+ * print(window.parent == window) // 'true'
+ */
Window get parent;
+
+ /**
+ * A reference to the topmost window in the window hierarchy.
+ *
+ * If this [Window] is the topmost [Window], [top] will return a reference to
+ * the [Window] itself.
+ *
+ * // Add an IFrame to the current window.
+ * IFrameElement myIFrame = new IFrameElement();
+ * window.document.body.elements.add(myIFrame);
+ *
+ * // Add an IFrame inside of the other IFrame.
+ * IFrameElement innerIFrame = new IFrameElement();
+ * myIFrame.elements.add(innerIFrame);
+ *
+ * print(myIframe.contentWindow.top == window) // 'true'
+ * print(innerIFrame.contentWindow.top == window) // 'true'
+ *
+ * print(window.top == window) // 'true'
+ */
Window get top;
// Methods.
- void focus();
- void blur();
void close();
void postMessage(var message, String targetOrigin, [List messagePorts = null]);
}
@@ -28781,6 +28827,8 @@
return _filtered.lastIndexOf(element, start);
}
+ Element get first => _filtered.first;
+
Element get last => _filtered.last;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -30735,8 +30783,6 @@
Window get top() native "DOMWindow_top_Getter";
// Methods.
- void focus() native "DOMWindow_focus_Callback";
- void blur() native "DOMWindow_blur_Callback";
void close() native "DOMWindow_close_Callback";
void postMessage(/*SerializedScriptValue*/ message, String targetOrigin, [List messagePorts]) native "DOMWindow_postMessage_Callback";
diff --git a/sdk/lib/html/scripts/generator.py b/sdk/lib/html/scripts/generator.py
index 89913d2..76b5ecf 100644
--- a/sdk/lib/html/scripts/generator.py
+++ b/sdk/lib/html/scripts/generator.py
@@ -305,7 +305,12 @@
is named, e.g. 'fromList' in Int8Array.fromList(list).
type_name: A string, the name of the return type of the operation.
param_infos: A list of ParamInfo.
+ factory_parameters: A list of parameters used for custom designed Factory
+ calls.
"""
+
+ def __init__(self):
+ self.factory_parameters = None
def ParametersDeclaration(self, rename_type, force_optional=False):
def FormatParam(param):
@@ -356,11 +361,18 @@
def ConstructorFactoryName(self, rename_type):
return 'create' + self._ConstructorFullName(rename_type).replace('.', '_')
- def GenerateFactoryInvocation(self, rename_type, emitter, factory_provider):
+ def GenerateFactoryInvocation(self, rename_type, emitter, factory_name,
+ factory_constructor_name=None, factory_parameters=None):
has_optional = any(param_info.is_optional
for param_info in self.param_infos)
- factory_name = self.ConstructorFactoryName(rename_type)
+ if not factory_constructor_name:
+ factory_constructor_name = self.ConstructorFactoryName(rename_type)
+ factory_parameters = self.ParametersAsArgumentList()
+ has_factory_provider = True
+ else:
+ factory_parameters = ', '.join(factory_parameters)
+ has_factory_provider = False
if not has_optional:
emitter.Emit(
'\n'
@@ -368,11 +380,19 @@
'$FACTORY.$CTOR_FACTORY_NAME($FACTORY_PARAMS);\n',
CTOR=self._ConstructorFullName(rename_type),
PARAMS=self.ParametersDeclaration(rename_type),
- FACTORY=factory_provider,
- CTOR_FACTORY_NAME=factory_name,
- FACTORY_PARAMS=self.ParametersAsArgumentList())
+ FACTORY=factory_name,
+ CTOR_FACTORY_NAME=factory_constructor_name,
+ FACTORY_PARAMS=factory_parameters)
return
+ if has_factory_provider:
+ self._GenerateFactoryOptParams(rename_type, emitter, factory_name)
+ else:
+ self._GenerateFactoryOptParamsWithoutFactoryProvider(rename_type, emitter,
+ factory_name, factory_constructor_name, factory_parameters)
+ def _GenerateFactoryOptParams(self, rename_type, emitter, factory_provider):
+ """Helper method for creating generic factory constructors with optional
+ parameters that use factory providers."""
dispatcher_emitter = emitter.Emit(
'\n'
' factory $CTOR($PARAMS) {\n'
@@ -382,7 +402,7 @@
CTOR=self._ConstructorFullName(rename_type),
PARAMS=self.ParametersDeclaration(rename_type),
FACTORY=factory_provider,
- CTOR_FACTORY_NAME=factory_name,
+ CTOR_FACTORY_NAME=self.ConstructorFactoryName(rename_type),
FACTORY_PARAMS=self.ParametersAsArgumentList())
# If we have optional parameters, check to see if they are set
@@ -394,12 +414,34 @@
' }\n',
OPT_PARAM_NAME=self.param_infos[index].name,
FACTORY=factory_provider,
- CTOR_FACTORY_NAME=factory_name,
+ CTOR_FACTORY_NAME=self.ConstructorFactoryName(rename_type),
FACTORY_PARAMS=self.ParametersAsArgumentList(index))
for index, param_info in enumerate(self.param_infos):
if param_info.is_optional:
EmitOptionalParameterInvocation(index)
+
+ def _GenerateFactoryOptParamsWithoutFactoryProvider(self, rename_type,
+ emitter, factory_name, factory_constructor_name, factory_parameters):
+ """Helper method for creating a factory constructor with optional
+ parameters that does not call a factory provider, it simply creates the
+ object itself. This is currently used for SVGElements and HTMLElements."""
+ inits = emitter.Emit(
+ '\n'
+ ' factory $CONSTRUCTOR($PARAMS) {\n'
+ ' var e = $FACTORY.$CTOR_FACTORY_NAME($FACTORY_PARAMS);\n'
+ '$!INITS'
+ ' return e;\n'
+ ' }\n',
+ CONSTRUCTOR=self._ConstructorFullName(rename_type),
+ FACTORY=factory_name,
+ CTOR_FACTORY_NAME=factory_constructor_name,
+ PARAMS=self.ParametersDeclaration(rename_type),
+ FACTORY_PARAMS=factory_parameters)
+ for index, param_info in enumerate(self.param_infos):
+ if param_info.is_optional:
+ inits.Emit(' if ($E != null) e.$E = $E;\n',
+ E=self.param_infos[index].name)
def ConstantOutputOrder(a, b):
"""Canonical output ordering for constants."""
@@ -541,6 +583,90 @@
# ------------------------------------------------------------------------------
+# Annotations to be placed on members. The table is indexed by the IDL
+# interface and member name, and by IDL return or field type name. Both are
+# used to assemble the annotations:
+#
+# INTERFACE.MEMBER: annotations for member.
+# +TYPE: add annotations only if there are member annotations.
+# TYPE: add regardless of member annotations.
+
+dart2js_annotations = {
+
+ 'CanvasRenderingContext2D.createImageData':
+ "@Creates('ImageData|=Object')",
+
+ 'CanvasRenderingContext2D.getImageData':
+ "@Creates('ImageData|=Object')",
+
+ 'CanvasRenderingContext2D.webkitGetImageDataHD':
+ "@Creates('ImageData|=Object')",
+
+ 'DOMWindow.openDatabase': "@Creates('Database') @Creates('DatabaseSync')",
+
+ 'FileReader.result': "@Creates('String|ArrayBuffer|Null')",
+
+ # Rather than have the result of an IDBRequest as a union over all possible
+ # results, we mark the result as instantiating any classes, and mark
+ # each operation with the classes that it could cause to be asynchronously
+ # instantiated.
+ 'IDBRequest.result': "@Creates('Null')",
+
+ # The source is usually a participant in the operation that generated the
+ # IDBRequest.
+ 'IDBRequest.source': "@Creates('Null')",
+
+ 'IDBFactory.open': "@Creates('IDBDatabase')",
+
+ 'IDBObjectStore.put': "@_annotation_Creates_IDBKey",
+ 'IDBObjectStore.add': "@_annotation_Creates_IDBKey",
+ 'IDBObjectStore.get': "@_annotation_Creates_SerializedScriptValue",
+ 'IDBObjectStore.openCursor': "@Creates('IDBCursor')",
+
+ 'IDBIndex.get': "@_annotation_Creates_SerializedScriptValue",
+ 'IDBIndex.getKey':
+ "@_annotation_Creates_SerializedScriptValue "
+ # The source is the object store behind the index.
+ "@Creates('IDBObjectStore')",
+ 'IDBIndex.openCursor': "@Creates('IDBCursor')",
+ 'IDBIndex.openKeyCursor': "@Creates('IDBCursor')",
+
+ 'IDBCursorWithValue.value':
+ '@_annotation_Creates_SerializedScriptValue '
+ '@_annotation_Returns_SerializedScriptValue',
+
+ 'IDBCursor.key': "@_annotation_Creates_IDBKey @_annotation_Returns_IDBKey",
+
+ '+IDBRequest': "@Returns('IDBRequest') @Creates('IDBRequest')",
+
+ '+IDBOpenDBRequest': "@Returns('IDBRequest') @Creates('IDBRequest')",
+ '+IDBVersionChangeRequest': "@Returns('IDBRequest') @Creates('IDBRequest')",
+
+
+ 'MessageEvent.ports': "@Creates('=List')",
+
+ 'SQLResultSetRowList.item': "@Creates('=Object')",
+
+ 'XMLHttpRequest.response':
+ "@Creates('ArrayBuffer|Blob|Document|=Object|=List|String|num')",
+}
+
+def FindAnnotations(idl_type, interface_name, member_name):
+ ann1 = dart2js_annotations.get("%s.%s" % (interface_name, member_name))
+ if ann1:
+ ann2 = dart2js_annotations.get('+' + idl_type)
+ if ann2:
+ return ann2 + ' ' + ann1
+ ann2 = dart2js_annotations.get(idl_type)
+ if ann2:
+ return ann2 + ' ' + ann1
+ return ann1
+
+ ann2 = dart2js_annotations.get(idl_type)
+ return ann2
+
+# ------------------------------------------------------------------------------
+
class IDLTypeInfo(object):
def __init__(self, idl_type, data):
self._idl_type = idl_type
@@ -663,19 +789,13 @@
self._type_registry = type_registry
def dart_type(self):
- # TODO(podivilov): why NodeList is special?
- if self.idl_type() == 'NodeList':
- return 'List<Node>'
if self.list_item_type() and not self.has_generated_interface():
return 'List<%s>' % self._type_registry.TypeInfo(self._data.item_type).dart_type()
return self._data.dart_type or self._dart_interface_name
def narrow_dart_type(self):
- # TODO(podivilov): why NodeList is special?
- if self.idl_type() == 'NodeList':
- return 'List<Node>'
if self.list_item_type():
- return self.idl_type()
+ return self.implementation_name()
# TODO(podivilov): only primitive and collection types should override
# dart_type.
if self._data.dart_type != None:
@@ -685,15 +805,10 @@
return self.interface_name()
def interface_name(self):
- if self.list_item_type() and not self.has_generated_interface():
- return self.dart_type()
return self._dart_interface_name
def implementation_name(self):
- if self.list_item_type():
- implementation_name = self.idl_type()
- else:
- implementation_name = self.interface_name()
+ implementation_name = self._dart_interface_name
if self.merged_into():
implementation_name = '_%s_Merged' % implementation_name
@@ -822,9 +937,9 @@
class SVGTearOffIDLTypeInfo(InterfaceIDLTypeInfo):
- def __init__(self, idl_type, data, type_registry):
+ def __init__(self, idl_type, data, interface_name, type_registry):
super(SVGTearOffIDLTypeInfo, self).__init__(
- idl_type, data, idl_type, type_registry)
+ idl_type, data, interface_name, type_registry)
def native_type(self):
if self._data.native_type:
@@ -980,7 +1095,8 @@
'MediaStreamList': TypeData(clazz='Interface',
item_type='MediaStream', suppress_interface=True),
'NamedNodeMap': TypeData(clazz='Interface', item_type='Node'),
- 'NodeList': TypeData(clazz='Interface', item_type='Node'),
+ 'NodeList': TypeData(clazz='Interface', item_type='Node',
+ suppress_interface=True),
'SVGAnimatedLengthList': TypeData(clazz='Interface',
item_type='SVGAnimatedLength'),
'SVGAnimatedNumberList': TypeData(clazz='Interface',
@@ -1080,12 +1196,15 @@
dart_interface_name = self._renamer.RenameInterface(
self._database.GetInterface(type_name))
else:
- dart_interface_name = type_name
+ dart_interface_name = self._renamer.DartifyTypeName(type_name)
return InterfaceIDLTypeInfo(type_name, type_data, dart_interface_name,
self)
if type_data.clazz == 'SVGTearOff':
- return SVGTearOffIDLTypeInfo(type_name, type_data, self)
+ dart_interface_name = self._renamer.RenameInterface(
+ self._database.GetInterface(type_name))
+ return SVGTearOffIDLTypeInfo(
+ type_name, type_data, dart_interface_name, self)
class_name = '%sIDLTypeInfo' % type_data.clazz
return globals()[class_name](type_name, type_data)
diff --git a/sdk/lib/html/scripts/htmldartgenerator.py b/sdk/lib/html/scripts/htmldartgenerator.py
index 0dd7ab7..8f445a1 100644
--- a/sdk/lib/html/scripts/htmldartgenerator.py
+++ b/sdk/lib/html/scripts/htmldartgenerator.py
@@ -32,23 +32,24 @@
""" Emits the MDN dartdoc comment for an attribute.
"""
dom_name = DartDomNameOfAttribute(attribute)
- self._members_emitter.Emit('\n /** @domName $DOMINTERFACE.$DOMNAME */',
+ self._members_emitter.Emit('\n /// @domName $DOMINTERFACE.$DOMNAME;'
+ ' @docsEditable true',
DOMINTERFACE=attribute.doc_js_interface_name,
DOMNAME=dom_name)
def EmitOperationDocumentation(self, operation):
""" Emits the MDN dartdoc comment for an operation.
"""
- self._members_emitter.Emit('\n /** @domName $DOMINTERFACE.$DOMNAME */',
+ self._members_emitter.Emit('\n /// @domName $DOMINTERFACE.$DOMNAME;'
+ ' @docsEditable true',
DOMINTERFACE=operation.overloads[0].doc_js_interface_name,
DOMNAME=operation.name)
def EmitEventGetter(self, events_class_name):
self._members_emitter.Emit(
- '\n /**'
- '\n * @domName EventTarget.addEventListener, '
- 'EventTarget.removeEventListener, EventTarget.dispatchEvent'
- '\n */'
+ '\n /// @domName EventTarget.addEventListener, '
+ 'EventTarget.removeEventListener, EventTarget.dispatchEvent;'
+ ' @docsEditable true'
'\n $TYPE get on =>\n new $TYPE(this);\n',
TYPE=events_class_name)
@@ -182,17 +183,21 @@
implements.append('List<%s>' % item_type_info.dart_type())
return implements
- def AddConstructors(self, constructors, factory_provider, class_name,
- base_class):
+ def AddConstructors(self, constructors, factory_name, class_name,
+ base_class, factory_constructor_name=None):
""" Adds all of the constructors.
Arguments:
constructors - List of the constructors to be added.
- factory_provider - Name of the factory provider for this class.
+ factory_name - Name of the factory for this class.
class_name - The name of this class.
base_class - The name of the base class which this extends.
+ factory_constructor_name - The name of the constructor on the
+ factory_name to call (calls an autogenerated FactoryProvider
+ if unspecified)
"""
for constructor_info in constructors:
- self._AddConstructor(constructor_info, factory_provider)
+ self._AddConstructor(constructor_info, factory_name,
+ factory_constructor_name, constructor_info.factory_parameters)
typed_array_type = None
for interface in self._database.Hierarchy(self._interface):
@@ -214,11 +219,14 @@
' $FACTORY.create$(CTOR)_fromBuffer(buffer, byteOffset, length);\n',
CTOR=self._interface.id,
TYPE=self._DartType(typed_array_type),
- FACTORY=factory_provider)
+ FACTORY=factory_name)
- def _AddConstructor(self, constructor_info, factory_provider):
- constructor_info.GenerateFactoryInvocation(
- self._DartType, self._members_emitter, factory_provider)
+ def _AddConstructor(self, constructor_info, factory_name,
+ factory_constructor_name, factory_constructor_params):
+ constructor_info.GenerateFactoryInvocation(
+ self._DartType, self._members_emitter, factory_name,
+ factory_constructor_name=factory_constructor_name,
+ factory_parameters=factory_constructor_params)
def DeclareAttribute(self, attribute, type_name, attr_name, read_only):
""" Declares an attribute but does not include the code to invoke it.
diff --git a/sdk/lib/html/scripts/htmlrenamer.py b/sdk/lib/html/scripts/htmlrenamer.py
index c513e49..2f26d06 100644
--- a/sdk/lib/html/scripts/htmlrenamer.py
+++ b/sdk/lib/html/scripts/htmlrenamer.py
@@ -2,6 +2,7 @@
# Copyright (c) 2012, 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.
+import re
html_interface_renames = {
'DOMCoreException': 'DOMException',
@@ -11,6 +12,9 @@
'History': 'LocalHistory',
'HTMLDocument' : 'HtmlDocument',
'Location': 'LocalLocation',
+ 'SVGDocument': 'SvgDocument', # Manual to avoid name conflicts.
+ 'SVGElement': 'SvgElement', # Manual to avoid name conflicts.
+ 'SVGSVGElement': 'SvgSvgElement', # Manual to avoid name conflicts.
'WebKitAnimation': 'Animation',
'WebKitAnimationEvent': 'AnimationEvent',
'WebKitBlobBuilder': 'BlobBuilder',
@@ -117,9 +121,9 @@
'Node.parentNode': 'parent',
'Node.previousSibling': 'previousNode',
'Node.textContent': 'text',
- 'SVGElement.className': '$dom_svgClassName',
- 'SVGAnimatedString.className': '$dom_svgClassName',
- 'SVGStylable.className': '$dom_svgClassName',
+ 'SvgElement.className': '$dom_svgClassName',
+ 'AnimatedString.className': '$dom_svgClassName',
+ 'Stylable.className': '$dom_svgClassName',
'Url.createObjectURL': 'createObjectUrl',
'Url.revokeObjectURL': 'revokeObjectUrl',
}
@@ -286,9 +290,11 @@
"Node.lookupPrefix",
"Node.get:PROCESSING_INSTRUCTION_NODE",
'ShadowRoot.getElementsByTagNameNS',
+ "LocalWindow.blur",
"LocalWindow.clientInformation",
"LocalWindow.get:frames",
"LocalWindow.get:length",
+ "LocalWindow.focus",
"LocalWindow.prompt",
"LocalWindow.webkitCancelRequestAnimationFrame",
"WheelEvent.wheelDelta",
@@ -305,7 +311,7 @@
if any(interface.id in ['Element', 'Document']
for interface in self._database.Hierarchy(interface)):
return interface.id[len('HTML'):]
- return interface.id
+ return self.DartifyTypeName(interface.id)
def RenameMember(self, interface_name, member_node, member, member_prefix=''):
"""
@@ -339,6 +345,37 @@
return member_name
def GetLibraryName(self, interface):
- if interface.id.startswith('SVG'):
+ return self._GetLibraryName(interface.id)
+
+ def _GetLibraryName(self, idl_type_name):
+ """
+ Gets the name of the library this type should live in.
+ This is private because this should use interfaces to resolve the library.
+ """
+
+ if idl_type_name.startswith('SVG'):
return 'svg'
return 'html'
+
+ def DartifyTypeName(self, type_name):
+ """Converts a DOM name to a Dart-friendly class name. """
+ library_name = self._GetLibraryName(type_name)
+ # Only renaming SVG for now.
+ if library_name != 'svg':
+ return type_name
+
+ # Strip off the SVG prefix.
+ name = re.sub(r'^SVG', '', type_name)
+
+ def toLower(match):
+ return match.group(1) + match.group(2).lower() + match.group(3)
+
+ # We're looking for a sequence of letters which start with capital letter
+ # then a series of caps and finishes with either the end of the string or
+ # a capital letter.
+ # The [0-9] check is for names such as 2D or 3D
+ # The following test cases should match as:
+ # WebKitCSSFilterValue: WebKit(C)(SS)(F)ilterValue
+ # XPathNSResolver: (X)()(P)ath(N)(S)(R)esolver (no change)
+ # IFrameElement: (I)()(F)rameElement (no change)
+ return re.sub(r'([A-Z])([A-Z]{2,})([A-Z]|$)', toLower, name)
diff --git a/sdk/lib/html/scripts/systemhtml.py b/sdk/lib/html/scripts/systemhtml.py
index dbdb4cc..38ad58c 100644
--- a/sdk/lib/html/scripts/systemhtml.py
+++ b/sdk/lib/html/scripts/systemhtml.py
@@ -58,9 +58,9 @@
class ElementConstructorInfo(object):
def __init__(self, name=None, tag=None,
params=[], opt_params=[],
- factory_provider_name='_Elements'):
+ factory_provider_name='document'):
self.name = name # The constructor name 'h1' in 'HeadingElement.h1'
- self.tag = tag or name # The HTML tag
+ self.tag = tag or name # The HTML or SVG tag
self.params = params
self.opt_params = opt_params
self.factory_provider_name = factory_provider_name
@@ -76,6 +76,7 @@
info.param_infos = map(lambda tXn: ParamInfo(tXn[1], tXn[0], True),
self.opt_params)
info.requires_named_arguments = True
+ info.factory_parameters = ['"%s"' % self.tag]
return info
_html_element_constructors = {
@@ -148,40 +149,88 @@
'VideoElement': 'video'
}
-def HtmlElementConstructorInfos(typename):
+_svg_element_constructors = {
+ 'AElement': 'a',
+ 'AnimateColorElement': 'animateColor',
+ 'AnimateElement': 'animate',
+ 'AnimateMotionElement': 'animateMotion',
+ 'AnimateTransformElement': 'animateTransform',
+ 'AnimationElement': 'animation',
+ 'CircleElement': 'circle',
+ 'ClipPathElement': 'clipPath',
+ 'CursorElement': 'cursor',
+ 'DefsElement': 'defs',
+ 'DescElement': 'desc',
+ 'EllipseElement': 'ellipse',
+ 'FilterElement': 'filter',
+ 'FontElement': 'font',
+ 'FontFaceElement': 'font-face',
+ 'FontFaceFormatElement': 'font-face-format',
+ 'FontFaceNameElement': 'font-face-name',
+ 'FontFaceSrcElement': 'font-face-src',
+ 'FontFaceUriElement': 'font-face-uri',
+ 'ForeignObjectElement': 'foreignObject',
+ 'GlyphElement': 'glyph',
+ 'GElement': 'g',
+ 'HKernElement': 'hkern',
+ 'ImageElement': 'image',
+ 'LinearGradientElement': 'linearGradient',
+ 'LineElement': 'line',
+ 'MarkerElement': 'marker',
+ 'MaskElement': 'mask',
+ 'MPathElement': 'mpath',
+ 'PathElement': 'path',
+ 'PatternElement': 'pattern',
+ 'PolygonElement': 'polygon',
+ 'PolylineElement': 'polyline',
+ 'RadialGradientElement': 'radialGradient',
+ 'RectElement': 'rect',
+ 'ScriptElement': 'script',
+ 'SetElement': 'set',
+ 'StopElement': 'stop',
+ 'StyleElement': 'style',
+ 'SwitchElement': 'switch',
+ 'SymbolElement': 'symbol',
+ 'TextElement': 'text',
+ 'TitleElement': 'title',
+ 'TRefElement': 'tref',
+ 'TSpanElement': 'tspan',
+ 'UseElement': 'use',
+ 'ViewElement': 'view',
+ 'VKernElement': 'vkern',
+}
+
+_element_constructors = {
+ 'html': _html_element_constructors,
+ 'svg': _svg_element_constructors
+}
+
+_factory_ctr_strings = {
+ 'html': {
+ 'provider_name': 'document',
+ 'constructor_name': '$dom_createElement'
+ },
+ 'svg': {
+ 'provider_name': '_SvgElementFactoryProvider',
+ 'constructor_name': 'createSvgElement_tag',
+ },
+}
+
+def ElementConstructorInfos(typename, element_constructors,
+ factory_provider_name='_Elements'):
"""Returns list of ElementConstructorInfos about the convenience constructors
- for an Element."""
+ for an Element or SvgElement."""
# TODO(sra): Handle multiple and named constructors.
- if typename not in _html_element_constructors:
+ if typename not in element_constructors:
return []
- infos = _html_element_constructors[typename]
+ infos = element_constructors[typename]
if isinstance(infos, str):
- infos = ElementConstructorInfo(tag=infos)
+ infos = ElementConstructorInfo(tag=infos,
+ factory_provider_name=factory_provider_name)
if not isinstance(infos, list):
infos = [infos]
return infos
-def EmitHtmlElementFactoryConstructors(emitter, infos, typename, class_name,
- rename_type):
- for info in infos:
- constructor_info = info.ConstructorInfo(typename)
-
- inits = emitter.Emit(
- '\n'
- ' static $RETURN_TYPE $CONSTRUCTOR($PARAMS) {\n'
- ' $CLASS _e = document.$dom_createElement("$TAG");\n'
- '$!INITS'
- ' return _e;\n'
- ' }\n',
- RETURN_TYPE=rename_type(constructor_info.type_name),
- CONSTRUCTOR=constructor_info.ConstructorFactoryName(rename_type),
- CLASS=class_name,
- TAG=info.tag,
- PARAMS=constructor_info.ParametersDeclaration(
- rename_type, force_optional=True))
- for param in constructor_info.param_infos:
- inits.Emit(' if ($E != null) _e.$E = $E;\n', E=param.name)
-
# ------------------------------------------------------------------------------
class HtmlDartInterfaceGenerator(object):
@@ -226,6 +275,7 @@
factory_provider = None
if interface_name in interface_factories:
factory_provider = interface_factories[interface_name]
+ factory_constructor_name = None
constructors = []
if interface_name in _static_classes:
@@ -240,17 +290,14 @@
self._backend.EmitFactoryProvider(
constructor_info, factory_provider, factory_provider_emitter)
- infos = HtmlElementConstructorInfos(interface_name)
+ # HTML Elements and SVG Elements have convenience constructors.
+ infos = ElementConstructorInfos(interface_name,
+ _element_constructors[self._library_name], factory_provider_name=
+ _factory_ctr_strings[self._library_name]['provider_name'])
+
if infos:
- template = self._template_loader.Load(
- 'factoryprovider_Elements.darttemplate')
- EmitHtmlElementFactoryConstructors(
- self._library_emitter.FileEmitter('_Elements', self._library_name,
- template),
- infos,
- self._interface.id,
- self._interface_type_info.implementation_name(),
- self._DartType)
+ factory_constructor_name = _factory_ctr_strings[
+ self._library_name]['constructor_name']
for info in infos:
constructors.append(info.ConstructorInfo(self._interface.id))
@@ -302,7 +349,7 @@
self._backend.AddConstructors(constructors, factory_provider,
self._interface_type_info.implementation_name(),
- base_class)
+ base_class, factory_constructor_name=factory_constructor_name)
events_class_name = self._event_generator.ProcessInterface(
self._interface, interface_name,
@@ -435,30 +482,25 @@
if 'CustomIndexedSetter' in self._interface.ext_attrs:
self._members_emitter.Emit(
'\n'
- ' void operator[]=(int index, $TYPE value) =>'
- ' JS("void", "#[#] = #", this, index, value);\n',
+ ' void operator[]=(int index, $TYPE value) {'
+ ' JS("void", "#[#] = #", this, index, value); }',
TYPE=self._NarrowInputType(element_type))
else:
- # The HTML library implementation of NodeList has a custom indexed setter
- # implementation that uses the parent node the NodeList is associated
- # with if one is available.
- if self._interface.id != 'NodeList':
- self._members_emitter.Emit(
- '\n'
- ' void operator[]=(int index, $TYPE value) {\n'
- ' throw new UnsupportedError("Cannot assign element of immutable List.");\n'
- ' }\n',
- TYPE=self._NarrowInputType(element_type))
+ self._members_emitter.Emit(
+ '\n'
+ ' void operator[]=(int index, $TYPE value) {\n'
+ ' throw new UnsupportedError("Cannot assign element of immutable List.");\n'
+ ' }\n',
+ TYPE=self._NarrowInputType(element_type))
# TODO(sra): Use separate mixins for mutable implementations of List<T>.
# TODO(sra): Use separate mixins for typed array implementations of List<T>.
- if self._interface.id != 'NodeList':
- template_file = 'immutable_list_mixin.darttemplate'
- has_contains = any(op.id == 'contains' for op in self._interface.operations)
- template = self._template_loader.Load(
- template_file,
- {'DEFINE_CONTAINS': not has_contains})
- self._members_emitter.Emit(template, E=self._DartType(element_type))
+ template_file = 'immutable_list_mixin.darttemplate'
+ has_contains = any(op.id == 'contains' for op in self._interface.operations)
+ template = self._template_loader.Load(
+ template_file,
+ {'DEFINE_CONTAINS': not has_contains})
+ self._members_emitter.Emit(template, E=self._DartType(element_type))
def EmitAttribute(self, attribute, html_name, read_only):
if self._HasCustomImplementation(attribute.id):
@@ -506,17 +548,20 @@
output_type = self.SecureOutputType(attribute.type.id)
input_type = self._NarrowInputType(attribute.type.id)
+ annotations = self._Annotations(attribute.type.id, attribute.id)
self.EmitAttributeDocumentation(attribute)
if not read_only:
self._members_emitter.Emit(
- '\n $TYPE $NAME;'
+ '\n $ANNOTATIONS$TYPE $NAME;'
'\n',
+ ANNOTATIONS=annotations,
NAME=DartDomNameOfAttribute(attribute),
TYPE=output_type)
else:
self._members_emitter.Emit(
- '\n final $TYPE $NAME;'
+ '\n $(ANNOTATIONS)final $TYPE $NAME;'
'\n',
+ ANNOTATIONS=annotations,
NAME=DartDomNameOfAttribute(attribute),
TYPE=output_type)
@@ -539,13 +584,15 @@
if conversion:
return self._AddConvertingGetter(attr, html_name, conversion)
return_type = self.SecureOutputType(attr.type.id)
+ native_type = self._NarrowToImplementationType(attr.type.id)
self._members_emitter.Emit(
# TODO(sra): Use metadata to provide native name.
- '\n $TYPE get $HTML_NAME => JS("$TYPE", "#.$NAME", this);'
+ '\n $TYPE get $HTML_NAME => JS("$NATIVE_TYPE", "#.$NAME", this);'
'\n',
HTML_NAME=html_name,
NAME=attr.id,
- TYPE=return_type)
+ TYPE=return_type,
+ NATIVE_TYPE=native_type)
def _AddRenamingSetter(self, attr, html_name):
self.EmitAttributeDocumentation(attr)
@@ -618,8 +665,10 @@
if html_name != info.declared_name:
return_type = self.SecureOutputType(info.type_name)
- operation_emitter = self._members_emitter.Emit('$!SCOPE',
+ operation_emitter = self._members_emitter.Emit(
+ '$!SCOPE',
MODIFIERS='static ' if info.IsStatic() else '',
+ ANNOTATIONS=self._Annotations(info.type_name, info.declared_name),
TYPE=return_type,
HTML_NAME=html_name,
NAME=info.declared_name,
@@ -627,13 +676,14 @@
operation_emitter.Emit(
'\n'
- #' // @native("$NAME")\n;'
- ' $MODIFIERS$TYPE $(HTML_NAME)($PARAMS) native "$NAME";\n')
+ ' $ANNOTATIONS'
+ '$MODIFIERS$TYPE $(HTML_NAME)($PARAMS) native "$NAME";\n')
else:
self._members_emitter.Emit(
'\n'
- ' $MODIFIERS$TYPE $NAME($PARAMS) native;\n',
+ ' $ANNOTATIONS$MODIFIERS$TYPE $NAME($PARAMS) native;\n',
MODIFIERS='static ' if info.IsStatic() else '',
+ ANNOTATIONS=self._Annotations(info.type_name, info.declared_name),
TYPE=self.SecureOutputType(info.type_name),
NAME=info.name,
PARAMS=info.ParametersDeclaration(self._NarrowInputType))
@@ -735,7 +785,9 @@
call_emitter.Emit('$(INDENT)return $CALL;\n', CALL=call)
self._members_emitter.Emit(
- ' $TYPE$TARGET($PARAMS) native "$NATIVE";\n',
+ ' $MODIFIERS$ANNOTATIONS$TYPE$TARGET($PARAMS) native "$NATIVE";\n',
+ MODIFIERS='static ' if info.IsStatic() else '',
+ ANNOTATIONS=self._Annotations(info.type_name, info.declared_name),
TYPE=TypeOrNothing(native_return_type),
TARGET=target,
PARAMS=', '.join(target_parameters),
@@ -766,7 +818,7 @@
GenerateChecksAndCall(operation, position)
GenerateChecksAndCall(operation, len(operation.arguments))
body.Emit(
- ' throw const Exception("Incorrect number or type of arguments");'
+ ' throw new ArgumentError("Incorrect number or type of arguments");'
'\n');
else:
operation = operations[0]
@@ -819,6 +871,17 @@
member_name)
return member_name in _js_custom_members
+ def _Annotations(self, idl_type, member_name):
+ annotations = FindAnnotations(idl_type, self._interface.id, member_name)
+ if annotations:
+ return '%s\n ' % annotations
+ return_type = self.SecureOutputType(idl_type)
+ native_type = self._NarrowToImplementationType(idl_type)
+ if native_type != return_type:
+ return "@Returns('%s') @Creates('%s')\n " % (native_type, native_type)
+ else:
+ return ''
+
def CustomJSMembers(self):
return _js_custom_members
@@ -877,7 +940,8 @@
self._dart_libraries = dart_libraries
def FileEmitter(self, basename, library_name, template=None):
- path = os.path.join(self._dart_sources_dir, '%s.dart' % basename)
+ aux_dir = os.path.join(self._dart_sources_dir, library_name)
+ path = os.path.join(aux_dir, '%s.dart' % basename)
if not path in self._path_to_emitter:
emitter = self._multiemitter.FileEmitter(path)
if not template is None:
diff --git a/sdk/lib/html/scripts/systemnative.py b/sdk/lib/html/scripts/systemnative.py
index 09e0208..7961d94 100644
--- a/sdk/lib/html/scripts/systemnative.py
+++ b/sdk/lib/html/scripts/systemnative.py
@@ -80,7 +80,10 @@
ARGUMENTS_DECLARATION=arguments_declaration,
ARGUMENT_COUNT=len(arguments))
- cpp_header_emitter = self._cpp_library_emitter.CreateHeaderEmitter(self._interface.id, True)
+ cpp_header_emitter = self._cpp_library_emitter.CreateHeaderEmitter(
+ self._interface.id,
+ self._renamer.GetLibraryName(self._interface),
+ True)
cpp_header_emitter.Emit(
self._template_loader.Load('cpp_callback_header.template'),
INTERFACE=self._interface.id,
@@ -112,7 +115,9 @@
def StartInterface(self, memebers_emitter):
# Create emitters for c++ implementation.
if not IsPureInterface(self._interface.id):
- self._cpp_header_emitter = self._cpp_library_emitter.CreateHeaderEmitter(self._interface.id)
+ self._cpp_header_emitter = self._cpp_library_emitter.CreateHeaderEmitter(
+ self._interface.id,
+ self._renamer.GetLibraryName(self._interface))
self._cpp_impl_emitter = self._cpp_library_emitter.CreateSourceEmitter(self._interface.id)
else:
self._cpp_header_emitter = emitter.Emitter()
@@ -208,10 +213,10 @@
ARGUMENTS=constructor_info.ParametersAsArgumentList(),
NATIVE_NAME=native_binding)
- def AddConstructors(self, constructors, factory_provider, class_name,
- base_class):
- super(DartiumBackend, self).AddConstructors(constructors, factory_provider,
- class_name, base_class)
+ def AddConstructors(self, constructors, factory_name, class_name,
+ base_class, factory_constructor_name=None):
+ super(DartiumBackend, self).AddConstructors(constructors, factory_name,
+ class_name, base_class, factory_constructor_name)
super_constructor = ''
if base_class and base_class != 'NativeFieldWrapperClass1':
@@ -392,20 +397,12 @@
if self._HasNativeIndexSetter():
self._EmitNativeIndexSetter(dart_element_type)
else:
- # The HTML library implementation of NodeList has a custom indexed setter
- # implementation that uses the parent node the NodeList is associated
- # with if one is available.
- if self._interface.id != 'NodeList':
- self._members_emitter.Emit(
- '\n'
- ' void operator[]=(int index, $TYPE value) {\n'
- ' throw new UnsupportedError("Cannot assign element of immutable List.");\n'
- ' }\n',
- TYPE=dart_element_type)
-
- # The list interface for this class is manually generated.
- if self._interface.id == 'NodeList':
- return
+ self._members_emitter.Emit(
+ '\n'
+ ' void operator[]=(int index, $TYPE value) {\n'
+ ' throw new UnsupportedError("Cannot assign element of immutable List.");\n'
+ ' }\n',
+ TYPE=dart_element_type)
# TODO(sra): Use separate mixins for mutable implementations of List<T>.
# TODO(sra): Use separate mixins for typed array implementations of List<T>.
@@ -862,13 +859,15 @@
def __init__(self, emitters, cpp_sources_dir):
self._emitters = emitters
self._cpp_sources_dir = cpp_sources_dir
- self._headers_list = []
+ self._library_headers = {}
self._sources_list = []
- def CreateHeaderEmitter(self, interface_name, is_callback=False):
+ def CreateHeaderEmitter(self, interface_name, library_name, is_callback=False):
path = os.path.join(self._cpp_sources_dir, 'Dart%s.h' % interface_name)
if not is_callback:
- self._headers_list.append(path)
+ if not library_name in self._library_headers:
+ self._library_headers[library_name] = []
+ self._library_headers[library_name].append(path)
return self._emitters.FileEmitter(path)
def CreateSourceEmitter(self, interface_name):
@@ -887,12 +886,17 @@
includes_emitter.Emit('#include "$PATH"\n', PATH=path)
def EmitResolver(self, template, output_dir):
- file_path = os.path.join(output_dir, 'DartResolver.cpp')
- includes_emitter, body_emitter = self._emitters.FileEmitter(file_path).Emit(template)
- for header_file in self._headers_list:
- path = os.path.relpath(header_file, output_dir)
- includes_emitter.Emit('#include "$PATH"\n', PATH=path)
- body_emitter.Emit(
- ' if (Dart_NativeFunction func = $CLASS_NAME::resolver(name, argumentCount))\n'
- ' return func;\n',
- CLASS_NAME=os.path.splitext(os.path.basename(path))[0])
+ for library_name in self._library_headers.keys():
+ file_path = os.path.join(output_dir, '%s_DartResolver.cpp' % library_name)
+ includes_emitter, body_emitter = self._emitters.FileEmitter(file_path).Emit(
+ template,
+ LIBRARY_NAME=library_name)
+
+ headers = self._library_headers[library_name]
+ for header_file in headers:
+ path = os.path.relpath(header_file, output_dir)
+ includes_emitter.Emit('#include "$PATH"\n', PATH=path)
+ body_emitter.Emit(
+ ' if (Dart_NativeFunction func = $CLASS_NAME::resolver(name, argumentCount))\n'
+ ' return func;\n',
+ CLASS_NAME=os.path.splitext(os.path.basename(path))[0])
diff --git a/sdk/lib/html/src/CrossFrameTypes.dart b/sdk/lib/html/src/CrossFrameTypes.dart
index 68597f0..b77284c 100644
--- a/sdk/lib/html/src/CrossFrameTypes.dart
+++ b/sdk/lib/html/src/CrossFrameTypes.dart
@@ -4,19 +4,88 @@
part of html;
+/**
+ * An object representing the top-level context object for web scripting.
+ *
+ * In a web browser, a [Window] object represents the actual browser window.
+ * In a multi-tabbed browser, each tab has its own [Window] object. A [Window]
+ * is the container that displays a [Document]'s content. All web scripting
+ * happens within the context of a [Window] object.
+ *
+ * **Note:** This class represents any window, whereas [LocalWindow] is
+ * used to access the properties and content of the current window.
+ *
+ * See also:
+ *
+ * * [DOM Window](https://developer.mozilla.org/en-US/docs/DOM/window) from MDN.
+ * * [Window](http://www.w3.org/TR/Window/) from the W3C.
+ */
abstract class Window {
// Fields.
+
+ /**
+ * The current location of this window.
+ *
+ * Location currentLocation = window.location;
+ * print(currentLocation.href); // 'http://www.example.com:80/'
+ */
Location get location;
History get history;
+ /**
+ * Indicates whether this window is closed.
+ *
+ * print(window.closed); // 'false'
+ * window.close();
+ * print(window.closed); // 'true'
+ */
bool get closed;
+
+ /**
+ * A reference to the window that opened this one.
+ *
+ * Window thisWindow = window;
+ * Window otherWindow = thisWindow.open('http://www.example.com/', 'foo');
+ * print(otherWindow.opener == thisWindow); // 'true'
+ */
Window get opener;
+
+ /**
+ * A reference to the parent of this window.
+ *
+ * If this [Window] has no parent, [parent] will return a reference to
+ * the [Window] itself.
+ *
+ * IFrameElement myIFrame = new IFrameElement();
+ * window.document.body.elements.add(myIFrame);
+ * print(myIframe.contentWindow.parent == window) // 'true'
+ *
+ * print(window.parent == window) // 'true'
+ */
Window get parent;
+
+ /**
+ * A reference to the topmost window in the window hierarchy.
+ *
+ * If this [Window] is the topmost [Window], [top] will return a reference to
+ * the [Window] itself.
+ *
+ * // Add an IFrame to the current window.
+ * IFrameElement myIFrame = new IFrameElement();
+ * window.document.body.elements.add(myIFrame);
+ *
+ * // Add an IFrame inside of the other IFrame.
+ * IFrameElement innerIFrame = new IFrameElement();
+ * myIFrame.elements.add(innerIFrame);
+ *
+ * print(myIframe.contentWindow.top == window) // 'true'
+ * print(innerIFrame.contentWindow.top == window) // 'true'
+ *
+ * print(window.top == window) // 'true'
+ */
Window get top;
// Methods.
- void focus();
- void blur();
void close();
void postMessage(var message, String targetOrigin, [List messagePorts = null]);
}
diff --git a/sdk/lib/html/src/FilteredElementList.dart b/sdk/lib/html/src/FilteredElementList.dart
index 86a5787..33d1ab3 100644
--- a/sdk/lib/html/src/FilteredElementList.dart
+++ b/sdk/lib/html/src/FilteredElementList.dart
@@ -100,5 +100,7 @@
return _filtered.lastIndexOf(element, start);
}
+ Element get first => _filtered.first;
+
Element get last => _filtered.last;
}
diff --git a/sdk/lib/html/src/dart2js_Conversions.dart b/sdk/lib/html/src/dart2js_Conversions.dart
index ab0b851..cc44699 100644
--- a/sdk/lib/html/src/dart2js_Conversions.dart
+++ b/sdk/lib/html/src/dart2js_Conversions.dart
@@ -99,7 +99,7 @@
Map _convertNativeToDart_Dictionary(object) {
if (object == null) return null;
var dict = {};
- for (final key in JS('List', 'Object.getOwnPropertyNames(#)', object)) {
+ for (final key in JS('=List', 'Object.getOwnPropertyNames(#)', object)) {
dict[key] = JS('var', '#[#]', object, key);
}
return dict;
@@ -276,7 +276,7 @@
var copy = readSlot(slot);
if (copy != null) {
if (true == copy) { // Cycle, so commit to making a copy.
- copy = JS('List', 'new Array(#)', length);
+ copy = JS('=List', 'new Array(#)', length);
writeSlot(slot, copy);
}
return copy;
@@ -296,7 +296,7 @@
if (!identical(elementCopy, element)) {
copy = readSlot(slot); // Cyclic reference may have created it.
if (true == copy) {
- copy = JS('List', 'new Array(#)', length);
+ copy = JS('=List', 'new Array(#)', length);
writeSlot(slot, copy);
}
for (int j = 0; j < i; j++) {
@@ -313,7 +313,7 @@
}
} else {
// Not a JavaScript Array. We are forced to make a copy.
- copy = JS('List', 'new Array(#)', length);
+ copy = JS('=List', 'new Array(#)', length);
writeSlot(slot, copy);
}
@@ -393,7 +393,7 @@
copy = {};
writeSlot(slot, copy);
- for (final key in JS('List', 'Object.keys(#)', e)) {
+ for (final key in JS('=List', 'Object.keys(#)', e)) {
copy[key] = walk(JS('var', '#[#]', e, key));
}
return copy;
@@ -407,7 +407,7 @@
int length = e.length;
// Since a JavaScript Array is an instance of Dart List, we can modify it
// in-place unless we must copy.
- copy = mustCopy ? JS('List', 'new Array(#)', length) : e;
+ copy = mustCopy ? JS('=List', 'new Array(#)', length) : e;
writeSlot(slot, copy);
for (int i = 0; i < length; i++) {
@@ -433,3 +433,20 @@
JS('bool', 'Object.getPrototypeOf(#) === Object.prototype', value);
bool _isImmutableJavaScriptArray(value) =>
JS('bool', r'!!(#.immutable$list)', value);
+
+
+
+const String _serializedScriptValue =
+ 'num|String|bool|'
+ '=List|=Object|'
+ 'Blob|File|ArrayBuffer|ArrayBufferView'
+ // TODO(sra): Add Date, RegExp.
+ ;
+const _annotation_Creates_SerializedScriptValue =
+ const Creates(_serializedScriptValue);
+const _annotation_Returns_SerializedScriptValue =
+ const Returns(_serializedScriptValue);
+
+const String _idbKey = '=List|=Object|num|String'; // TODO(sra): Add Date.
+const _annotation_Creates_IDBKey = const Creates(_idbKey);
+const _annotation_Returns_IDBKey = const Returns(_idbKey);
diff --git a/sdk/lib/html/src/dart2js_DOMImplementation.dart b/sdk/lib/html/src/dart2js_DOMImplementation.dart
index 43be003..9056a14 100644
--- a/sdk/lib/html/src/dart2js_DOMImplementation.dart
+++ b/sdk/lib/html/src/dart2js_DOMImplementation.dart
@@ -28,10 +28,6 @@
Window get top => _createSafe(JS('Window', '#.top', _window));
// Methods.
- void focus() => JS('void', '#.focus()', _window);
-
- void blur() => JS('void', '#.blur()', _window);
-
void close() => JS('void', '#.close()', _window);
void postMessage(var message, String targetOrigin, [List messagePorts = null]) {
diff --git a/sdk/lib/html/src/native_DOMImplementation.dart b/sdk/lib/html/src/native_DOMImplementation.dart
index 3d3689c..1d1eceb 100644
--- a/sdk/lib/html/src/native_DOMImplementation.dart
+++ b/sdk/lib/html/src/native_DOMImplementation.dart
@@ -60,8 +60,6 @@
Window get top() native "DOMWindow_top_Getter";
// Methods.
- void focus() native "DOMWindow_focus_Callback";
- void blur() native "DOMWindow_blur_Callback";
void close() native "DOMWindow_close_Callback";
void postMessage(/*SerializedScriptValue*/ message, String targetOrigin, [List messagePorts]) native "DOMWindow_postMessage_Callback";
diff --git a/sdk/lib/html/src/shared_SVGFactoryProviders.dart b/sdk/lib/html/src/shared_SVGFactoryProviders.dart
index 833f7e8..7a5759a 100644
--- a/sdk/lib/html/src/shared_SVGFactoryProviders.dart
+++ b/sdk/lib/html/src/shared_SVGFactoryProviders.dart
@@ -6,20 +6,20 @@
final _START_TAG_REGEXP = new RegExp('<(\\w+)');
-class _SVGElementFactoryProvider {
- static SVGElement createSVGElement_tag(String tag) {
+class _SvgElementFactoryProvider {
+ static SvgElement createSvgElement_tag(String tag) {
final Element temp =
document.$dom_createElementNS("http://www.w3.org/2000/svg", tag);
return temp;
}
- static SVGElement createSVGElement_svg(String svg) {
+ static SvgElement createSvgElement_svg(String svg) {
Element parentTag;
final match = _START_TAG_REGEXP.firstMatch(svg);
if (match != null && match.group(1).toLowerCase() == 'svg') {
parentTag = new Element.tag('div');
} else {
- parentTag = new SVGSVGElement();
+ parentTag = new SvgSvgElement();
}
parentTag.innerHTML = svg;
@@ -31,9 +31,9 @@
}
}
-class _SVGSVGElementFactoryProvider {
- static SVGSVGElement createSVGSVGElement() {
- final el = new SVGElement.tag("svg");
+class _SvgSvgElementFactoryProvider {
+ static SvgSvgElement createSvgSvgElement() {
+ final el = new SvgElement.tag("svg");
// The SVG spec requires the version attribute to match the spec version
el.attributes['version'] = "1.1";
return el;
diff --git a/sdk/lib/html/templates/dart2js_impl.darttemplate b/sdk/lib/html/templates/dart2js_impl.darttemplate
index aa72fd2..5c62c0e 100644
--- a/sdk/lib/html/templates/dart2js_impl.darttemplate
+++ b/sdk/lib/html/templates/dart2js_impl.darttemplate
@@ -4,6 +4,6 @@
part of $LIBRARYNAME;
-/// @domName $DOMNAME
+/// @domName $DOMNAME; @docsEditable true
class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
$!MEMBERS}
diff --git a/sdk/lib/html/templates/html/dart2js/factoryprovider_HttpRequest.darttemplate b/sdk/lib/html/templates/html/dart2js/factoryprovider_HttpRequest.darttemplate
index c1acc88..a739f36 100644
--- a/sdk/lib/html/templates/html/dart2js/factoryprovider_HttpRequest.darttemplate
+++ b/sdk/lib/html/templates/html/dart2js/factoryprovider_HttpRequest.darttemplate
@@ -9,10 +9,10 @@
JS('HttpRequest', 'new XMLHttpRequest()');
static HttpRequest createHttpRequest_get(String url,
- onSuccess(HttpRequest request)) =>
- _HttpRequestUtils.get(url, onSuccess, false);
+ onComplete(HttpRequest request)) =>
+ _HttpRequestUtils.get(url, onComplete, false);
static HttpRequest createHttpRequest_getWithCredentials(String url,
- onSuccess(HttpRequest request)) =>
- _HttpRequestUtils.get(url, onSuccess, true);
+ onComplete(HttpRequest request)) =>
+ _HttpRequestUtils.get(url, onComplete, true);
}
diff --git a/sdk/lib/html/templates/html/dart2js/factoryprovider_MutationObserver.darttemplate b/sdk/lib/html/templates/html/dart2js/factoryprovider_MutationObserver.darttemplate
index d92979b..affcb7c 100644
--- a/sdk/lib/html/templates/html/dart2js/factoryprovider_MutationObserver.darttemplate
+++ b/sdk/lib/html/templates/html/dart2js/factoryprovider_MutationObserver.darttemplate
@@ -5,20 +5,10 @@
part of html;
class $FACTORYPROVIDER {
- static $CONSTRUCTOR create$(CONSTRUCTOR)(MutationCallback callback) {
- // This is a hack to cause MutationRecord to appear to be instantiated.
- //
- // MutationCallback has a parameter type List<MutationRecord>. From this we
- // infer a list is created in the browser, but not the element type, because
- // other native fields and methods return plain List which is too general
- // and would imply creating anything. This statement is a work-around.
- JS('MutationRecord','0');
-
- return _create$(CONSTRUCTOR)(callback);
- }
-
- static $CONSTRUCTOR _create$(CONSTRUCTOR)(MutationCallback callback) native '''
+ @Creates('MutationObserver')
+ @Creates('MutationRecord')
+ static $CONSTRUCTOR create$(CONSTRUCTOR)(MutationCallback callback) native '''
var constructor =
window.MutationObserver || window.WebKitMutationObserver ||
window.MozMutationObserver;
diff --git a/sdk/lib/html/templates/html/dart2js/factoryprovider_TextTrackCue.darttemplate b/sdk/lib/html/templates/html/dart2js/factoryprovider_TextTrackCue.darttemplate
index f1e5a8d..63cad24 100644
--- a/sdk/lib/html/templates/html/dart2js/factoryprovider_TextTrackCue.darttemplate
+++ b/sdk/lib/html/templates/html/dart2js/factoryprovider_TextTrackCue.darttemplate
@@ -6,20 +6,20 @@
class $FACTORYPROVIDER {
static TextTrackCue createTextTrackCue(
- String id, num startTime, num endTime, String text,
+ num startTime, num endTime, String text,
[String settings, bool pauseOnExit]) {
if (settings == null) {
return JS('TextTrackCue',
- 'new TextTrackCue(#,#,#,#)',
- id, startTime, endTime, text);
+ 'new TextTrackCue(#,#,#)',
+ startTime, endTime, text);
}
if (pauseOnExit == null) {
return JS('TextTrackCue',
- 'new TextTrackCue(#,#,#,#,#)',
- id, startTime, endTime, text, settings);
+ 'new TextTrackCue(#,#,#,#)',
+ startTime, endTime, text, settings);
}
return JS('TextTrackCue',
- 'new TextTrackCue(#,#,#,#,#,#)',
- id, startTime, endTime, text, settings, pauseOnExit);
+ 'new TextTrackCue(#,#,#,#,#)',
+ startTime, endTime, text, settings, pauseOnExit);
}
}
diff --git a/sdk/lib/html/templates/html/dart2js/impl_LocalWindow.darttemplate b/sdk/lib/html/templates/html/dart2js/impl_LocalWindow.darttemplate
index 8f095cb..5542bf8 100644
--- a/sdk/lib/html/templates/html/dart2js/impl_LocalWindow.darttemplate
+++ b/sdk/lib/html/templates/html/dart2js/impl_LocalWindow.darttemplate
@@ -131,7 +131,7 @@
* registered under [name].
*/
SendPortSync lookupPort(String name) {
- var port = JSON.parse(localStorage['dart-port:$name']);
+ var port = JSON.parse(document.documentElement.attributes['dart-port:$name']);
return _deserialize(port);
}
@@ -142,7 +142,7 @@
*/
void registerPort(String name, var port) {
var serialized = _serialize(port);
- localStorage['dart-port:$name'] = JSON.stringify(serialized);
+ document.documentElement.attributes['dart-port:$name'] = JSON.stringify(serialized);
}
$!MEMBERS
diff --git a/sdk/lib/html/templates/html/dartium/cpp_resolver.template b/sdk/lib/html/templates/html/dartium/cpp_resolver.template
index 3c8ac57..e104ebe 100644
--- a/sdk/lib/html/templates/html/dartium/cpp_resolver.template
+++ b/sdk/lib/html/templates/html/dartium/cpp_resolver.template
@@ -9,7 +9,7 @@
namespace WebCore {
-Dart_NativeFunction snapshotResolver(Dart_Handle name, int argumentCount)
+Dart_NativeFunction $(LIBRARY_NAME)SnapshotResolver(Dart_Handle name, int argumentCount)
{
$!RESOLVER_BODY
return 0;
diff --git a/sdk/lib/html/templates/html/dartium/impl_LocalWindow.darttemplate b/sdk/lib/html/templates/html/dartium/impl_LocalWindow.darttemplate
index 6cedf2d..476d8dd 100644
--- a/sdk/lib/html/templates/html/dartium/impl_LocalWindow.darttemplate
+++ b/sdk/lib/html/templates/html/dartium/impl_LocalWindow.darttemplate
@@ -20,7 +20,7 @@
* registered under [name].
*/
lookupPort(String name) {
- var port = JSON.parse(localStorage['dart-port:$name']);
+ var port = JSON.parse(document.documentElement.attributes['dart-port:$name']);
return _deserialize(port);
}
@@ -31,7 +31,7 @@
*/
registerPort(String name, var port) {
var serialized = _serialize(port);
- localStorage['dart-port:$name'] = JSON.stringify(serialized);
+ document.documentElement.attributes['dart-port:$name'] = JSON.stringify(serialized);
}
$!MEMBERS
diff --git a/sdk/lib/html/templates/html/impl/factoryprovider_Elements.darttemplate b/sdk/lib/html/templates/html/impl/factoryprovider_Elements.darttemplate
index 561ece0d..e69de29 100644
--- a/sdk/lib/html/templates/html/impl/factoryprovider_Elements.darttemplate
+++ b/sdk/lib/html/templates/html/impl/factoryprovider_Elements.darttemplate
@@ -1,9 +0,0 @@
-// Copyright (c) 2012, 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.
-
-part of html;
-
-class _Elements {
-
-$!FACTORY_METHODS}
diff --git a/sdk/lib/html/templates/html/impl/impl_CSSStyleDeclaration.darttemplate b/sdk/lib/html/templates/html/impl/impl_CSSStyleDeclaration.darttemplate
index de9e208..347acfc 100644
--- a/sdk/lib/html/templates/html/impl/impl_CSSStyleDeclaration.darttemplate
+++ b/sdk/lib/html/templates/html/impl/impl_CSSStyleDeclaration.darttemplate
@@ -44,12 +44,39 @@
$endif
// TODO(jacobr): generate this list of properties using the existing script.
- /** Gets the value of "animation" */
+ /** Gets the value of "align-content" */
+ String get alignContent =>
+ getPropertyValue('${_browserPrefix}align-content');
+
+ /** Sets the value of "align-content" */
+ void set alignContent(String value) {
+ setProperty('${_browserPrefix}align-content', value, '');
+ }
+
+ /** Gets the value of "align-items" */
+ String get alignItems =>
+ getPropertyValue('${_browserPrefix}align-items');
+
+ /** Sets the value of "align-items" */
+ void set alignItems(String value) {
+ setProperty('${_browserPrefix}align-items', value, '');
+ }
+
+ /** Gets the value of "align-self" */
+ String get alignSelf =>
+ getPropertyValue('${_browserPrefix}align-self');
+
+ /** Sets the value of "align-self" */
+ void set alignSelf(String value) {
+ setProperty('${_browserPrefix}align-self', value, '');
+ }
+
+ /** Gets the value of "animation" */
String get animation =>
getPropertyValue('${_browserPrefix}animation');
/** Sets the value of "animation" */
- void set animation(var value) {
+ void set animation(String value) {
setProperty('${_browserPrefix}animation', value, '');
}
@@ -58,7 +85,7 @@
getPropertyValue('${_browserPrefix}animation-delay');
/** Sets the value of "animation-delay" */
- void set animationDelay(var value) {
+ void set animationDelay(String value) {
setProperty('${_browserPrefix}animation-delay', value, '');
}
@@ -67,7 +94,7 @@
getPropertyValue('${_browserPrefix}animation-direction');
/** Sets the value of "animation-direction" */
- void set animationDirection(var value) {
+ void set animationDirection(String value) {
setProperty('${_browserPrefix}animation-direction', value, '');
}
@@ -76,7 +103,7 @@
getPropertyValue('${_browserPrefix}animation-duration');
/** Sets the value of "animation-duration" */
- void set animationDuration(var value) {
+ void set animationDuration(String value) {
setProperty('${_browserPrefix}animation-duration', value, '');
}
@@ -85,7 +112,7 @@
getPropertyValue('${_browserPrefix}animation-fill-mode');
/** Sets the value of "animation-fill-mode" */
- void set animationFillMode(var value) {
+ void set animationFillMode(String value) {
setProperty('${_browserPrefix}animation-fill-mode', value, '');
}
@@ -94,7 +121,7 @@
getPropertyValue('${_browserPrefix}animation-iteration-count');
/** Sets the value of "animation-iteration-count" */
- void set animationIterationCount(var value) {
+ void set animationIterationCount(String value) {
setProperty('${_browserPrefix}animation-iteration-count', value, '');
}
@@ -103,7 +130,7 @@
getPropertyValue('${_browserPrefix}animation-name');
/** Sets the value of "animation-name" */
- void set animationName(var value) {
+ void set animationName(String value) {
setProperty('${_browserPrefix}animation-name', value, '');
}
@@ -112,7 +139,7 @@
getPropertyValue('${_browserPrefix}animation-play-state');
/** Sets the value of "animation-play-state" */
- void set animationPlayState(var value) {
+ void set animationPlayState(String value) {
setProperty('${_browserPrefix}animation-play-state', value, '');
}
@@ -121,25 +148,43 @@
getPropertyValue('${_browserPrefix}animation-timing-function');
/** Sets the value of "animation-timing-function" */
- void set animationTimingFunction(var value) {
+ void set animationTimingFunction(String value) {
setProperty('${_browserPrefix}animation-timing-function', value, '');
}
+ /** Gets the value of "app-region" */
+ String get appRegion =>
+ getPropertyValue('${_browserPrefix}app-region');
+
+ /** Sets the value of "app-region" */
+ void set appRegion(String value) {
+ setProperty('${_browserPrefix}app-region', value, '');
+ }
+
/** Gets the value of "appearance" */
String get appearance =>
getPropertyValue('${_browserPrefix}appearance');
/** Sets the value of "appearance" */
- void set appearance(var value) {
+ void set appearance(String value) {
setProperty('${_browserPrefix}appearance', value, '');
}
+ /** Gets the value of "aspect-ratio" */
+ String get aspectRatio =>
+ getPropertyValue('${_browserPrefix}aspect-ratio');
+
+ /** Sets the value of "aspect-ratio" */
+ void set aspectRatio(String value) {
+ setProperty('${_browserPrefix}aspect-ratio', value, '');
+ }
+
/** Gets the value of "backface-visibility" */
String get backfaceVisibility =>
getPropertyValue('${_browserPrefix}backface-visibility');
/** Sets the value of "backface-visibility" */
- void set backfaceVisibility(var value) {
+ void set backfaceVisibility(String value) {
setProperty('${_browserPrefix}backface-visibility', value, '');
}
@@ -148,7 +193,7 @@
getPropertyValue('background');
/** Sets the value of "background" */
- void set background(var value) {
+ void set background(String value) {
setProperty('background', value, '');
}
@@ -157,7 +202,7 @@
getPropertyValue('background-attachment');
/** Sets the value of "background-attachment" */
- void set backgroundAttachment(var value) {
+ void set backgroundAttachment(String value) {
setProperty('background-attachment', value, '');
}
@@ -166,7 +211,7 @@
getPropertyValue('background-clip');
/** Sets the value of "background-clip" */
- void set backgroundClip(var value) {
+ void set backgroundClip(String value) {
setProperty('background-clip', value, '');
}
@@ -175,7 +220,7 @@
getPropertyValue('background-color');
/** Sets the value of "background-color" */
- void set backgroundColor(var value) {
+ void set backgroundColor(String value) {
setProperty('background-color', value, '');
}
@@ -184,7 +229,7 @@
getPropertyValue('${_browserPrefix}background-composite');
/** Sets the value of "background-composite" */
- void set backgroundComposite(var value) {
+ void set backgroundComposite(String value) {
setProperty('${_browserPrefix}background-composite', value, '');
}
@@ -193,7 +238,7 @@
getPropertyValue('background-image');
/** Sets the value of "background-image" */
- void set backgroundImage(var value) {
+ void set backgroundImage(String value) {
setProperty('background-image', value, '');
}
@@ -202,7 +247,7 @@
getPropertyValue('background-origin');
/** Sets the value of "background-origin" */
- void set backgroundOrigin(var value) {
+ void set backgroundOrigin(String value) {
setProperty('background-origin', value, '');
}
@@ -211,7 +256,7 @@
getPropertyValue('background-position');
/** Sets the value of "background-position" */
- void set backgroundPosition(var value) {
+ void set backgroundPosition(String value) {
setProperty('background-position', value, '');
}
@@ -220,7 +265,7 @@
getPropertyValue('background-position-x');
/** Sets the value of "background-position-x" */
- void set backgroundPositionX(var value) {
+ void set backgroundPositionX(String value) {
setProperty('background-position-x', value, '');
}
@@ -229,7 +274,7 @@
getPropertyValue('background-position-y');
/** Sets the value of "background-position-y" */
- void set backgroundPositionY(var value) {
+ void set backgroundPositionY(String value) {
setProperty('background-position-y', value, '');
}
@@ -238,7 +283,7 @@
getPropertyValue('background-repeat');
/** Sets the value of "background-repeat" */
- void set backgroundRepeat(var value) {
+ void set backgroundRepeat(String value) {
setProperty('background-repeat', value, '');
}
@@ -247,7 +292,7 @@
getPropertyValue('background-repeat-x');
/** Sets the value of "background-repeat-x" */
- void set backgroundRepeatX(var value) {
+ void set backgroundRepeatX(String value) {
setProperty('background-repeat-x', value, '');
}
@@ -256,7 +301,7 @@
getPropertyValue('background-repeat-y');
/** Sets the value of "background-repeat-y" */
- void set backgroundRepeatY(var value) {
+ void set backgroundRepeatY(String value) {
setProperty('background-repeat-y', value, '');
}
@@ -265,16 +310,25 @@
getPropertyValue('background-size');
/** Sets the value of "background-size" */
- void set backgroundSize(var value) {
+ void set backgroundSize(String value) {
setProperty('background-size', value, '');
}
+ /** Gets the value of "blend-mode" */
+ String get blendMode =>
+ getPropertyValue('${_browserPrefix}blend-mode');
+
+ /** Sets the value of "blend-mode" */
+ void set blendMode(String value) {
+ setProperty('${_browserPrefix}blend-mode', value, '');
+ }
+
/** Gets the value of "border" */
String get border =>
getPropertyValue('border');
/** Sets the value of "border" */
- void set border(var value) {
+ void set border(String value) {
setProperty('border', value, '');
}
@@ -283,7 +337,7 @@
getPropertyValue('${_browserPrefix}border-after');
/** Sets the value of "border-after" */
- void set borderAfter(var value) {
+ void set borderAfter(String value) {
setProperty('${_browserPrefix}border-after', value, '');
}
@@ -292,7 +346,7 @@
getPropertyValue('${_browserPrefix}border-after-color');
/** Sets the value of "border-after-color" */
- void set borderAfterColor(var value) {
+ void set borderAfterColor(String value) {
setProperty('${_browserPrefix}border-after-color', value, '');
}
@@ -301,7 +355,7 @@
getPropertyValue('${_browserPrefix}border-after-style');
/** Sets the value of "border-after-style" */
- void set borderAfterStyle(var value) {
+ void set borderAfterStyle(String value) {
setProperty('${_browserPrefix}border-after-style', value, '');
}
@@ -310,7 +364,7 @@
getPropertyValue('${_browserPrefix}border-after-width');
/** Sets the value of "border-after-width" */
- void set borderAfterWidth(var value) {
+ void set borderAfterWidth(String value) {
setProperty('${_browserPrefix}border-after-width', value, '');
}
@@ -319,7 +373,7 @@
getPropertyValue('${_browserPrefix}border-before');
/** Sets the value of "border-before" */
- void set borderBefore(var value) {
+ void set borderBefore(String value) {
setProperty('${_browserPrefix}border-before', value, '');
}
@@ -328,7 +382,7 @@
getPropertyValue('${_browserPrefix}border-before-color');
/** Sets the value of "border-before-color" */
- void set borderBeforeColor(var value) {
+ void set borderBeforeColor(String value) {
setProperty('${_browserPrefix}border-before-color', value, '');
}
@@ -337,7 +391,7 @@
getPropertyValue('${_browserPrefix}border-before-style');
/** Sets the value of "border-before-style" */
- void set borderBeforeStyle(var value) {
+ void set borderBeforeStyle(String value) {
setProperty('${_browserPrefix}border-before-style', value, '');
}
@@ -346,7 +400,7 @@
getPropertyValue('${_browserPrefix}border-before-width');
/** Sets the value of "border-before-width" */
- void set borderBeforeWidth(var value) {
+ void set borderBeforeWidth(String value) {
setProperty('${_browserPrefix}border-before-width', value, '');
}
@@ -355,7 +409,7 @@
getPropertyValue('border-bottom');
/** Sets the value of "border-bottom" */
- void set borderBottom(var value) {
+ void set borderBottom(String value) {
setProperty('border-bottom', value, '');
}
@@ -364,7 +418,7 @@
getPropertyValue('border-bottom-color');
/** Sets the value of "border-bottom-color" */
- void set borderBottomColor(var value) {
+ void set borderBottomColor(String value) {
setProperty('border-bottom-color', value, '');
}
@@ -373,7 +427,7 @@
getPropertyValue('border-bottom-left-radius');
/** Sets the value of "border-bottom-left-radius" */
- void set borderBottomLeftRadius(var value) {
+ void set borderBottomLeftRadius(String value) {
setProperty('border-bottom-left-radius', value, '');
}
@@ -382,7 +436,7 @@
getPropertyValue('border-bottom-right-radius');
/** Sets the value of "border-bottom-right-radius" */
- void set borderBottomRightRadius(var value) {
+ void set borderBottomRightRadius(String value) {
setProperty('border-bottom-right-radius', value, '');
}
@@ -391,7 +445,7 @@
getPropertyValue('border-bottom-style');
/** Sets the value of "border-bottom-style" */
- void set borderBottomStyle(var value) {
+ void set borderBottomStyle(String value) {
setProperty('border-bottom-style', value, '');
}
@@ -400,7 +454,7 @@
getPropertyValue('border-bottom-width');
/** Sets the value of "border-bottom-width" */
- void set borderBottomWidth(var value) {
+ void set borderBottomWidth(String value) {
setProperty('border-bottom-width', value, '');
}
@@ -409,7 +463,7 @@
getPropertyValue('border-collapse');
/** Sets the value of "border-collapse" */
- void set borderCollapse(var value) {
+ void set borderCollapse(String value) {
setProperty('border-collapse', value, '');
}
@@ -418,7 +472,7 @@
getPropertyValue('border-color');
/** Sets the value of "border-color" */
- void set borderColor(var value) {
+ void set borderColor(String value) {
setProperty('border-color', value, '');
}
@@ -427,7 +481,7 @@
getPropertyValue('${_browserPrefix}border-end');
/** Sets the value of "border-end" */
- void set borderEnd(var value) {
+ void set borderEnd(String value) {
setProperty('${_browserPrefix}border-end', value, '');
}
@@ -436,7 +490,7 @@
getPropertyValue('${_browserPrefix}border-end-color');
/** Sets the value of "border-end-color" */
- void set borderEndColor(var value) {
+ void set borderEndColor(String value) {
setProperty('${_browserPrefix}border-end-color', value, '');
}
@@ -445,7 +499,7 @@
getPropertyValue('${_browserPrefix}border-end-style');
/** Sets the value of "border-end-style" */
- void set borderEndStyle(var value) {
+ void set borderEndStyle(String value) {
setProperty('${_browserPrefix}border-end-style', value, '');
}
@@ -454,7 +508,7 @@
getPropertyValue('${_browserPrefix}border-end-width');
/** Sets the value of "border-end-width" */
- void set borderEndWidth(var value) {
+ void set borderEndWidth(String value) {
setProperty('${_browserPrefix}border-end-width', value, '');
}
@@ -463,7 +517,7 @@
getPropertyValue('${_browserPrefix}border-fit');
/** Sets the value of "border-fit" */
- void set borderFit(var value) {
+ void set borderFit(String value) {
setProperty('${_browserPrefix}border-fit', value, '');
}
@@ -472,7 +526,7 @@
getPropertyValue('${_browserPrefix}border-horizontal-spacing');
/** Sets the value of "border-horizontal-spacing" */
- void set borderHorizontalSpacing(var value) {
+ void set borderHorizontalSpacing(String value) {
setProperty('${_browserPrefix}border-horizontal-spacing', value, '');
}
@@ -481,7 +535,7 @@
getPropertyValue('border-image');
/** Sets the value of "border-image" */
- void set borderImage(var value) {
+ void set borderImage(String value) {
setProperty('border-image', value, '');
}
@@ -490,7 +544,7 @@
getPropertyValue('border-image-outset');
/** Sets the value of "border-image-outset" */
- void set borderImageOutset(var value) {
+ void set borderImageOutset(String value) {
setProperty('border-image-outset', value, '');
}
@@ -499,7 +553,7 @@
getPropertyValue('border-image-repeat');
/** Sets the value of "border-image-repeat" */
- void set borderImageRepeat(var value) {
+ void set borderImageRepeat(String value) {
setProperty('border-image-repeat', value, '');
}
@@ -508,7 +562,7 @@
getPropertyValue('border-image-slice');
/** Sets the value of "border-image-slice" */
- void set borderImageSlice(var value) {
+ void set borderImageSlice(String value) {
setProperty('border-image-slice', value, '');
}
@@ -517,7 +571,7 @@
getPropertyValue('border-image-source');
/** Sets the value of "border-image-source" */
- void set borderImageSource(var value) {
+ void set borderImageSource(String value) {
setProperty('border-image-source', value, '');
}
@@ -526,7 +580,7 @@
getPropertyValue('border-image-width');
/** Sets the value of "border-image-width" */
- void set borderImageWidth(var value) {
+ void set borderImageWidth(String value) {
setProperty('border-image-width', value, '');
}
@@ -535,7 +589,7 @@
getPropertyValue('border-left');
/** Sets the value of "border-left" */
- void set borderLeft(var value) {
+ void set borderLeft(String value) {
setProperty('border-left', value, '');
}
@@ -544,7 +598,7 @@
getPropertyValue('border-left-color');
/** Sets the value of "border-left-color" */
- void set borderLeftColor(var value) {
+ void set borderLeftColor(String value) {
setProperty('border-left-color', value, '');
}
@@ -553,7 +607,7 @@
getPropertyValue('border-left-style');
/** Sets the value of "border-left-style" */
- void set borderLeftStyle(var value) {
+ void set borderLeftStyle(String value) {
setProperty('border-left-style', value, '');
}
@@ -562,7 +616,7 @@
getPropertyValue('border-left-width');
/** Sets the value of "border-left-width" */
- void set borderLeftWidth(var value) {
+ void set borderLeftWidth(String value) {
setProperty('border-left-width', value, '');
}
@@ -571,7 +625,7 @@
getPropertyValue('border-radius');
/** Sets the value of "border-radius" */
- void set borderRadius(var value) {
+ void set borderRadius(String value) {
setProperty('border-radius', value, '');
}
@@ -580,7 +634,7 @@
getPropertyValue('border-right');
/** Sets the value of "border-right" */
- void set borderRight(var value) {
+ void set borderRight(String value) {
setProperty('border-right', value, '');
}
@@ -589,7 +643,7 @@
getPropertyValue('border-right-color');
/** Sets the value of "border-right-color" */
- void set borderRightColor(var value) {
+ void set borderRightColor(String value) {
setProperty('border-right-color', value, '');
}
@@ -598,7 +652,7 @@
getPropertyValue('border-right-style');
/** Sets the value of "border-right-style" */
- void set borderRightStyle(var value) {
+ void set borderRightStyle(String value) {
setProperty('border-right-style', value, '');
}
@@ -607,7 +661,7 @@
getPropertyValue('border-right-width');
/** Sets the value of "border-right-width" */
- void set borderRightWidth(var value) {
+ void set borderRightWidth(String value) {
setProperty('border-right-width', value, '');
}
@@ -616,7 +670,7 @@
getPropertyValue('border-spacing');
/** Sets the value of "border-spacing" */
- void set borderSpacing(var value) {
+ void set borderSpacing(String value) {
setProperty('border-spacing', value, '');
}
@@ -625,7 +679,7 @@
getPropertyValue('${_browserPrefix}border-start');
/** Sets the value of "border-start" */
- void set borderStart(var value) {
+ void set borderStart(String value) {
setProperty('${_browserPrefix}border-start', value, '');
}
@@ -634,7 +688,7 @@
getPropertyValue('${_browserPrefix}border-start-color');
/** Sets the value of "border-start-color" */
- void set borderStartColor(var value) {
+ void set borderStartColor(String value) {
setProperty('${_browserPrefix}border-start-color', value, '');
}
@@ -643,7 +697,7 @@
getPropertyValue('${_browserPrefix}border-start-style');
/** Sets the value of "border-start-style" */
- void set borderStartStyle(var value) {
+ void set borderStartStyle(String value) {
setProperty('${_browserPrefix}border-start-style', value, '');
}
@@ -652,7 +706,7 @@
getPropertyValue('${_browserPrefix}border-start-width');
/** Sets the value of "border-start-width" */
- void set borderStartWidth(var value) {
+ void set borderStartWidth(String value) {
setProperty('${_browserPrefix}border-start-width', value, '');
}
@@ -661,7 +715,7 @@
getPropertyValue('border-style');
/** Sets the value of "border-style" */
- void set borderStyle(var value) {
+ void set borderStyle(String value) {
setProperty('border-style', value, '');
}
@@ -670,7 +724,7 @@
getPropertyValue('border-top');
/** Sets the value of "border-top" */
- void set borderTop(var value) {
+ void set borderTop(String value) {
setProperty('border-top', value, '');
}
@@ -679,7 +733,7 @@
getPropertyValue('border-top-color');
/** Sets the value of "border-top-color" */
- void set borderTopColor(var value) {
+ void set borderTopColor(String value) {
setProperty('border-top-color', value, '');
}
@@ -688,7 +742,7 @@
getPropertyValue('border-top-left-radius');
/** Sets the value of "border-top-left-radius" */
- void set borderTopLeftRadius(var value) {
+ void set borderTopLeftRadius(String value) {
setProperty('border-top-left-radius', value, '');
}
@@ -697,7 +751,7 @@
getPropertyValue('border-top-right-radius');
/** Sets the value of "border-top-right-radius" */
- void set borderTopRightRadius(var value) {
+ void set borderTopRightRadius(String value) {
setProperty('border-top-right-radius', value, '');
}
@@ -706,7 +760,7 @@
getPropertyValue('border-top-style');
/** Sets the value of "border-top-style" */
- void set borderTopStyle(var value) {
+ void set borderTopStyle(String value) {
setProperty('border-top-style', value, '');
}
@@ -715,7 +769,7 @@
getPropertyValue('border-top-width');
/** Sets the value of "border-top-width" */
- void set borderTopWidth(var value) {
+ void set borderTopWidth(String value) {
setProperty('border-top-width', value, '');
}
@@ -724,7 +778,7 @@
getPropertyValue('${_browserPrefix}border-vertical-spacing');
/** Sets the value of "border-vertical-spacing" */
- void set borderVerticalSpacing(var value) {
+ void set borderVerticalSpacing(String value) {
setProperty('${_browserPrefix}border-vertical-spacing', value, '');
}
@@ -733,7 +787,7 @@
getPropertyValue('border-width');
/** Sets the value of "border-width" */
- void set borderWidth(var value) {
+ void set borderWidth(String value) {
setProperty('border-width', value, '');
}
@@ -742,7 +796,7 @@
getPropertyValue('bottom');
/** Sets the value of "bottom" */
- void set bottom(var value) {
+ void set bottom(String value) {
setProperty('bottom', value, '');
}
@@ -751,16 +805,25 @@
getPropertyValue('${_browserPrefix}box-align');
/** Sets the value of "box-align" */
- void set boxAlign(var value) {
+ void set boxAlign(String value) {
setProperty('${_browserPrefix}box-align', value, '');
}
+ /** Gets the value of "box-decoration-break" */
+ String get boxDecorationBreak =>
+ getPropertyValue('${_browserPrefix}box-decoration-break');
+
+ /** Sets the value of "box-decoration-break" */
+ void set boxDecorationBreak(String value) {
+ setProperty('${_browserPrefix}box-decoration-break', value, '');
+ }
+
/** Gets the value of "box-direction" */
String get boxDirection =>
getPropertyValue('${_browserPrefix}box-direction');
/** Sets the value of "box-direction" */
- void set boxDirection(var value) {
+ void set boxDirection(String value) {
setProperty('${_browserPrefix}box-direction', value, '');
}
@@ -769,7 +832,7 @@
getPropertyValue('${_browserPrefix}box-flex');
/** Sets the value of "box-flex" */
- void set boxFlex(var value) {
+ void set boxFlex(String value) {
setProperty('${_browserPrefix}box-flex', value, '');
}
@@ -778,7 +841,7 @@
getPropertyValue('${_browserPrefix}box-flex-group');
/** Sets the value of "box-flex-group" */
- void set boxFlexGroup(var value) {
+ void set boxFlexGroup(String value) {
setProperty('${_browserPrefix}box-flex-group', value, '');
}
@@ -787,7 +850,7 @@
getPropertyValue('${_browserPrefix}box-lines');
/** Sets the value of "box-lines" */
- void set boxLines(var value) {
+ void set boxLines(String value) {
setProperty('${_browserPrefix}box-lines', value, '');
}
@@ -796,7 +859,7 @@
getPropertyValue('${_browserPrefix}box-ordinal-group');
/** Sets the value of "box-ordinal-group" */
- void set boxOrdinalGroup(var value) {
+ void set boxOrdinalGroup(String value) {
setProperty('${_browserPrefix}box-ordinal-group', value, '');
}
@@ -805,7 +868,7 @@
getPropertyValue('${_browserPrefix}box-orient');
/** Sets the value of "box-orient" */
- void set boxOrient(var value) {
+ void set boxOrient(String value) {
setProperty('${_browserPrefix}box-orient', value, '');
}
@@ -814,7 +877,7 @@
getPropertyValue('${_browserPrefix}box-pack');
/** Sets the value of "box-pack" */
- void set boxPack(var value) {
+ void set boxPack(String value) {
setProperty('${_browserPrefix}box-pack', value, '');
}
@@ -823,7 +886,7 @@
getPropertyValue('${_browserPrefix}box-reflect');
/** Sets the value of "box-reflect" */
- void set boxReflect(var value) {
+ void set boxReflect(String value) {
setProperty('${_browserPrefix}box-reflect', value, '');
}
@@ -832,7 +895,7 @@
getPropertyValue('box-shadow');
/** Sets the value of "box-shadow" */
- void set boxShadow(var value) {
+ void set boxShadow(String value) {
setProperty('box-shadow', value, '');
}
@@ -841,7 +904,7 @@
getPropertyValue('box-sizing');
/** Sets the value of "box-sizing" */
- void set boxSizing(var value) {
+ void set boxSizing(String value) {
setProperty('box-sizing', value, '');
}
@@ -850,7 +913,7 @@
getPropertyValue('caption-side');
/** Sets the value of "caption-side" */
- void set captionSide(var value) {
+ void set captionSide(String value) {
setProperty('caption-side', value, '');
}
@@ -859,7 +922,7 @@
getPropertyValue('clear');
/** Sets the value of "clear" */
- void set clear(var value) {
+ void set clear(String value) {
setProperty('clear', value, '');
}
@@ -868,16 +931,25 @@
getPropertyValue('clip');
/** Sets the value of "clip" */
- void set clip(var value) {
+ void set clip(String value) {
setProperty('clip', value, '');
}
+ /** Gets the value of "clip-path" */
+ String get clipPath =>
+ getPropertyValue('${_browserPrefix}clip-path');
+
+ /** Sets the value of "clip-path" */
+ void set clipPath(String value) {
+ setProperty('${_browserPrefix}clip-path', value, '');
+ }
+
/** Gets the value of "color" */
String get color =>
getPropertyValue('color');
/** Sets the value of "color" */
- void set color(var value) {
+ void set color(String value) {
setProperty('color', value, '');
}
@@ -886,16 +958,25 @@
getPropertyValue('${_browserPrefix}color-correction');
/** Sets the value of "color-correction" */
- void set colorCorrection(var value) {
+ void set colorCorrection(String value) {
setProperty('${_browserPrefix}color-correction', value, '');
}
+ /** Gets the value of "column-axis" */
+ String get columnAxis =>
+ getPropertyValue('${_browserPrefix}column-axis');
+
+ /** Sets the value of "column-axis" */
+ void set columnAxis(String value) {
+ setProperty('${_browserPrefix}column-axis', value, '');
+ }
+
/** Gets the value of "column-break-after" */
String get columnBreakAfter =>
getPropertyValue('${_browserPrefix}column-break-after');
/** Sets the value of "column-break-after" */
- void set columnBreakAfter(var value) {
+ void set columnBreakAfter(String value) {
setProperty('${_browserPrefix}column-break-after', value, '');
}
@@ -904,7 +985,7 @@
getPropertyValue('${_browserPrefix}column-break-before');
/** Sets the value of "column-break-before" */
- void set columnBreakBefore(var value) {
+ void set columnBreakBefore(String value) {
setProperty('${_browserPrefix}column-break-before', value, '');
}
@@ -913,7 +994,7 @@
getPropertyValue('${_browserPrefix}column-break-inside');
/** Sets the value of "column-break-inside" */
- void set columnBreakInside(var value) {
+ void set columnBreakInside(String value) {
setProperty('${_browserPrefix}column-break-inside', value, '');
}
@@ -922,7 +1003,7 @@
getPropertyValue('${_browserPrefix}column-count');
/** Sets the value of "column-count" */
- void set columnCount(var value) {
+ void set columnCount(String value) {
setProperty('${_browserPrefix}column-count', value, '');
}
@@ -931,16 +1012,25 @@
getPropertyValue('${_browserPrefix}column-gap');
/** Sets the value of "column-gap" */
- void set columnGap(var value) {
+ void set columnGap(String value) {
setProperty('${_browserPrefix}column-gap', value, '');
}
+ /** Gets the value of "column-progression" */
+ String get columnProgression =>
+ getPropertyValue('${_browserPrefix}column-progression');
+
+ /** Sets the value of "column-progression" */
+ void set columnProgression(String value) {
+ setProperty('${_browserPrefix}column-progression', value, '');
+ }
+
/** Gets the value of "column-rule" */
String get columnRule =>
getPropertyValue('${_browserPrefix}column-rule');
/** Sets the value of "column-rule" */
- void set columnRule(var value) {
+ void set columnRule(String value) {
setProperty('${_browserPrefix}column-rule', value, '');
}
@@ -949,7 +1039,7 @@
getPropertyValue('${_browserPrefix}column-rule-color');
/** Sets the value of "column-rule-color" */
- void set columnRuleColor(var value) {
+ void set columnRuleColor(String value) {
setProperty('${_browserPrefix}column-rule-color', value, '');
}
@@ -958,7 +1048,7 @@
getPropertyValue('${_browserPrefix}column-rule-style');
/** Sets the value of "column-rule-style" */
- void set columnRuleStyle(var value) {
+ void set columnRuleStyle(String value) {
setProperty('${_browserPrefix}column-rule-style', value, '');
}
@@ -967,7 +1057,7 @@
getPropertyValue('${_browserPrefix}column-rule-width');
/** Sets the value of "column-rule-width" */
- void set columnRuleWidth(var value) {
+ void set columnRuleWidth(String value) {
setProperty('${_browserPrefix}column-rule-width', value, '');
}
@@ -976,7 +1066,7 @@
getPropertyValue('${_browserPrefix}column-span');
/** Sets the value of "column-span" */
- void set columnSpan(var value) {
+ void set columnSpan(String value) {
setProperty('${_browserPrefix}column-span', value, '');
}
@@ -985,7 +1075,7 @@
getPropertyValue('${_browserPrefix}column-width');
/** Sets the value of "column-width" */
- void set columnWidth(var value) {
+ void set columnWidth(String value) {
setProperty('${_browserPrefix}column-width', value, '');
}
@@ -994,7 +1084,7 @@
getPropertyValue('${_browserPrefix}columns');
/** Sets the value of "columns" */
- void set columns(var value) {
+ void set columns(String value) {
setProperty('${_browserPrefix}columns', value, '');
}
@@ -1003,7 +1093,7 @@
getPropertyValue('content');
/** Sets the value of "content" */
- void set content(var value) {
+ void set content(String value) {
setProperty('content', value, '');
}
@@ -1012,7 +1102,7 @@
getPropertyValue('counter-increment');
/** Sets the value of "counter-increment" */
- void set counterIncrement(var value) {
+ void set counterIncrement(String value) {
setProperty('counter-increment', value, '');
}
@@ -1021,7 +1111,7 @@
getPropertyValue('counter-reset');
/** Sets the value of "counter-reset" */
- void set counterReset(var value) {
+ void set counterReset(String value) {
setProperty('counter-reset', value, '');
}
@@ -1030,16 +1120,25 @@
getPropertyValue('cursor');
/** Sets the value of "cursor" */
- void set cursor(var value) {
+ void set cursor(String value) {
setProperty('cursor', value, '');
}
+ /** Gets the value of "dashboard-region" */
+ String get dashboardRegion =>
+ getPropertyValue('${_browserPrefix}dashboard-region');
+
+ /** Sets the value of "dashboard-region" */
+ void set dashboardRegion(String value) {
+ setProperty('${_browserPrefix}dashboard-region', value, '');
+ }
+
/** Gets the value of "direction" */
String get direction =>
getPropertyValue('direction');
/** Sets the value of "direction" */
- void set direction(var value) {
+ void set direction(String value) {
setProperty('direction', value, '');
}
@@ -1048,7 +1147,7 @@
getPropertyValue('display');
/** Sets the value of "display" */
- void set display(var value) {
+ void set display(String value) {
setProperty('display', value, '');
}
@@ -1057,7 +1156,7 @@
getPropertyValue('empty-cells');
/** Sets the value of "empty-cells" */
- void set emptyCells(var value) {
+ void set emptyCells(String value) {
setProperty('empty-cells', value, '');
}
@@ -1066,17 +1165,35 @@
getPropertyValue('${_browserPrefix}filter');
/** Sets the value of "filter" */
- void set filter(var value) {
+ void set filter(String value) {
setProperty('${_browserPrefix}filter', value, '');
}
- /** Gets the value of "flex-align" */
- String get flexAlign =>
- getPropertyValue('${_browserPrefix}flex-align');
+ /** Gets the value of "flex" */
+ String get flex =>
+ getPropertyValue('${_browserPrefix}flex');
- /** Sets the value of "flex-align" */
- void set flexAlign(var value) {
- setProperty('${_browserPrefix}flex-align', value, '');
+ /** Sets the value of "flex" */
+ void set flex(String value) {
+ setProperty('${_browserPrefix}flex', value, '');
+ }
+
+ /** Gets the value of "flex-basis" */
+ String get flexBasis =>
+ getPropertyValue('${_browserPrefix}flex-basis');
+
+ /** Sets the value of "flex-basis" */
+ void set flexBasis(String value) {
+ setProperty('${_browserPrefix}flex-basis', value, '');
+ }
+
+ /** Gets the value of "flex-direction" */
+ String get flexDirection =>
+ getPropertyValue('${_browserPrefix}flex-direction');
+
+ /** Sets the value of "flex-direction" */
+ void set flexDirection(String value) {
+ setProperty('${_browserPrefix}flex-direction', value, '');
}
/** Gets the value of "flex-flow" */
@@ -1084,26 +1201,35 @@
getPropertyValue('${_browserPrefix}flex-flow');
/** Sets the value of "flex-flow" */
- void set flexFlow(var value) {
+ void set flexFlow(String value) {
setProperty('${_browserPrefix}flex-flow', value, '');
}
- /** Gets the value of "flex-order" */
- String get flexOrder =>
- getPropertyValue('${_browserPrefix}flex-order');
+ /** Gets the value of "flex-grow" */
+ String get flexGrow =>
+ getPropertyValue('${_browserPrefix}flex-grow');
- /** Sets the value of "flex-order" */
- void set flexOrder(var value) {
- setProperty('${_browserPrefix}flex-order', value, '');
+ /** Sets the value of "flex-grow" */
+ void set flexGrow(String value) {
+ setProperty('${_browserPrefix}flex-grow', value, '');
}
- /** Gets the value of "flex-pack" */
- String get flexPack =>
- getPropertyValue('${_browserPrefix}flex-pack');
+ /** Gets the value of "flex-shrink" */
+ String get flexShrink =>
+ getPropertyValue('${_browserPrefix}flex-shrink');
- /** Sets the value of "flex-pack" */
- void set flexPack(var value) {
- setProperty('${_browserPrefix}flex-pack', value, '');
+ /** Sets the value of "flex-shrink" */
+ void set flexShrink(String value) {
+ setProperty('${_browserPrefix}flex-shrink', value, '');
+ }
+
+ /** Gets the value of "flex-wrap" */
+ String get flexWrap =>
+ getPropertyValue('${_browserPrefix}flex-wrap');
+
+ /** Sets the value of "flex-wrap" */
+ void set flexWrap(String value) {
+ setProperty('${_browserPrefix}flex-wrap', value, '');
}
/** Gets the value of "float" */
@@ -1111,7 +1237,7 @@
getPropertyValue('float');
/** Sets the value of "float" */
- void set float(var value) {
+ void set float(String value) {
setProperty('float', value, '');
}
@@ -1120,7 +1246,7 @@
getPropertyValue('${_browserPrefix}flow-from');
/** Sets the value of "flow-from" */
- void set flowFrom(var value) {
+ void set flowFrom(String value) {
setProperty('${_browserPrefix}flow-from', value, '');
}
@@ -1129,7 +1255,7 @@
getPropertyValue('${_browserPrefix}flow-into');
/** Sets the value of "flow-into" */
- void set flowInto(var value) {
+ void set flowInto(String value) {
setProperty('${_browserPrefix}flow-into', value, '');
}
@@ -1138,7 +1264,7 @@
getPropertyValue('font');
/** Sets the value of "font" */
- void set font(var value) {
+ void set font(String value) {
setProperty('font', value, '');
}
@@ -1147,7 +1273,7 @@
getPropertyValue('font-family');
/** Sets the value of "font-family" */
- void set fontFamily(var value) {
+ void set fontFamily(String value) {
setProperty('font-family', value, '');
}
@@ -1156,16 +1282,25 @@
getPropertyValue('${_browserPrefix}font-feature-settings');
/** Sets the value of "font-feature-settings" */
- void set fontFeatureSettings(var value) {
+ void set fontFeatureSettings(String value) {
setProperty('${_browserPrefix}font-feature-settings', value, '');
}
+ /** Gets the value of "font-kerning" */
+ String get fontKerning =>
+ getPropertyValue('${_browserPrefix}font-kerning');
+
+ /** Sets the value of "font-kerning" */
+ void set fontKerning(String value) {
+ setProperty('${_browserPrefix}font-kerning', value, '');
+ }
+
/** Gets the value of "font-size" */
String get fontSize =>
getPropertyValue('font-size');
/** Sets the value of "font-size" */
- void set fontSize(var value) {
+ void set fontSize(String value) {
setProperty('font-size', value, '');
}
@@ -1174,7 +1309,7 @@
getPropertyValue('${_browserPrefix}font-size-delta');
/** Sets the value of "font-size-delta" */
- void set fontSizeDelta(var value) {
+ void set fontSizeDelta(String value) {
setProperty('${_browserPrefix}font-size-delta', value, '');
}
@@ -1183,7 +1318,7 @@
getPropertyValue('${_browserPrefix}font-smoothing');
/** Sets the value of "font-smoothing" */
- void set fontSmoothing(var value) {
+ void set fontSmoothing(String value) {
setProperty('${_browserPrefix}font-smoothing', value, '');
}
@@ -1192,7 +1327,7 @@
getPropertyValue('font-stretch');
/** Sets the value of "font-stretch" */
- void set fontStretch(var value) {
+ void set fontStretch(String value) {
setProperty('font-stretch', value, '');
}
@@ -1201,7 +1336,7 @@
getPropertyValue('font-style');
/** Sets the value of "font-style" */
- void set fontStyle(var value) {
+ void set fontStyle(String value) {
setProperty('font-style', value, '');
}
@@ -1210,25 +1345,70 @@
getPropertyValue('font-variant');
/** Sets the value of "font-variant" */
- void set fontVariant(var value) {
+ void set fontVariant(String value) {
setProperty('font-variant', value, '');
}
+ /** Gets the value of "font-variant-ligatures" */
+ String get fontVariantLigatures =>
+ getPropertyValue('${_browserPrefix}font-variant-ligatures');
+
+ /** Sets the value of "font-variant-ligatures" */
+ void set fontVariantLigatures(String value) {
+ setProperty('${_browserPrefix}font-variant-ligatures', value, '');
+ }
+
/** Gets the value of "font-weight" */
String get fontWeight =>
getPropertyValue('font-weight');
/** Sets the value of "font-weight" */
- void set fontWeight(var value) {
+ void set fontWeight(String value) {
setProperty('font-weight', value, '');
}
+ /** Gets the value of "grid-column" */
+ String get gridColumn =>
+ getPropertyValue('${_browserPrefix}grid-column');
+
+ /** Sets the value of "grid-column" */
+ void set gridColumn(String value) {
+ setProperty('${_browserPrefix}grid-column', value, '');
+ }
+
+ /** Gets the value of "grid-columns" */
+ String get gridColumns =>
+ getPropertyValue('${_browserPrefix}grid-columns');
+
+ /** Sets the value of "grid-columns" */
+ void set gridColumns(String value) {
+ setProperty('${_browserPrefix}grid-columns', value, '');
+ }
+
+ /** Gets the value of "grid-row" */
+ String get gridRow =>
+ getPropertyValue('${_browserPrefix}grid-row');
+
+ /** Sets the value of "grid-row" */
+ void set gridRow(String value) {
+ setProperty('${_browserPrefix}grid-row', value, '');
+ }
+
+ /** Gets the value of "grid-rows" */
+ String get gridRows =>
+ getPropertyValue('${_browserPrefix}grid-rows');
+
+ /** Sets the value of "grid-rows" */
+ void set gridRows(String value) {
+ setProperty('${_browserPrefix}grid-rows', value, '');
+ }
+
/** Gets the value of "height" */
String get height =>
getPropertyValue('height');
/** Sets the value of "height" */
- void set height(var value) {
+ void set height(String value) {
setProperty('height', value, '');
}
@@ -1237,7 +1417,7 @@
getPropertyValue('${_browserPrefix}highlight');
/** Sets the value of "highlight" */
- void set highlight(var value) {
+ void set highlight(String value) {
setProperty('${_browserPrefix}highlight', value, '');
}
@@ -1246,7 +1426,7 @@
getPropertyValue('${_browserPrefix}hyphenate-character');
/** Sets the value of "hyphenate-character" */
- void set hyphenateCharacter(var value) {
+ void set hyphenateCharacter(String value) {
setProperty('${_browserPrefix}hyphenate-character', value, '');
}
@@ -1255,7 +1435,7 @@
getPropertyValue('${_browserPrefix}hyphenate-limit-after');
/** Sets the value of "hyphenate-limit-after" */
- void set hyphenateLimitAfter(var value) {
+ void set hyphenateLimitAfter(String value) {
setProperty('${_browserPrefix}hyphenate-limit-after', value, '');
}
@@ -1264,7 +1444,7 @@
getPropertyValue('${_browserPrefix}hyphenate-limit-before');
/** Sets the value of "hyphenate-limit-before" */
- void set hyphenateLimitBefore(var value) {
+ void set hyphenateLimitBefore(String value) {
setProperty('${_browserPrefix}hyphenate-limit-before', value, '');
}
@@ -1273,7 +1453,7 @@
getPropertyValue('${_browserPrefix}hyphenate-limit-lines');
/** Sets the value of "hyphenate-limit-lines" */
- void set hyphenateLimitLines(var value) {
+ void set hyphenateLimitLines(String value) {
setProperty('${_browserPrefix}hyphenate-limit-lines', value, '');
}
@@ -1282,25 +1462,52 @@
getPropertyValue('${_browserPrefix}hyphens');
/** Sets the value of "hyphens" */
- void set hyphens(var value) {
+ void set hyphens(String value) {
setProperty('${_browserPrefix}hyphens', value, '');
}
+ /** Gets the value of "image-orientation" */
+ String get imageOrientation =>
+ getPropertyValue('image-orientation');
+
+ /** Sets the value of "image-orientation" */
+ void set imageOrientation(String value) {
+ setProperty('image-orientation', value, '');
+ }
+
/** Gets the value of "image-rendering" */
String get imageRendering =>
getPropertyValue('image-rendering');
/** Sets the value of "image-rendering" */
- void set imageRendering(var value) {
+ void set imageRendering(String value) {
setProperty('image-rendering', value, '');
}
+ /** Gets the value of "image-resolution" */
+ String get imageResolution =>
+ getPropertyValue('image-resolution');
+
+ /** Sets the value of "image-resolution" */
+ void set imageResolution(String value) {
+ setProperty('image-resolution', value, '');
+ }
+
+ /** Gets the value of "justify-content" */
+ String get justifyContent =>
+ getPropertyValue('${_browserPrefix}justify-content');
+
+ /** Sets the value of "justify-content" */
+ void set justifyContent(String value) {
+ setProperty('${_browserPrefix}justify-content', value, '');
+ }
+
/** Gets the value of "left" */
String get left =>
getPropertyValue('left');
/** Sets the value of "left" */
- void set left(var value) {
+ void set left(String value) {
setProperty('left', value, '');
}
@@ -1309,16 +1516,25 @@
getPropertyValue('letter-spacing');
/** Sets the value of "letter-spacing" */
- void set letterSpacing(var value) {
+ void set letterSpacing(String value) {
setProperty('letter-spacing', value, '');
}
+ /** Gets the value of "line-align" */
+ String get lineAlign =>
+ getPropertyValue('${_browserPrefix}line-align');
+
+ /** Sets the value of "line-align" */
+ void set lineAlign(String value) {
+ setProperty('${_browserPrefix}line-align', value, '');
+ }
+
/** Gets the value of "line-box-contain" */
String get lineBoxContain =>
getPropertyValue('${_browserPrefix}line-box-contain');
/** Sets the value of "line-box-contain" */
- void set lineBoxContain(var value) {
+ void set lineBoxContain(String value) {
setProperty('${_browserPrefix}line-box-contain', value, '');
}
@@ -1327,7 +1543,7 @@
getPropertyValue('${_browserPrefix}line-break');
/** Sets the value of "line-break" */
- void set lineBreak(var value) {
+ void set lineBreak(String value) {
setProperty('${_browserPrefix}line-break', value, '');
}
@@ -1336,25 +1552,43 @@
getPropertyValue('${_browserPrefix}line-clamp');
/** Sets the value of "line-clamp" */
- void set lineClamp(var value) {
+ void set lineClamp(String value) {
setProperty('${_browserPrefix}line-clamp', value, '');
}
+ /** Gets the value of "line-grid" */
+ String get lineGrid =>
+ getPropertyValue('${_browserPrefix}line-grid');
+
+ /** Sets the value of "line-grid" */
+ void set lineGrid(String value) {
+ setProperty('${_browserPrefix}line-grid', value, '');
+ }
+
/** Gets the value of "line-height" */
String get lineHeight =>
getPropertyValue('line-height');
/** Sets the value of "line-height" */
- void set lineHeight(var value) {
+ void set lineHeight(String value) {
setProperty('line-height', value, '');
}
+ /** Gets the value of "line-snap" */
+ String get lineSnap =>
+ getPropertyValue('${_browserPrefix}line-snap');
+
+ /** Sets the value of "line-snap" */
+ void set lineSnap(String value) {
+ setProperty('${_browserPrefix}line-snap', value, '');
+ }
+
/** Gets the value of "list-style" */
String get listStyle =>
getPropertyValue('list-style');
/** Sets the value of "list-style" */
- void set listStyle(var value) {
+ void set listStyle(String value) {
setProperty('list-style', value, '');
}
@@ -1363,7 +1597,7 @@
getPropertyValue('list-style-image');
/** Sets the value of "list-style-image" */
- void set listStyleImage(var value) {
+ void set listStyleImage(String value) {
setProperty('list-style-image', value, '');
}
@@ -1372,7 +1606,7 @@
getPropertyValue('list-style-position');
/** Sets the value of "list-style-position" */
- void set listStylePosition(var value) {
+ void set listStylePosition(String value) {
setProperty('list-style-position', value, '');
}
@@ -1381,7 +1615,7 @@
getPropertyValue('list-style-type');
/** Sets the value of "list-style-type" */
- void set listStyleType(var value) {
+ void set listStyleType(String value) {
setProperty('list-style-type', value, '');
}
@@ -1390,7 +1624,7 @@
getPropertyValue('${_browserPrefix}locale');
/** Sets the value of "locale" */
- void set locale(var value) {
+ void set locale(String value) {
setProperty('${_browserPrefix}locale', value, '');
}
@@ -1399,7 +1633,7 @@
getPropertyValue('${_browserPrefix}logical-height');
/** Sets the value of "logical-height" */
- void set logicalHeight(var value) {
+ void set logicalHeight(String value) {
setProperty('${_browserPrefix}logical-height', value, '');
}
@@ -1408,7 +1642,7 @@
getPropertyValue('${_browserPrefix}logical-width');
/** Sets the value of "logical-width" */
- void set logicalWidth(var value) {
+ void set logicalWidth(String value) {
setProperty('${_browserPrefix}logical-width', value, '');
}
@@ -1417,7 +1651,7 @@
getPropertyValue('margin');
/** Sets the value of "margin" */
- void set margin(var value) {
+ void set margin(String value) {
setProperty('margin', value, '');
}
@@ -1426,7 +1660,7 @@
getPropertyValue('${_browserPrefix}margin-after');
/** Sets the value of "margin-after" */
- void set marginAfter(var value) {
+ void set marginAfter(String value) {
setProperty('${_browserPrefix}margin-after', value, '');
}
@@ -1435,7 +1669,7 @@
getPropertyValue('${_browserPrefix}margin-after-collapse');
/** Sets the value of "margin-after-collapse" */
- void set marginAfterCollapse(var value) {
+ void set marginAfterCollapse(String value) {
setProperty('${_browserPrefix}margin-after-collapse', value, '');
}
@@ -1444,7 +1678,7 @@
getPropertyValue('${_browserPrefix}margin-before');
/** Sets the value of "margin-before" */
- void set marginBefore(var value) {
+ void set marginBefore(String value) {
setProperty('${_browserPrefix}margin-before', value, '');
}
@@ -1453,7 +1687,7 @@
getPropertyValue('${_browserPrefix}margin-before-collapse');
/** Sets the value of "margin-before-collapse" */
- void set marginBeforeCollapse(var value) {
+ void set marginBeforeCollapse(String value) {
setProperty('${_browserPrefix}margin-before-collapse', value, '');
}
@@ -1462,7 +1696,7 @@
getPropertyValue('margin-bottom');
/** Sets the value of "margin-bottom" */
- void set marginBottom(var value) {
+ void set marginBottom(String value) {
setProperty('margin-bottom', value, '');
}
@@ -1471,7 +1705,7 @@
getPropertyValue('${_browserPrefix}margin-bottom-collapse');
/** Sets the value of "margin-bottom-collapse" */
- void set marginBottomCollapse(var value) {
+ void set marginBottomCollapse(String value) {
setProperty('${_browserPrefix}margin-bottom-collapse', value, '');
}
@@ -1480,7 +1714,7 @@
getPropertyValue('${_browserPrefix}margin-collapse');
/** Sets the value of "margin-collapse" */
- void set marginCollapse(var value) {
+ void set marginCollapse(String value) {
setProperty('${_browserPrefix}margin-collapse', value, '');
}
@@ -1489,7 +1723,7 @@
getPropertyValue('${_browserPrefix}margin-end');
/** Sets the value of "margin-end" */
- void set marginEnd(var value) {
+ void set marginEnd(String value) {
setProperty('${_browserPrefix}margin-end', value, '');
}
@@ -1498,7 +1732,7 @@
getPropertyValue('margin-left');
/** Sets the value of "margin-left" */
- void set marginLeft(var value) {
+ void set marginLeft(String value) {
setProperty('margin-left', value, '');
}
@@ -1507,7 +1741,7 @@
getPropertyValue('margin-right');
/** Sets the value of "margin-right" */
- void set marginRight(var value) {
+ void set marginRight(String value) {
setProperty('margin-right', value, '');
}
@@ -1516,7 +1750,7 @@
getPropertyValue('${_browserPrefix}margin-start');
/** Sets the value of "margin-start" */
- void set marginStart(var value) {
+ void set marginStart(String value) {
setProperty('${_browserPrefix}margin-start', value, '');
}
@@ -1525,7 +1759,7 @@
getPropertyValue('margin-top');
/** Sets the value of "margin-top" */
- void set marginTop(var value) {
+ void set marginTop(String value) {
setProperty('margin-top', value, '');
}
@@ -1534,7 +1768,7 @@
getPropertyValue('${_browserPrefix}margin-top-collapse');
/** Sets the value of "margin-top-collapse" */
- void set marginTopCollapse(var value) {
+ void set marginTopCollapse(String value) {
setProperty('${_browserPrefix}margin-top-collapse', value, '');
}
@@ -1543,7 +1777,7 @@
getPropertyValue('${_browserPrefix}marquee');
/** Sets the value of "marquee" */
- void set marquee(var value) {
+ void set marquee(String value) {
setProperty('${_browserPrefix}marquee', value, '');
}
@@ -1552,7 +1786,7 @@
getPropertyValue('${_browserPrefix}marquee-direction');
/** Sets the value of "marquee-direction" */
- void set marqueeDirection(var value) {
+ void set marqueeDirection(String value) {
setProperty('${_browserPrefix}marquee-direction', value, '');
}
@@ -1561,7 +1795,7 @@
getPropertyValue('${_browserPrefix}marquee-increment');
/** Sets the value of "marquee-increment" */
- void set marqueeIncrement(var value) {
+ void set marqueeIncrement(String value) {
setProperty('${_browserPrefix}marquee-increment', value, '');
}
@@ -1570,7 +1804,7 @@
getPropertyValue('${_browserPrefix}marquee-repetition');
/** Sets the value of "marquee-repetition" */
- void set marqueeRepetition(var value) {
+ void set marqueeRepetition(String value) {
setProperty('${_browserPrefix}marquee-repetition', value, '');
}
@@ -1579,7 +1813,7 @@
getPropertyValue('${_browserPrefix}marquee-speed');
/** Sets the value of "marquee-speed" */
- void set marqueeSpeed(var value) {
+ void set marqueeSpeed(String value) {
setProperty('${_browserPrefix}marquee-speed', value, '');
}
@@ -1588,7 +1822,7 @@
getPropertyValue('${_browserPrefix}marquee-style');
/** Sets the value of "marquee-style" */
- void set marqueeStyle(var value) {
+ void set marqueeStyle(String value) {
setProperty('${_browserPrefix}marquee-style', value, '');
}
@@ -1597,7 +1831,7 @@
getPropertyValue('${_browserPrefix}mask');
/** Sets the value of "mask" */
- void set mask(var value) {
+ void set mask(String value) {
setProperty('${_browserPrefix}mask', value, '');
}
@@ -1606,7 +1840,7 @@
getPropertyValue('${_browserPrefix}mask-attachment');
/** Sets the value of "mask-attachment" */
- void set maskAttachment(var value) {
+ void set maskAttachment(String value) {
setProperty('${_browserPrefix}mask-attachment', value, '');
}
@@ -1615,7 +1849,7 @@
getPropertyValue('${_browserPrefix}mask-box-image');
/** Sets the value of "mask-box-image" */
- void set maskBoxImage(var value) {
+ void set maskBoxImage(String value) {
setProperty('${_browserPrefix}mask-box-image', value, '');
}
@@ -1624,7 +1858,7 @@
getPropertyValue('${_browserPrefix}mask-box-image-outset');
/** Sets the value of "mask-box-image-outset" */
- void set maskBoxImageOutset(var value) {
+ void set maskBoxImageOutset(String value) {
setProperty('${_browserPrefix}mask-box-image-outset', value, '');
}
@@ -1633,7 +1867,7 @@
getPropertyValue('${_browserPrefix}mask-box-image-repeat');
/** Sets the value of "mask-box-image-repeat" */
- void set maskBoxImageRepeat(var value) {
+ void set maskBoxImageRepeat(String value) {
setProperty('${_browserPrefix}mask-box-image-repeat', value, '');
}
@@ -1642,7 +1876,7 @@
getPropertyValue('${_browserPrefix}mask-box-image-slice');
/** Sets the value of "mask-box-image-slice" */
- void set maskBoxImageSlice(var value) {
+ void set maskBoxImageSlice(String value) {
setProperty('${_browserPrefix}mask-box-image-slice', value, '');
}
@@ -1651,7 +1885,7 @@
getPropertyValue('${_browserPrefix}mask-box-image-source');
/** Sets the value of "mask-box-image-source" */
- void set maskBoxImageSource(var value) {
+ void set maskBoxImageSource(String value) {
setProperty('${_browserPrefix}mask-box-image-source', value, '');
}
@@ -1660,7 +1894,7 @@
getPropertyValue('${_browserPrefix}mask-box-image-width');
/** Sets the value of "mask-box-image-width" */
- void set maskBoxImageWidth(var value) {
+ void set maskBoxImageWidth(String value) {
setProperty('${_browserPrefix}mask-box-image-width', value, '');
}
@@ -1669,7 +1903,7 @@
getPropertyValue('${_browserPrefix}mask-clip');
/** Sets the value of "mask-clip" */
- void set maskClip(var value) {
+ void set maskClip(String value) {
setProperty('${_browserPrefix}mask-clip', value, '');
}
@@ -1678,7 +1912,7 @@
getPropertyValue('${_browserPrefix}mask-composite');
/** Sets the value of "mask-composite" */
- void set maskComposite(var value) {
+ void set maskComposite(String value) {
setProperty('${_browserPrefix}mask-composite', value, '');
}
@@ -1687,7 +1921,7 @@
getPropertyValue('${_browserPrefix}mask-image');
/** Sets the value of "mask-image" */
- void set maskImage(var value) {
+ void set maskImage(String value) {
setProperty('${_browserPrefix}mask-image', value, '');
}
@@ -1696,7 +1930,7 @@
getPropertyValue('${_browserPrefix}mask-origin');
/** Sets the value of "mask-origin" */
- void set maskOrigin(var value) {
+ void set maskOrigin(String value) {
setProperty('${_browserPrefix}mask-origin', value, '');
}
@@ -1705,7 +1939,7 @@
getPropertyValue('${_browserPrefix}mask-position');
/** Sets the value of "mask-position" */
- void set maskPosition(var value) {
+ void set maskPosition(String value) {
setProperty('${_browserPrefix}mask-position', value, '');
}
@@ -1714,7 +1948,7 @@
getPropertyValue('${_browserPrefix}mask-position-x');
/** Sets the value of "mask-position-x" */
- void set maskPositionX(var value) {
+ void set maskPositionX(String value) {
setProperty('${_browserPrefix}mask-position-x', value, '');
}
@@ -1723,7 +1957,7 @@
getPropertyValue('${_browserPrefix}mask-position-y');
/** Sets the value of "mask-position-y" */
- void set maskPositionY(var value) {
+ void set maskPositionY(String value) {
setProperty('${_browserPrefix}mask-position-y', value, '');
}
@@ -1732,7 +1966,7 @@
getPropertyValue('${_browserPrefix}mask-repeat');
/** Sets the value of "mask-repeat" */
- void set maskRepeat(var value) {
+ void set maskRepeat(String value) {
setProperty('${_browserPrefix}mask-repeat', value, '');
}
@@ -1741,7 +1975,7 @@
getPropertyValue('${_browserPrefix}mask-repeat-x');
/** Sets the value of "mask-repeat-x" */
- void set maskRepeatX(var value) {
+ void set maskRepeatX(String value) {
setProperty('${_browserPrefix}mask-repeat-x', value, '');
}
@@ -1750,7 +1984,7 @@
getPropertyValue('${_browserPrefix}mask-repeat-y');
/** Sets the value of "mask-repeat-y" */
- void set maskRepeatY(var value) {
+ void set maskRepeatY(String value) {
setProperty('${_browserPrefix}mask-repeat-y', value, '');
}
@@ -1759,25 +1993,16 @@
getPropertyValue('${_browserPrefix}mask-size');
/** Sets the value of "mask-size" */
- void set maskSize(var value) {
+ void set maskSize(String value) {
setProperty('${_browserPrefix}mask-size', value, '');
}
- /** Gets the value of "match-nearest-mail-blockquote-color" */
- String get matchNearestMailBlockquoteColor =>
- getPropertyValue('${_browserPrefix}match-nearest-mail-blockquote-color');
-
- /** Sets the value of "match-nearest-mail-blockquote-color" */
- void set matchNearestMailBlockquoteColor(var value) {
- setProperty('${_browserPrefix}match-nearest-mail-blockquote-color', value, '');
- }
-
/** Gets the value of "max-height" */
String get maxHeight =>
getPropertyValue('max-height');
/** Sets the value of "max-height" */
- void set maxHeight(var value) {
+ void set maxHeight(String value) {
setProperty('max-height', value, '');
}
@@ -1786,7 +2011,7 @@
getPropertyValue('${_browserPrefix}max-logical-height');
/** Sets the value of "max-logical-height" */
- void set maxLogicalHeight(var value) {
+ void set maxLogicalHeight(String value) {
setProperty('${_browserPrefix}max-logical-height', value, '');
}
@@ -1795,7 +2020,7 @@
getPropertyValue('${_browserPrefix}max-logical-width');
/** Sets the value of "max-logical-width" */
- void set maxLogicalWidth(var value) {
+ void set maxLogicalWidth(String value) {
setProperty('${_browserPrefix}max-logical-width', value, '');
}
@@ -1804,16 +2029,25 @@
getPropertyValue('max-width');
/** Sets the value of "max-width" */
- void set maxWidth(var value) {
+ void set maxWidth(String value) {
setProperty('max-width', value, '');
}
+ /** Gets the value of "max-zoom" */
+ String get maxZoom =>
+ getPropertyValue('max-zoom');
+
+ /** Sets the value of "max-zoom" */
+ void set maxZoom(String value) {
+ setProperty('max-zoom', value, '');
+ }
+
/** Gets the value of "min-height" */
String get minHeight =>
getPropertyValue('min-height');
/** Sets the value of "min-height" */
- void set minHeight(var value) {
+ void set minHeight(String value) {
setProperty('min-height', value, '');
}
@@ -1822,7 +2056,7 @@
getPropertyValue('${_browserPrefix}min-logical-height');
/** Sets the value of "min-logical-height" */
- void set minLogicalHeight(var value) {
+ void set minLogicalHeight(String value) {
setProperty('${_browserPrefix}min-logical-height', value, '');
}
@@ -1831,7 +2065,7 @@
getPropertyValue('${_browserPrefix}min-logical-width');
/** Sets the value of "min-logical-width" */
- void set minLogicalWidth(var value) {
+ void set minLogicalWidth(String value) {
setProperty('${_browserPrefix}min-logical-width', value, '');
}
@@ -1840,16 +2074,25 @@
getPropertyValue('min-width');
/** Sets the value of "min-width" */
- void set minWidth(var value) {
+ void set minWidth(String value) {
setProperty('min-width', value, '');
}
+ /** Gets the value of "min-zoom" */
+ String get minZoom =>
+ getPropertyValue('min-zoom');
+
+ /** Sets the value of "min-zoom" */
+ void set minZoom(String value) {
+ setProperty('min-zoom', value, '');
+ }
+
/** Gets the value of "nbsp-mode" */
String get nbspMode =>
getPropertyValue('${_browserPrefix}nbsp-mode');
/** Sets the value of "nbsp-mode" */
- void set nbspMode(var value) {
+ void set nbspMode(String value) {
setProperty('${_browserPrefix}nbsp-mode', value, '');
}
@@ -1858,16 +2101,34 @@
getPropertyValue('opacity');
/** Sets the value of "opacity" */
- void set opacity(var value) {
+ void set opacity(String value) {
setProperty('opacity', value, '');
}
+ /** Gets the value of "order" */
+ String get order =>
+ getPropertyValue('${_browserPrefix}order');
+
+ /** Sets the value of "order" */
+ void set order(String value) {
+ setProperty('${_browserPrefix}order', value, '');
+ }
+
+ /** Gets the value of "orientation" */
+ String get orientation =>
+ getPropertyValue('orientation');
+
+ /** Sets the value of "orientation" */
+ void set orientation(String value) {
+ setProperty('orientation', value, '');
+ }
+
/** Gets the value of "orphans" */
String get orphans =>
getPropertyValue('orphans');
/** Sets the value of "orphans" */
- void set orphans(var value) {
+ void set orphans(String value) {
setProperty('orphans', value, '');
}
@@ -1876,7 +2137,7 @@
getPropertyValue('outline');
/** Sets the value of "outline" */
- void set outline(var value) {
+ void set outline(String value) {
setProperty('outline', value, '');
}
@@ -1885,7 +2146,7 @@
getPropertyValue('outline-color');
/** Sets the value of "outline-color" */
- void set outlineColor(var value) {
+ void set outlineColor(String value) {
setProperty('outline-color', value, '');
}
@@ -1894,7 +2155,7 @@
getPropertyValue('outline-offset');
/** Sets the value of "outline-offset" */
- void set outlineOffset(var value) {
+ void set outlineOffset(String value) {
setProperty('outline-offset', value, '');
}
@@ -1903,7 +2164,7 @@
getPropertyValue('outline-style');
/** Sets the value of "outline-style" */
- void set outlineStyle(var value) {
+ void set outlineStyle(String value) {
setProperty('outline-style', value, '');
}
@@ -1912,7 +2173,7 @@
getPropertyValue('outline-width');
/** Sets the value of "outline-width" */
- void set outlineWidth(var value) {
+ void set outlineWidth(String value) {
setProperty('outline-width', value, '');
}
@@ -1921,16 +2182,34 @@
getPropertyValue('overflow');
/** Sets the value of "overflow" */
- void set overflow(var value) {
+ void set overflow(String value) {
setProperty('overflow', value, '');
}
+ /** Gets the value of "overflow-scrolling" */
+ String get overflowScrolling =>
+ getPropertyValue('${_browserPrefix}overflow-scrolling');
+
+ /** Sets the value of "overflow-scrolling" */
+ void set overflowScrolling(String value) {
+ setProperty('${_browserPrefix}overflow-scrolling', value, '');
+ }
+
+ /** Gets the value of "overflow-wrap" */
+ String get overflowWrap =>
+ getPropertyValue('overflow-wrap');
+
+ /** Sets the value of "overflow-wrap" */
+ void set overflowWrap(String value) {
+ setProperty('overflow-wrap', value, '');
+ }
+
/** Gets the value of "overflow-x" */
String get overflowX =>
getPropertyValue('overflow-x');
/** Sets the value of "overflow-x" */
- void set overflowX(var value) {
+ void set overflowX(String value) {
setProperty('overflow-x', value, '');
}
@@ -1939,7 +2218,7 @@
getPropertyValue('overflow-y');
/** Sets the value of "overflow-y" */
- void set overflowY(var value) {
+ void set overflowY(String value) {
setProperty('overflow-y', value, '');
}
@@ -1948,7 +2227,7 @@
getPropertyValue('padding');
/** Sets the value of "padding" */
- void set padding(var value) {
+ void set padding(String value) {
setProperty('padding', value, '');
}
@@ -1957,7 +2236,7 @@
getPropertyValue('${_browserPrefix}padding-after');
/** Sets the value of "padding-after" */
- void set paddingAfter(var value) {
+ void set paddingAfter(String value) {
setProperty('${_browserPrefix}padding-after', value, '');
}
@@ -1966,7 +2245,7 @@
getPropertyValue('${_browserPrefix}padding-before');
/** Sets the value of "padding-before" */
- void set paddingBefore(var value) {
+ void set paddingBefore(String value) {
setProperty('${_browserPrefix}padding-before', value, '');
}
@@ -1975,7 +2254,7 @@
getPropertyValue('padding-bottom');
/** Sets the value of "padding-bottom" */
- void set paddingBottom(var value) {
+ void set paddingBottom(String value) {
setProperty('padding-bottom', value, '');
}
@@ -1984,7 +2263,7 @@
getPropertyValue('${_browserPrefix}padding-end');
/** Sets the value of "padding-end" */
- void set paddingEnd(var value) {
+ void set paddingEnd(String value) {
setProperty('${_browserPrefix}padding-end', value, '');
}
@@ -1993,7 +2272,7 @@
getPropertyValue('padding-left');
/** Sets the value of "padding-left" */
- void set paddingLeft(var value) {
+ void set paddingLeft(String value) {
setProperty('padding-left', value, '');
}
@@ -2002,7 +2281,7 @@
getPropertyValue('padding-right');
/** Sets the value of "padding-right" */
- void set paddingRight(var value) {
+ void set paddingRight(String value) {
setProperty('padding-right', value, '');
}
@@ -2011,7 +2290,7 @@
getPropertyValue('${_browserPrefix}padding-start');
/** Sets the value of "padding-start" */
- void set paddingStart(var value) {
+ void set paddingStart(String value) {
setProperty('${_browserPrefix}padding-start', value, '');
}
@@ -2020,7 +2299,7 @@
getPropertyValue('padding-top');
/** Sets the value of "padding-top" */
- void set paddingTop(var value) {
+ void set paddingTop(String value) {
setProperty('padding-top', value, '');
}
@@ -2029,7 +2308,7 @@
getPropertyValue('page');
/** Sets the value of "page" */
- void set page(var value) {
+ void set page(String value) {
setProperty('page', value, '');
}
@@ -2038,7 +2317,7 @@
getPropertyValue('page-break-after');
/** Sets the value of "page-break-after" */
- void set pageBreakAfter(var value) {
+ void set pageBreakAfter(String value) {
setProperty('page-break-after', value, '');
}
@@ -2047,7 +2326,7 @@
getPropertyValue('page-break-before');
/** Sets the value of "page-break-before" */
- void set pageBreakBefore(var value) {
+ void set pageBreakBefore(String value) {
setProperty('page-break-before', value, '');
}
@@ -2056,7 +2335,7 @@
getPropertyValue('page-break-inside');
/** Sets the value of "page-break-inside" */
- void set pageBreakInside(var value) {
+ void set pageBreakInside(String value) {
setProperty('page-break-inside', value, '');
}
@@ -2065,7 +2344,7 @@
getPropertyValue('${_browserPrefix}perspective');
/** Sets the value of "perspective" */
- void set perspective(var value) {
+ void set perspective(String value) {
setProperty('${_browserPrefix}perspective', value, '');
}
@@ -2074,7 +2353,7 @@
getPropertyValue('${_browserPrefix}perspective-origin');
/** Sets the value of "perspective-origin" */
- void set perspectiveOrigin(var value) {
+ void set perspectiveOrigin(String value) {
setProperty('${_browserPrefix}perspective-origin', value, '');
}
@@ -2083,7 +2362,7 @@
getPropertyValue('${_browserPrefix}perspective-origin-x');
/** Sets the value of "perspective-origin-x" */
- void set perspectiveOriginX(var value) {
+ void set perspectiveOriginX(String value) {
setProperty('${_browserPrefix}perspective-origin-x', value, '');
}
@@ -2092,7 +2371,7 @@
getPropertyValue('${_browserPrefix}perspective-origin-y');
/** Sets the value of "perspective-origin-y" */
- void set perspectiveOriginY(var value) {
+ void set perspectiveOriginY(String value) {
setProperty('${_browserPrefix}perspective-origin-y', value, '');
}
@@ -2101,7 +2380,7 @@
getPropertyValue('pointer-events');
/** Sets the value of "pointer-events" */
- void set pointerEvents(var value) {
+ void set pointerEvents(String value) {
setProperty('pointer-events', value, '');
}
@@ -2110,16 +2389,25 @@
getPropertyValue('position');
/** Sets the value of "position" */
- void set position(var value) {
+ void set position(String value) {
setProperty('position', value, '');
}
+ /** Gets the value of "print-color-adjust" */
+ String get printColorAdjust =>
+ getPropertyValue('${_browserPrefix}print-color-adjust');
+
+ /** Sets the value of "print-color-adjust" */
+ void set printColorAdjust(String value) {
+ setProperty('${_browserPrefix}print-color-adjust', value, '');
+ }
+
/** Gets the value of "quotes" */
String get quotes =>
getPropertyValue('quotes');
/** Sets the value of "quotes" */
- void set quotes(var value) {
+ void set quotes(String value) {
setProperty('quotes', value, '');
}
@@ -2128,7 +2416,7 @@
getPropertyValue('${_browserPrefix}region-break-after');
/** Sets the value of "region-break-after" */
- void set regionBreakAfter(var value) {
+ void set regionBreakAfter(String value) {
setProperty('${_browserPrefix}region-break-after', value, '');
}
@@ -2137,7 +2425,7 @@
getPropertyValue('${_browserPrefix}region-break-before');
/** Sets the value of "region-break-before" */
- void set regionBreakBefore(var value) {
+ void set regionBreakBefore(String value) {
setProperty('${_browserPrefix}region-break-before', value, '');
}
@@ -2146,7 +2434,7 @@
getPropertyValue('${_browserPrefix}region-break-inside');
/** Sets the value of "region-break-inside" */
- void set regionBreakInside(var value) {
+ void set regionBreakInside(String value) {
setProperty('${_browserPrefix}region-break-inside', value, '');
}
@@ -2155,7 +2443,7 @@
getPropertyValue('${_browserPrefix}region-overflow');
/** Sets the value of "region-overflow" */
- void set regionOverflow(var value) {
+ void set regionOverflow(String value) {
setProperty('${_browserPrefix}region-overflow', value, '');
}
@@ -2164,7 +2452,7 @@
getPropertyValue('resize');
/** Sets the value of "resize" */
- void set resize(var value) {
+ void set resize(String value) {
setProperty('resize', value, '');
}
@@ -2173,7 +2461,7 @@
getPropertyValue('right');
/** Sets the value of "right" */
- void set right(var value) {
+ void set right(String value) {
setProperty('right', value, '');
}
@@ -2182,16 +2470,52 @@
getPropertyValue('${_browserPrefix}rtl-ordering');
/** Sets the value of "rtl-ordering" */
- void set rtlOrdering(var value) {
+ void set rtlOrdering(String value) {
setProperty('${_browserPrefix}rtl-ordering', value, '');
}
+ /** Gets the value of "shape-inside" */
+ String get shapeInside =>
+ getPropertyValue('${_browserPrefix}shape-inside');
+
+ /** Sets the value of "shape-inside" */
+ void set shapeInside(String value) {
+ setProperty('${_browserPrefix}shape-inside', value, '');
+ }
+
+ /** Gets the value of "shape-margin" */
+ String get shapeMargin =>
+ getPropertyValue('${_browserPrefix}shape-margin');
+
+ /** Sets the value of "shape-margin" */
+ void set shapeMargin(String value) {
+ setProperty('${_browserPrefix}shape-margin', value, '');
+ }
+
+ /** Gets the value of "shape-outside" */
+ String get shapeOutside =>
+ getPropertyValue('${_browserPrefix}shape-outside');
+
+ /** Sets the value of "shape-outside" */
+ void set shapeOutside(String value) {
+ setProperty('${_browserPrefix}shape-outside', value, '');
+ }
+
+ /** Gets the value of "shape-padding" */
+ String get shapePadding =>
+ getPropertyValue('${_browserPrefix}shape-padding');
+
+ /** Sets the value of "shape-padding" */
+ void set shapePadding(String value) {
+ setProperty('${_browserPrefix}shape-padding', value, '');
+ }
+
/** Gets the value of "size" */
String get size =>
getPropertyValue('size');
/** Sets the value of "size" */
- void set size(var value) {
+ void set size(String value) {
setProperty('size', value, '');
}
@@ -2200,7 +2524,7 @@
getPropertyValue('speak');
/** Sets the value of "speak" */
- void set speak(var value) {
+ void set speak(String value) {
setProperty('speak', value, '');
}
@@ -2209,16 +2533,25 @@
getPropertyValue('src');
/** Sets the value of "src" */
- void set src(var value) {
+ void set src(String value) {
setProperty('src', value, '');
}
+ /** Gets the value of "tab-size" */
+ String get tabSize =>
+ getPropertyValue('tab-size');
+
+ /** Sets the value of "tab-size" */
+ void set tabSize(String value) {
+ setProperty('tab-size', value, '');
+ }
+
/** Gets the value of "table-layout" */
String get tableLayout =>
getPropertyValue('table-layout');
/** Sets the value of "table-layout" */
- void set tableLayout(var value) {
+ void set tableLayout(String value) {
setProperty('table-layout', value, '');
}
@@ -2227,7 +2560,7 @@
getPropertyValue('${_browserPrefix}tap-highlight-color');
/** Sets the value of "tap-highlight-color" */
- void set tapHighlightColor(var value) {
+ void set tapHighlightColor(String value) {
setProperty('${_browserPrefix}tap-highlight-color', value, '');
}
@@ -2236,16 +2569,25 @@
getPropertyValue('text-align');
/** Sets the value of "text-align" */
- void set textAlign(var value) {
+ void set textAlign(String value) {
setProperty('text-align', value, '');
}
+ /** Gets the value of "text-align-last" */
+ String get textAlignLast =>
+ getPropertyValue('${_browserPrefix}text-align-last');
+
+ /** Sets the value of "text-align-last" */
+ void set textAlignLast(String value) {
+ setProperty('${_browserPrefix}text-align-last', value, '');
+ }
+
/** Gets the value of "text-combine" */
String get textCombine =>
getPropertyValue('${_browserPrefix}text-combine');
/** Sets the value of "text-combine" */
- void set textCombine(var value) {
+ void set textCombine(String value) {
setProperty('${_browserPrefix}text-combine', value, '');
}
@@ -2254,16 +2596,34 @@
getPropertyValue('text-decoration');
/** Sets the value of "text-decoration" */
- void set textDecoration(var value) {
+ void set textDecoration(String value) {
setProperty('text-decoration', value, '');
}
+ /** Gets the value of "text-decoration-line" */
+ String get textDecorationLine =>
+ getPropertyValue('${_browserPrefix}text-decoration-line');
+
+ /** Sets the value of "text-decoration-line" */
+ void set textDecorationLine(String value) {
+ setProperty('${_browserPrefix}text-decoration-line', value, '');
+ }
+
+ /** Gets the value of "text-decoration-style" */
+ String get textDecorationStyle =>
+ getPropertyValue('${_browserPrefix}text-decoration-style');
+
+ /** Sets the value of "text-decoration-style" */
+ void set textDecorationStyle(String value) {
+ setProperty('${_browserPrefix}text-decoration-style', value, '');
+ }
+
/** Gets the value of "text-decorations-in-effect" */
String get textDecorationsInEffect =>
getPropertyValue('${_browserPrefix}text-decorations-in-effect');
/** Sets the value of "text-decorations-in-effect" */
- void set textDecorationsInEffect(var value) {
+ void set textDecorationsInEffect(String value) {
setProperty('${_browserPrefix}text-decorations-in-effect', value, '');
}
@@ -2272,7 +2632,7 @@
getPropertyValue('${_browserPrefix}text-emphasis');
/** Sets the value of "text-emphasis" */
- void set textEmphasis(var value) {
+ void set textEmphasis(String value) {
setProperty('${_browserPrefix}text-emphasis', value, '');
}
@@ -2281,7 +2641,7 @@
getPropertyValue('${_browserPrefix}text-emphasis-color');
/** Sets the value of "text-emphasis-color" */
- void set textEmphasisColor(var value) {
+ void set textEmphasisColor(String value) {
setProperty('${_browserPrefix}text-emphasis-color', value, '');
}
@@ -2290,7 +2650,7 @@
getPropertyValue('${_browserPrefix}text-emphasis-position');
/** Sets the value of "text-emphasis-position" */
- void set textEmphasisPosition(var value) {
+ void set textEmphasisPosition(String value) {
setProperty('${_browserPrefix}text-emphasis-position', value, '');
}
@@ -2299,7 +2659,7 @@
getPropertyValue('${_browserPrefix}text-emphasis-style');
/** Sets the value of "text-emphasis-style" */
- void set textEmphasisStyle(var value) {
+ void set textEmphasisStyle(String value) {
setProperty('${_browserPrefix}text-emphasis-style', value, '');
}
@@ -2308,7 +2668,7 @@
getPropertyValue('${_browserPrefix}text-fill-color');
/** Sets the value of "text-fill-color" */
- void set textFillColor(var value) {
+ void set textFillColor(String value) {
setProperty('${_browserPrefix}text-fill-color', value, '');
}
@@ -2317,7 +2677,7 @@
getPropertyValue('text-indent');
/** Sets the value of "text-indent" */
- void set textIndent(var value) {
+ void set textIndent(String value) {
setProperty('text-indent', value, '');
}
@@ -2326,7 +2686,7 @@
getPropertyValue('text-line-through');
/** Sets the value of "text-line-through" */
- void set textLineThrough(var value) {
+ void set textLineThrough(String value) {
setProperty('text-line-through', value, '');
}
@@ -2335,7 +2695,7 @@
getPropertyValue('text-line-through-color');
/** Sets the value of "text-line-through-color" */
- void set textLineThroughColor(var value) {
+ void set textLineThroughColor(String value) {
setProperty('text-line-through-color', value, '');
}
@@ -2344,7 +2704,7 @@
getPropertyValue('text-line-through-mode');
/** Sets the value of "text-line-through-mode" */
- void set textLineThroughMode(var value) {
+ void set textLineThroughMode(String value) {
setProperty('text-line-through-mode', value, '');
}
@@ -2353,7 +2713,7 @@
getPropertyValue('text-line-through-style');
/** Sets the value of "text-line-through-style" */
- void set textLineThroughStyle(var value) {
+ void set textLineThroughStyle(String value) {
setProperty('text-line-through-style', value, '');
}
@@ -2362,7 +2722,7 @@
getPropertyValue('text-line-through-width');
/** Sets the value of "text-line-through-width" */
- void set textLineThroughWidth(var value) {
+ void set textLineThroughWidth(String value) {
setProperty('text-line-through-width', value, '');
}
@@ -2371,7 +2731,7 @@
getPropertyValue('${_browserPrefix}text-orientation');
/** Sets the value of "text-orientation" */
- void set textOrientation(var value) {
+ void set textOrientation(String value) {
setProperty('${_browserPrefix}text-orientation', value, '');
}
@@ -2380,7 +2740,7 @@
getPropertyValue('text-overflow');
/** Sets the value of "text-overflow" */
- void set textOverflow(var value) {
+ void set textOverflow(String value) {
setProperty('text-overflow', value, '');
}
@@ -2389,7 +2749,7 @@
getPropertyValue('text-overline');
/** Sets the value of "text-overline" */
- void set textOverline(var value) {
+ void set textOverline(String value) {
setProperty('text-overline', value, '');
}
@@ -2398,7 +2758,7 @@
getPropertyValue('text-overline-color');
/** Sets the value of "text-overline-color" */
- void set textOverlineColor(var value) {
+ void set textOverlineColor(String value) {
setProperty('text-overline-color', value, '');
}
@@ -2407,7 +2767,7 @@
getPropertyValue('text-overline-mode');
/** Sets the value of "text-overline-mode" */
- void set textOverlineMode(var value) {
+ void set textOverlineMode(String value) {
setProperty('text-overline-mode', value, '');
}
@@ -2416,7 +2776,7 @@
getPropertyValue('text-overline-style');
/** Sets the value of "text-overline-style" */
- void set textOverlineStyle(var value) {
+ void set textOverlineStyle(String value) {
setProperty('text-overline-style', value, '');
}
@@ -2425,7 +2785,7 @@
getPropertyValue('text-overline-width');
/** Sets the value of "text-overline-width" */
- void set textOverlineWidth(var value) {
+ void set textOverlineWidth(String value) {
setProperty('text-overline-width', value, '');
}
@@ -2434,7 +2794,7 @@
getPropertyValue('text-rendering');
/** Sets the value of "text-rendering" */
- void set textRendering(var value) {
+ void set textRendering(String value) {
setProperty('text-rendering', value, '');
}
@@ -2443,7 +2803,7 @@
getPropertyValue('${_browserPrefix}text-security');
/** Sets the value of "text-security" */
- void set textSecurity(var value) {
+ void set textSecurity(String value) {
setProperty('${_browserPrefix}text-security', value, '');
}
@@ -2452,7 +2812,7 @@
getPropertyValue('text-shadow');
/** Sets the value of "text-shadow" */
- void set textShadow(var value) {
+ void set textShadow(String value) {
setProperty('text-shadow', value, '');
}
@@ -2461,7 +2821,7 @@
getPropertyValue('${_browserPrefix}text-size-adjust');
/** Sets the value of "text-size-adjust" */
- void set textSizeAdjust(var value) {
+ void set textSizeAdjust(String value) {
setProperty('${_browserPrefix}text-size-adjust', value, '');
}
@@ -2470,7 +2830,7 @@
getPropertyValue('${_browserPrefix}text-stroke');
/** Sets the value of "text-stroke" */
- void set textStroke(var value) {
+ void set textStroke(String value) {
setProperty('${_browserPrefix}text-stroke', value, '');
}
@@ -2479,7 +2839,7 @@
getPropertyValue('${_browserPrefix}text-stroke-color');
/** Sets the value of "text-stroke-color" */
- void set textStrokeColor(var value) {
+ void set textStrokeColor(String value) {
setProperty('${_browserPrefix}text-stroke-color', value, '');
}
@@ -2488,7 +2848,7 @@
getPropertyValue('${_browserPrefix}text-stroke-width');
/** Sets the value of "text-stroke-width" */
- void set textStrokeWidth(var value) {
+ void set textStrokeWidth(String value) {
setProperty('${_browserPrefix}text-stroke-width', value, '');
}
@@ -2497,7 +2857,7 @@
getPropertyValue('text-transform');
/** Sets the value of "text-transform" */
- void set textTransform(var value) {
+ void set textTransform(String value) {
setProperty('text-transform', value, '');
}
@@ -2506,7 +2866,7 @@
getPropertyValue('text-underline');
/** Sets the value of "text-underline" */
- void set textUnderline(var value) {
+ void set textUnderline(String value) {
setProperty('text-underline', value, '');
}
@@ -2515,7 +2875,7 @@
getPropertyValue('text-underline-color');
/** Sets the value of "text-underline-color" */
- void set textUnderlineColor(var value) {
+ void set textUnderlineColor(String value) {
setProperty('text-underline-color', value, '');
}
@@ -2524,7 +2884,7 @@
getPropertyValue('text-underline-mode');
/** Sets the value of "text-underline-mode" */
- void set textUnderlineMode(var value) {
+ void set textUnderlineMode(String value) {
setProperty('text-underline-mode', value, '');
}
@@ -2533,7 +2893,7 @@
getPropertyValue('text-underline-style');
/** Sets the value of "text-underline-style" */
- void set textUnderlineStyle(var value) {
+ void set textUnderlineStyle(String value) {
setProperty('text-underline-style', value, '');
}
@@ -2542,7 +2902,7 @@
getPropertyValue('text-underline-width');
/** Sets the value of "text-underline-width" */
- void set textUnderlineWidth(var value) {
+ void set textUnderlineWidth(String value) {
setProperty('text-underline-width', value, '');
}
@@ -2551,7 +2911,7 @@
getPropertyValue('top');
/** Sets the value of "top" */
- void set top(var value) {
+ void set top(String value) {
setProperty('top', value, '');
}
@@ -2560,7 +2920,7 @@
getPropertyValue('${_browserPrefix}transform');
/** Sets the value of "transform" */
- void set transform(var value) {
+ void set transform(String value) {
setProperty('${_browserPrefix}transform', value, '');
}
@@ -2569,7 +2929,7 @@
getPropertyValue('${_browserPrefix}transform-origin');
/** Sets the value of "transform-origin" */
- void set transformOrigin(var value) {
+ void set transformOrigin(String value) {
setProperty('${_browserPrefix}transform-origin', value, '');
}
@@ -2578,7 +2938,7 @@
getPropertyValue('${_browserPrefix}transform-origin-x');
/** Sets the value of "transform-origin-x" */
- void set transformOriginX(var value) {
+ void set transformOriginX(String value) {
setProperty('${_browserPrefix}transform-origin-x', value, '');
}
@@ -2587,7 +2947,7 @@
getPropertyValue('${_browserPrefix}transform-origin-y');
/** Sets the value of "transform-origin-y" */
- void set transformOriginY(var value) {
+ void set transformOriginY(String value) {
setProperty('${_browserPrefix}transform-origin-y', value, '');
}
@@ -2596,7 +2956,7 @@
getPropertyValue('${_browserPrefix}transform-origin-z');
/** Sets the value of "transform-origin-z" */
- void set transformOriginZ(var value) {
+ void set transformOriginZ(String value) {
setProperty('${_browserPrefix}transform-origin-z', value, '');
}
@@ -2605,7 +2965,7 @@
getPropertyValue('${_browserPrefix}transform-style');
/** Sets the value of "transform-style" */
- void set transformStyle(var value) {
+ void set transformStyle(String value) {
setProperty('${_browserPrefix}transform-style', value, '');
}
@@ -2614,7 +2974,7 @@
getPropertyValue('${_browserPrefix}transition');
/** Sets the value of "transition" */
- void set transition(var value) {
+ void set transition(String value) {
setProperty('${_browserPrefix}transition', value, '');
}
@@ -2623,7 +2983,7 @@
getPropertyValue('${_browserPrefix}transition-delay');
/** Sets the value of "transition-delay" */
- void set transitionDelay(var value) {
+ void set transitionDelay(String value) {
setProperty('${_browserPrefix}transition-delay', value, '');
}
@@ -2632,7 +2992,7 @@
getPropertyValue('${_browserPrefix}transition-duration');
/** Sets the value of "transition-duration" */
- void set transitionDuration(var value) {
+ void set transitionDuration(String value) {
setProperty('${_browserPrefix}transition-duration', value, '');
}
@@ -2641,7 +3001,7 @@
getPropertyValue('${_browserPrefix}transition-property');
/** Sets the value of "transition-property" */
- void set transitionProperty(var value) {
+ void set transitionProperty(String value) {
setProperty('${_browserPrefix}transition-property', value, '');
}
@@ -2650,7 +3010,7 @@
getPropertyValue('${_browserPrefix}transition-timing-function');
/** Sets the value of "transition-timing-function" */
- void set transitionTimingFunction(var value) {
+ void set transitionTimingFunction(String value) {
setProperty('${_browserPrefix}transition-timing-function', value, '');
}
@@ -2659,7 +3019,7 @@
getPropertyValue('unicode-bidi');
/** Sets the value of "unicode-bidi" */
- void set unicodeBidi(var value) {
+ void set unicodeBidi(String value) {
setProperty('unicode-bidi', value, '');
}
@@ -2668,7 +3028,7 @@
getPropertyValue('unicode-range');
/** Sets the value of "unicode-range" */
- void set unicodeRange(var value) {
+ void set unicodeRange(String value) {
setProperty('unicode-range', value, '');
}
@@ -2677,7 +3037,7 @@
getPropertyValue('${_browserPrefix}user-drag');
/** Sets the value of "user-drag" */
- void set userDrag(var value) {
+ void set userDrag(String value) {
setProperty('${_browserPrefix}user-drag', value, '');
}
@@ -2686,7 +3046,7 @@
getPropertyValue('${_browserPrefix}user-modify');
/** Sets the value of "user-modify" */
- void set userModify(var value) {
+ void set userModify(String value) {
setProperty('${_browserPrefix}user-modify', value, '');
}
@@ -2695,16 +3055,25 @@
getPropertyValue('${_browserPrefix}user-select');
/** Sets the value of "user-select" */
- void set userSelect(var value) {
+ void set userSelect(String value) {
setProperty('${_browserPrefix}user-select', value, '');
}
+ /** Gets the value of "user-zoom" */
+ String get userZoom =>
+ getPropertyValue('user-zoom');
+
+ /** Sets the value of "user-zoom" */
+ void set userZoom(String value) {
+ setProperty('user-zoom', value, '');
+ }
+
/** Gets the value of "vertical-align" */
String get verticalAlign =>
getPropertyValue('vertical-align');
/** Sets the value of "vertical-align" */
- void set verticalAlign(var value) {
+ void set verticalAlign(String value) {
setProperty('vertical-align', value, '');
}
@@ -2713,7 +3082,7 @@
getPropertyValue('visibility');
/** Sets the value of "visibility" */
- void set visibility(var value) {
+ void set visibility(String value) {
setProperty('visibility', value, '');
}
@@ -2722,7 +3091,7 @@
getPropertyValue('white-space');
/** Sets the value of "white-space" */
- void set whiteSpace(var value) {
+ void set whiteSpace(String value) {
setProperty('white-space', value, '');
}
@@ -2731,7 +3100,7 @@
getPropertyValue('widows');
/** Sets the value of "widows" */
- void set widows(var value) {
+ void set widows(String value) {
setProperty('widows', value, '');
}
@@ -2740,7 +3109,7 @@
getPropertyValue('width');
/** Sets the value of "width" */
- void set width(var value) {
+ void set width(String value) {
setProperty('width', value, '');
}
@@ -2749,7 +3118,7 @@
getPropertyValue('word-break');
/** Sets the value of "word-break" */
- void set wordBreak(var value) {
+ void set wordBreak(String value) {
setProperty('word-break', value, '');
}
@@ -2758,7 +3127,7 @@
getPropertyValue('word-spacing');
/** Sets the value of "word-spacing" */
- void set wordSpacing(var value) {
+ void set wordSpacing(String value) {
setProperty('word-spacing', value, '');
}
@@ -2767,17 +3136,35 @@
getPropertyValue('word-wrap');
/** Sets the value of "word-wrap" */
- void set wordWrap(var value) {
+ void set wordWrap(String value) {
setProperty('word-wrap', value, '');
}
- /** Gets the value of "wrap-shape" */
- String get wrapShape =>
- getPropertyValue('${_browserPrefix}wrap-shape');
+ /** Gets the value of "wrap" */
+ String get wrap =>
+ getPropertyValue('${_browserPrefix}wrap');
- /** Sets the value of "wrap-shape" */
- void set wrapShape(var value) {
- setProperty('${_browserPrefix}wrap-shape', value, '');
+ /** Sets the value of "wrap" */
+ void set wrap(String value) {
+ setProperty('${_browserPrefix}wrap', value, '');
+ }
+
+ /** Gets the value of "wrap-flow" */
+ String get wrapFlow =>
+ getPropertyValue('${_browserPrefix}wrap-flow');
+
+ /** Sets the value of "wrap-flow" */
+ void set wrapFlow(String value) {
+ setProperty('${_browserPrefix}wrap-flow', value, '');
+ }
+
+ /** Gets the value of "wrap-through" */
+ String get wrapThrough =>
+ getPropertyValue('${_browserPrefix}wrap-through');
+
+ /** Sets the value of "wrap-through" */
+ void set wrapThrough(String value) {
+ setProperty('${_browserPrefix}wrap-through', value, '');
}
/** Gets the value of "writing-mode" */
@@ -2785,7 +3172,7 @@
getPropertyValue('${_browserPrefix}writing-mode');
/** Sets the value of "writing-mode" */
- void set writingMode(var value) {
+ void set writingMode(String value) {
setProperty('${_browserPrefix}writing-mode', value, '');
}
@@ -2794,7 +3181,7 @@
getPropertyValue('z-index');
/** Sets the value of "z-index" */
- void set zIndex(var value) {
+ void set zIndex(String value) {
setProperty('z-index', value, '');
}
@@ -2803,7 +3190,7 @@
getPropertyValue('zoom');
/** Sets the value of "zoom" */
- void set zoom(var value) {
+ void set zoom(String value) {
setProperty('zoom', value, '');
}
}
diff --git a/sdk/lib/html/templates/html/impl/impl_DocumentFragment.darttemplate b/sdk/lib/html/templates/html/impl/impl_DocumentFragment.darttemplate
index c32a8fb..2106a73 100644
--- a/sdk/lib/html/templates/html/impl/impl_DocumentFragment.darttemplate
+++ b/sdk/lib/html/templates/html/impl/impl_DocumentFragment.darttemplate
@@ -26,24 +26,35 @@
_$(CLASSNAME)FactoryProvider.createDocumentFragment_html(html);
factory $CLASSNAME.svg(String svgContent) =>
- new _$(CLASSNAME)FactoryProvider.createDocumentFragment_svg(svgContent);
+ _$(CLASSNAME)FactoryProvider.createDocumentFragment_svg(svgContent);
- List<Element> _elements;
-
- List<Element> get elements {
- if (_elements == null) {
- _elements = new FilteredElementList(this);
- }
- return _elements;
- }
+ List<Element> get elements => this.children;
// TODO: The type of value should be Collection<Element>. See http://b/5392897
void set elements(value) {
+ this.children = value;
+ }
+
+$if DART2JS
+ // Native field is used only by Dart code so does not lead to instantiation
+ // of native classes
+ @Creates('Null')
+$endif
+ List<Element> _children;
+
+ List<Element> get children {
+ if (_children == null) {
+ _children = new FilteredElementList(this);
+ }
+ return _children;
+ }
+
+ void set children(Collection<Element> value) {
// Copy list first since we don't want liveness during iteration.
List copy = new List.from(value);
- final elements = this.elements;
- elements.clear();
- elements.addAll(copy);
+ var children = this.children;
+ children.clear();
+ children.addAll(copy);
}
Element query(String selectors) => $dom_querySelector(selectors);
diff --git a/sdk/lib/html/templates/html/impl/impl_Element.darttemplate b/sdk/lib/html/templates/html/impl/impl_Element.darttemplate
index 34d2d95..bf6e19a 100644
--- a/sdk/lib/html/templates/html/impl/impl_Element.darttemplate
+++ b/sdk/lib/html/templates/html/impl/impl_Element.darttemplate
@@ -145,6 +145,11 @@
return result;
}
+ Element get first {
+ return _element.$dom_firstElementChild;
+ }
+
+
Element get last {
return _element.$dom_lastElementChild;
}
@@ -159,10 +164,6 @@
_FrozenElementList._wrap(this._nodeList);
- Element get first {
- return _nodeList[0];
- }
-
bool contains(Element element) {
for (Element el in this) {
if (el == element) return true;
@@ -271,6 +272,8 @@
throw new UnsupportedError('');
}
+ Element get first => _nodeList.first;
+
Element get last => _nodeList.last;
}
@@ -298,16 +301,7 @@
bool get hasNext => _index < _list.length;
}
-/**
- * All your attribute manipulation needs in one place.
- * Extends the regular Map interface by automatically coercing non-string
- * values to strings.
- */
-abstract class AttributeMap implements Map<String, String> {
- void operator []=(String key, value);
-}
-
-class _ElementAttributeMap extends AttributeMap {
+class _ElementAttributeMap implements Map<String, String> {
final Element _element;
@@ -402,7 +396,7 @@
* Provides a Map abstraction on top of data-* attributes, similar to the
* dataSet in the old DOM.
*/
-class _DataAttributeMap extends AttributeMap {
+class _DataAttributeMap implements Map<String, String> {
final Map<String, String> $dom_attributes;
@@ -515,7 +509,7 @@
String toString() => "($left, $top, $width, $height)";
}
-class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
+abstract class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
factory $CLASSNAME.html(String html) =>
_$(CLASSNAME)FactoryProvider.createElement_html(html);
@@ -526,7 +520,7 @@
* @domName Element.hasAttribute, Element.getAttribute, Element.setAttribute,
* Element.removeAttribute
*/
- _ElementAttributeMap get attributes => new _ElementAttributeMap(this);
+ Map<String, String> get attributes => new _ElementAttributeMap(this);
void set attributes(Map<String, String> value) {
Map<String, String> attributes = this.attributes;
@@ -537,16 +531,27 @@
}
void set elements(Collection<Element> value) {
- final elements = this.elements;
- elements.clear();
- elements.addAll(value);
+ this.children = value;
}
/**
+ * Deprecated, use [children] instead.
+ */
+ List<Element> get elements => this.children;
+
+ /**
* @domName childElementCount, firstElementChild, lastElementChild,
* children, Node.nodes.add
*/
- List<Element> get elements => new _ChildrenElementList._wrap(this);
+ List<Element> get children => new _ChildrenElementList._wrap(this);
+
+ void set children(Collection<Element> value) {
+ // Copy list first since we don't want liveness during iteration.
+ List copy = new List.from(value);
+ var children = this.children;
+ children.clear();
+ children.addAll(copy);
+ }
Element query(String selectors) => $dom_querySelector(selectors);
@@ -612,6 +617,9 @@
* [wc]: http://dvcs.w3.org/hg/webcomponents/raw-file/tip/explainer/index.html
* [x-tags]: http://x-tags.org/
*/
+$if DART2JS
+ @Creates('Null') // Set from Dart code; does not instantiate a native type.
+$endif
var xtag;
$if DARTIUM
@@ -736,15 +744,15 @@
temp.innerHTML = html;
Element element;
- if (temp.elements.length == 1) {
- element = temp.elements[0];
- } else if (parentTag == 'html' && temp.elements.length == 2) {
+ if (temp.children.length == 1) {
+ element = temp.children[0];
+ } else if (parentTag == 'html' && temp.children.length == 2) {
// Work around for edge case in WebKit and possibly other browsers where
// both body and head elements are created even though the inner html
// only contains a head or body element.
- element = temp.elements[tag == 'head' ? 0 : 1];
+ element = temp.children[tag == 'head' ? 0 : 1];
} else {
- throw new ArgumentError('HTML had ${temp.elements.length} '
+ throw new ArgumentError('HTML had ${temp.children.length} '
'top level elements but 1 expected');
}
element.remove();
diff --git a/sdk/lib/html/templates/html/impl/impl_HttpRequest.darttemplate b/sdk/lib/html/templates/html/impl/impl_HttpRequest.darttemplate
index 6ec0f16..213f434 100644
--- a/sdk/lib/html/templates/html/impl/impl_HttpRequest.darttemplate
+++ b/sdk/lib/html/templates/html/impl/impl_HttpRequest.darttemplate
@@ -5,11 +5,13 @@
part of html;
class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
- factory $CLASSNAME.get(String url, onSuccess($CLASSNAME request)) =>
- _$(CLASSNAME)FactoryProvider.create$(CLASSNAME)_get(url, onSuccess);
+ factory $CLASSNAME.get(String url, onComplete($CLASSNAME request)) =>
+ _$(CLASSNAME)FactoryProvider.create$(CLASSNAME)_get(url, onComplete);
- factory $CLASSNAME.getWithCredentials(String url, onSuccess($CLASSNAME request)) =>
- _$(CLASSNAME)FactoryProvider.create$(CLASSNAME)getWithCredentials(url, onSuccess);
+ factory $CLASSNAME.getWithCredentials(String url,
+ onComplete($CLASSNAME request)) =>
+ _$(CLASSNAME)FactoryProvider.create$(CLASSNAME)_getWithCredentials(url,
+ onComplete);
$!MEMBERS
}
diff --git a/sdk/lib/html/templates/html/impl/impl_Node.darttemplate b/sdk/lib/html/templates/html/impl/impl_Node.darttemplate
index e15cb46..cf46de2 100644
--- a/sdk/lib/html/templates/html/impl/impl_Node.darttemplate
+++ b/sdk/lib/html/templates/html/impl/impl_Node.darttemplate
@@ -65,7 +65,7 @@
Collection map(f(Node element)) => _Collections.map(this, [], f);
Collection<Node> filter(bool f(Node element)) =>
- new _NodeListWrapper(_Collections.filter(this, <Node>[], f));
+ _Collections.filter(this, <Node>[], f);
bool every(bool f(Node element)) => _Collections.every(this, f);
@@ -101,7 +101,7 @@
"Cannot insertRange on immutable List.");
}
List<Node> getRange(int start, int rangeLength) =>
- new _NodeListWrapper(_Lists.getRange(this, start, rangeLength, <Node>[]));
+ _Lists.getRange(this, start, rangeLength, <Node>[]);
// -- end List<Node> mixins.
diff --git a/sdk/lib/html/templates/html/impl/impl_NodeList.darttemplate b/sdk/lib/html/templates/html/impl/impl_NodeList.darttemplate
deleted file mode 100644
index 95bbddc..0000000
--- a/sdk/lib/html/templates/html/impl/impl_NodeList.darttemplate
+++ /dev/null
@@ -1,179 +0,0 @@
-// Copyright (c) 2012, 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.
-
-part of html;
-
-// TODO(nweiz): when all implementations we target have the same name for the
-// implementation of List<E>, extend that rather than wrapping.
-class _ListWrapper<E> implements List<E> {
- List _list;
-
- _ListWrapper(List this._list);
-
- Iterator<E> iterator() => _list.iterator();
-
- bool contains(E element) => _list.contains(element);
-
- void forEach(void f(E element)) => _list.forEach(f);
-
- Collection map(f(E element)) => _list.map(f);
-
- List<E> filter(bool f(E element)) => _list.filter(f);
-
- bool every(bool f(E element)) => _list.every(f);
-
- bool some(bool f(E element)) => _list.some(f);
-
- bool get isEmpty => _list.isEmpty;
-
- int get length => _list.length;
-
- E operator [](int index) => _list[index];
-
- void operator []=(int index, E value) { _list[index] = value; }
-
- void set length(int newLength) { _list.length = newLength; }
-
- void add(E value) => _list.add(value);
-
- void addLast(E value) => _list.addLast(value);
-
- void addAll(Collection<E> collection) => _list.addAll(collection);
-
- void sort([Comparator<E> compare = Comparable.compare]) => _list.sort(compare);
-
- int indexOf(E element, [int start = 0]) => _list.indexOf(element, start);
-
- int lastIndexOf(E element, [int start = 0]) =>
- _list.lastIndexOf(element, start);
-
- void clear() => _list.clear();
-
- E removeLast() => _list.removeLast();
-
- E get last => _list.last;
-
- List<E> getRange(int start, int rangeLength) =>
- _list.getRange(start, rangeLength);
-
- void setRange(int start, int rangeLength, List<E> from, [int startFrom = 0])
- => _list.setRange(start, rangeLength, from, startFrom);
-
- void removeRange(int start, int rangeLength) =>
- _list.removeRange(start, rangeLength);
-
- void insertRange(int start, int rangeLength, [E initialValue = null]) =>
- _list.insertRange(start, rangeLength, initialValue);
-
- E get first => _list[0];
-}
-
-/**
- * This class is used to insure the results of list operations are NodeLists
- * instead of lists.
- */
-class _NodeListWrapper extends _ListWrapper<Node> implements List {
- _NodeListWrapper(List list) : super(list);
-
- List<Node> filter(bool f(Node element)) =>
- new _NodeListWrapper(_list.filter(f));
-
- List<Node> getRange(int start, int rangeLength) =>
- new _NodeListWrapper(_list.getRange(start, rangeLength));
-}
-
-class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
- Node _parent;
-
- // -- start List<Node> mixins.
- // Node is the element type.
-
- // From Iterable<Node>:
-
- Iterator<Node> iterator() {
- // Note: NodeLists are not fixed size. And most probably length shouldn't
- // be cached in both iterator _and_ forEach method. For now caching it
- // for consistency.
- return new FixedSizeListIterator<Node>(this);
- }
-
- // From Collection<Node>:
-
- void add(Node value) {
- _parent.$dom_appendChild(value);
- }
-
- void addLast(Node value) {
- _parent.$dom_appendChild(value);
- }
-
- void addAll(Collection<Node> collection) {
- for (Node node in collection) {
- _parent.$dom_appendChild(node);
- }
- }
-
- Node removeLast() {
- final result = this.last;
- if (result != null) {
- _parent.$dom_removeChild(result);
- }
- return result;
- }
-
- void clear() {
- _parent.text = '';
- }
-
- void operator []=(int index, Node value) {
- _parent.$dom_replaceChild(value, this[index]);
- }
-
- bool contains(Node element) => _Collections.contains(this, element);
-
- void forEach(void f(Node element)) => _Collections.forEach(this, f);
-
- Collection map(f(Node element)) => _Collections.map(this, [], f);
-
- Collection<Node> filter(bool f(Node element)) =>
- new _NodeListWrapper(_Collections.filter(this, <Node>[], f));
-
- bool every(bool f(Node element)) => _Collections.every(this, f);
-
- bool some(bool f(Node element)) => _Collections.some(this, f);
-
- bool get isEmpty => this.length == 0;
-
- // From List<Node>:
-
- void sort([Comparator<Node> compare = Comparable.compare]) {
- throw new UnsupportedError("Cannot sort immutable List.");
- }
-
- int indexOf(Node element, [int start = 0]) =>
- _Lists.indexOf(this, element, start, this.length);
-
- int lastIndexOf(Node element, [int start = 0]) =>
- _Lists.lastIndexOf(this, element, start);
-
- Node get last => this[length - 1];
- Node get first => this[0];
-
- // FIXME: implement thesee.
- void setRange(int start, int rangeLength, List<Node> from, [int startFrom]) {
- throw new UnsupportedError("Cannot setRange on immutable List.");
- }
- void removeRange(int start, int rangeLength) {
- throw new UnsupportedError("Cannot removeRange on immutable List.");
- }
- void insertRange(int start, int rangeLength, [Node initialValue]) {
- throw new UnsupportedError("Cannot insertRange on immutable List.");
- }
- List<Node> getRange(int start, int rangeLength) =>
- new _NodeListWrapper(_Lists.getRange(this, start, rangeLength, <Node>[]));
-
- // -- end List<Node> mixins.
-
-$!MEMBERS
-}
diff --git a/sdk/lib/html/templates/html/impl/impl_Storage.darttemplate b/sdk/lib/html/templates/html/impl/impl_Storage.darttemplate
index 73dea1e..47d10d6 100644
--- a/sdk/lib/html/templates/html/impl/impl_Storage.darttemplate
+++ b/sdk/lib/html/templates/html/impl/impl_Storage.darttemplate
@@ -13,7 +13,7 @@
String operator [](String key) => $dom_getItem(key);
- void operator []=(String key, String value) => $dom_setItem(key, value);
+ void operator []=(String key, String value) { $dom_setItem(key, value); }
String putIfAbsent(String key, String ifAbsent()) {
if (!containsKey(key)) this[key] = ifAbsent();
diff --git a/sdk/lib/html/templates/html/impl/impl_SVGElement.darttemplate b/sdk/lib/html/templates/html/impl/impl_SvgElement.darttemplate
similarity index 78%
rename from sdk/lib/html/templates/html/impl/impl_SVGElement.darttemplate
rename to sdk/lib/html/templates/html/impl/impl_SvgElement.darttemplate
index 077a8077..1c15a0f 100644
--- a/sdk/lib/html/templates/html/impl/impl_SVGElement.darttemplate
+++ b/sdk/lib/html/templates/html/impl/impl_SvgElement.darttemplate
@@ -53,26 +53,34 @@
elements.addAll(value);
}
+ List<Element> get children => new FilteredElementList(this);
+
+ void set children(Collection<Element> value) {
+ final children = this.children;
+ children.clear();
+ children.addAll(value);
+ }
+
String get outerHTML {
final container = new Element.tag("div");
- final SVGElement cloned = this.clone(true);
- container.elements.add(cloned);
+ final SvgElement cloned = this.clone(true);
+ container.children.add(cloned);
return container.innerHTML;
}
String get innerHTML {
final container = new Element.tag("div");
- final SVGElement cloned = this.clone(true);
- container.elements.addAll(cloned.elements);
+ final SvgElement cloned = this.clone(true);
+ container.children.addAll(cloned.children);
return container.innerHTML;
}
void set innerHTML(String svg) {
final container = new Element.tag("div");
- // Wrap the SVG string in <svg> so that SVGElements are created, rather than
+ // Wrap the SVG string in <svg> so that SvgElements are created, rather than
// HTMLElements.
container.innerHTML = '<svg version="1.1">$svg</svg>';
- this.elements = container.elements[0].elements;
+ this.children = container.children[0].children;
}
$!MEMBERS
diff --git a/sdk/lib/html/templates/html/impl/impl_SVGSVGElement.darttemplate b/sdk/lib/html/templates/html/impl/impl_SvgSvgElement.darttemplate
similarity index 79%
rename from sdk/lib/html/templates/html/impl/impl_SVGSVGElement.darttemplate
rename to sdk/lib/html/templates/html/impl/impl_SvgSvgElement.darttemplate
index c1a8204..2e00aea 100644
--- a/sdk/lib/html/templates/html/impl/impl_SVGSVGElement.darttemplate
+++ b/sdk/lib/html/templates/html/impl/impl_SvgSvgElement.darttemplate
@@ -5,7 +5,7 @@
part of svg;
class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
- factory $CLASSNAME() => _$(CLASSNAME)FactoryProvider.createSVGSVGElement();
+ factory $CLASSNAME() => _$(CLASSNAME)FactoryProvider.createSvgSvgElement();
$!MEMBERS
}
diff --git a/sdk/lib/html/templates/immutable_list_mixin.darttemplate b/sdk/lib/html/templates/immutable_list_mixin.darttemplate
index b6a4b8b..43479e4 100644
--- a/sdk/lib/html/templates/immutable_list_mixin.darttemplate
+++ b/sdk/lib/html/templates/immutable_list_mixin.darttemplate
@@ -57,6 +57,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ $E get first => this[0];
+
$E get last => this[length - 1];
$E removeLast() {
diff --git a/sdk/lib/io/file.dart b/sdk/lib/io/file.dart
index 97fc18c..7937aa0 100644
--- a/sdk/lib/io/file.dart
+++ b/sdk/lib/io/file.dart
@@ -214,6 +214,60 @@
List<String> readAsLinesSync([Encoding encoding = Encoding.UTF_8]);
/**
+ * Write a list of bytes to a file.
+ *
+ * Opens the file, writes the list of bytes to it, and closes the file.
+ * Returns a [:Future<File>:] that completes with this [File] object once
+ * the entire operation has completed.
+ *
+ * By default [writeAsBytes] creates the file for writing and truncates the
+ * file if it already exists. In order to append the bytes to an existing
+ * file pass [:FileMode.APPEND:] as the optional mode parameter.
+ */
+ Future<File> writeAsBytes(List<int> bytes, [FileMode mode = FileMode.WRITE]);
+
+ /**
+ * Synchronously write a list of bytes to a file.
+ *
+ * Opens the file, writes the list of bytes to it and closses the file.
+ *
+ * By default [writeAsBytesSync] creates the file for writing and truncates
+ * the file if it already exists. In order to append the bytes to an existing
+ * file pass [:FileMode.APPEND:] as the optional mode parameter.
+ */
+ void writeAsBytesSync(List<int> bytes, [FileMode mode = FileMode.WRITE]);
+
+ /**
+ * Write a string to a file.
+ *
+ * Opens the file, writes the string in the given encoding, and closes the
+ * file. Returns a [:Future<File>:] that completes with this [File] object
+ * once the entire operation has completed.
+ *
+ * By default [writeAsString] creates the file for writing and truncates the
+ * file if it already exists. In order to append the bytes to an existing
+ * file pass [:FileMode.APPEND:] as the optional mode parameter.
+ */
+ Future<File> writeAsString(String contents,
+ [Encoding encoding = Encoding.UTF_8,
+ FileMode mode = FileMode.WRITE]);
+
+ /**
+ * Synchronously write a string to a file.
+ *
+ * Opens the file, writes the string in the given encoding, and closes the
+ * file.
+ *
+ * By default [writeAsStringSync] creates the file for writing and
+ * truncates the file if it already exists. In order to append the bytes
+ * to an existing file pass [:FileMode.APPEND:] as the optional mode
+ * parameter.
+ */
+ void writeAsStringSync(String contents,
+ [Encoding encoding = Encoding.UTF_8,
+ FileMode mode = FileMode.WRITE]);
+
+ /**
* Get the name of the file.
*/
String get name;
diff --git a/sdk/lib/io/file_impl.dart b/sdk/lib/io/file_impl.dart
index 27bace9..17dc2ab 100644
--- a/sdk/lib/io/file_impl.dart
+++ b/sdk/lib/io/file_impl.dart
@@ -357,7 +357,7 @@
// Constructor for file.
_File(String this._name) {
if (_name is! String) {
- throw new ArgumentError('${NoSuchMethodError.safeToString(_name)} '
+ throw new ArgumentError('${Error.safeToString(_name)} '
'is not a String');
}
}
@@ -660,6 +660,52 @@
return _getDecodedLines(decoder);
}
+ Future<File> writeAsBytes(List<int> bytes,
+ [FileMode mode = FileMode.WRITE]) {
+ Completer<File> completer = new Completer<File>();
+ try {
+ var stream = openOutputStream(mode);
+ stream.write(bytes);
+ stream.close();
+ stream.onClosed = () {
+ completer.complete(this);
+ };
+ stream.onError = (e) {
+ completer.completeException(e);
+ };
+ } catch (e) {
+ new Timer(0, (t) => completer.completeException(e));
+ return completer.future;
+ }
+ return completer.future;
+ }
+
+ void writeAsBytesSync(List<int> bytes, [FileMode mode = FileMode.WRITE]) {
+ RandomAccessFile opened = openSync(mode);
+ opened.writeListSync(bytes, 0, bytes.length);
+ opened.closeSync();
+ }
+
+ Future<File> writeAsString(String contents,
+ [FileMode mode = FileMode.WRITE,
+ Encoding encoding = Encoding.UTF_8]) {
+ try {
+ var data = _StringEncoders.encoder(encoding).encodeString(contents);
+ return writeAsBytes(data, mode);
+ } catch (e) {
+ var completer = new Completer();
+ new Timer(0, (t) => completer.completeException(e));
+ return completer.future;
+ }
+ }
+
+ void writeAsStringSync(String contents,
+ [FileMode mode = FileMode.WRITE,
+ Encoding encoding = Encoding.UTF_8]) {
+ var data = _StringEncoders.encoder(encoding).encodeString(contents);
+ writeAsBytesSync(data, mode);
+ }
+
String get name => _name;
void _ensureFileService() {
diff --git a/sdk/lib/io/http.dart b/sdk/lib/io/http.dart
index 79d16af..2274673 100644
--- a/sdk/lib/io/http.dart
+++ b/sdk/lib/io/http.dart
@@ -117,6 +117,41 @@
* is 20 minutes.
*/
set sessionTimeout(int timeout);
+
+ /**
+ * Returns a [:HttpConnectionsInfo:] object with an overview of the
+ * current connection handled by the server.
+ */
+ HttpConnectionsInfo connectionsInfo();
+}
+
+
+/**
+ * Overview information of the [:HttpServer:] socket connections.
+ */
+class HttpConnectionsInfo {
+ /**
+ * Total number of socket connections.
+ */
+ int total = 0;
+
+ /**
+ * Number of active connections where actual request/response
+ * processing is active.
+ */
+ int active = 0;
+
+ /**
+ * Number of idle connections held by clients as persistent connections.
+ */
+ int idle = 0;
+
+ /**
+ * Number of connections which are preparing to close. Note: These
+ * connections are also part of the [:active:] count as they might
+ * still be sending data to the client before finally closing.
+ */
+ int closing = 0;
}
@@ -795,9 +830,16 @@
set findProxy(String f(Uri url));
/**
- * Shutdown the HTTP client releasing all resources.
+ * Shutdown the HTTP client. If [force] is [:false:] (the default)
+ * the [:HttpClient:] will be kept alive until all active
+ * connections are done. If [force] is [:true:] any active
+ * connections will be closed to immediately release all
+ * resources. These closed connections will receive an [:onError:]
+ * callback to indicate that the client was shutdown. In both cases
+ * trying to establish a new connection after calling [shutdown]
+ * will throw an exception.
*/
- void shutdown();
+ void shutdown({bool force: false});
}
diff --git a/sdk/lib/io/http_impl.dart b/sdk/lib/io/http_impl.dart
index fc69108..c783481 100644
--- a/sdk/lib/io/http_impl.dart
+++ b/sdk/lib/io/http_impl.dart
@@ -11,22 +11,25 @@
void add(_HttpConnectionBase connection) {
void closeIfDone() {
- // We only check for write closed here. This means that we are
- // not waiting for the client to half-close the socket before
- // fully closing the socket.
- if (!connection._isWriteClosed) return;
- _q.remove(connection);
- connection._socket.close();
- if (connection.onClosed != null) connection.onClosed();
+ // When either the client has closed or all data has been
+ // written to the client we close the underlying socket
+ // completely.
+ if (connection._isWriteClosed || connection._isReadClosed) {
+ _q.remove(connection);
+ connection._socket.close();
+ if (connection.onClosed != null) connection.onClosed();
+ }
}
- // If the connection is already fully closed don't insert it into the queue.
+ // If the connection is already fully closed don't insert it into
+ // the queue.
if (connection._isFullyClosed) {
connection._socket.close();
if (connection.onClosed != null) connection.onClosed();
return;
}
+ connection._state |= _HttpConnectionBase.CLOSING;
_q.add(connection);
// If output stream is not closed for writing close it now and
@@ -45,10 +48,7 @@
if (!connection._isReadClosed) {
connection._socket.onClosed = () {
connection._state |= _HttpConnectionBase.READ_CLOSED;
- // This is a nop, as we are not using the read closed
- // information for anything. For both server and client
- // connections the inbound message have been read to
- // completion when the socket enters the close queue.
+ closeIfDone();
};
} else {
connection._socket.onClosed = () { assert(false); };
@@ -59,6 +59,7 @@
// If an error occurs immediately close the socket.
connection._socket.onError = (e) {
+ connection._state |= _HttpConnectionBase.READ_CLOSED;
connection._state |= _HttpConnectionBase.WRITE_CLOSED;
closeIfDone();
};
@@ -718,17 +719,21 @@
abstract class _HttpConnectionBase {
static const int IDLE = 0;
static const int ACTIVE = 1;
- static const int REQUEST_DONE = 2;
- static const int RESPONSE_DONE = 4;
+ static const int CLOSING = 2;
+ static const int REQUEST_DONE = 4;
+ static const int RESPONSE_DONE = 8;
static const int ALL_DONE = REQUEST_DONE | RESPONSE_DONE;
- static const int READ_CLOSED = 8;
- static const int WRITE_CLOSED = 16;
+ static const int READ_CLOSED = 16;
+ static const int WRITE_CLOSED = 32;
static const int FULLY_CLOSED = READ_CLOSED | WRITE_CLOSED;
_HttpConnectionBase() : hashCode = _nextHashCode {
_nextHashCode = (_nextHashCode + 1) & 0xFFFFFFF;
}
+ bool get _isIdle => (_state & ACTIVE) == 0;
+ bool get _isActive => (_state & ACTIVE) == ACTIVE;
+ bool get _isClosing => (_state & CLOSING) == CLOSING;
bool get _isRequestDone => (_state & REQUEST_DONE) == REQUEST_DONE;
bool get _isResponseDone => (_state & RESPONSE_DONE) == RESPONSE_DONE;
bool get _isAllDone => (_state & ALL_DONE) == ALL_DONE;
@@ -832,6 +837,7 @@
void _onClosed() {
_state |= _HttpConnectionBase.READ_CLOSED;
+ _checkDone();
}
void _onError(e) {
@@ -869,17 +875,20 @@
}
void _checkDone() {
- if (_isAllDone) {
- // If we are done writing the response, and either the client
- // has closed or the connection is not persistent, we must
- // close. Also if using HTTP 1.0 and the content length was not
- // known we must close to indicate end of body.
+ if (_isReadClosed) {
+ // If the client closes the conversation is ended.
+ _server._closeQueue.add(this);
+ } else if (_isAllDone) {
+ // If we are done writing the response, and the connection is
+ // not persistent, we must close. Also if using HTTP 1.0 and the
+ // content length was not known we must close to indicate end of
+ // body.
bool close =
!_response.persistentConnection ||
(_response._protocolVersion == "1.0" && _response._contentLength < 0);
_request = null;
_response = null;
- if (_isReadClosed || close) {
+ if (close) {
_server._closeQueue.add(this);
} else {
_state = _HttpConnectionBase.IDLE;
@@ -1024,6 +1033,21 @@
return _sessionManagerInstance;
}
+ HttpConnectionsInfo connectionsInfo() {
+ HttpConnectionsInfo result = new HttpConnectionsInfo();
+ result.total = _connections.length;
+ _connections.forEach((_HttpConnection conn) {
+ if (conn._isActive) {
+ result.active++;
+ } else if (conn._isIdle) {
+ result.idle++;
+ } else {
+ assert(result._isClosing);
+ result.closing++;
+ }
+ });
+ return result;
+ }
ServerSocket _server; // The server listen socket.
bool _closeServer = false;
@@ -1435,10 +1459,13 @@
void _onClosed() {
_state |= _HttpConnectionBase.READ_CLOSED;
+ _checkSocketDone();
}
void _onError(e) {
- // Socket is closed either due to an error or due to normal socket close.
+ if (_socketConn != null) {
+ _client._closeSocketConnection(_socketConn);
+ }
if (_onErrorCallback != null) {
_onErrorCallback(e);
} else {
@@ -1448,9 +1475,6 @@
if (_response != null && _response._streamErrorHandler != null) {
_response._streamErrorHandler(e);
}
- if (_socketConn != null) {
- _client._closeSocketConnection(_socketConn);
- }
}
void _onResponseReceived(int statusCode,
@@ -1465,11 +1489,17 @@
}
void _onDataEnd(bool close) {
- _response._onDataEnd();
_state |= _HttpConnectionBase.RESPONSE_DONE;
+ _response._onDataEnd();
_checkSocketDone();
}
+ void _onClientShutdown() {
+ if (!_isResponseDone) {
+ _onError(new HttpException("Client shutdown"));
+ }
+ }
+
void set onRequest(void handler(HttpClientRequest request)) {
_onRequest = handler;
}
@@ -1523,13 +1553,8 @@
var redirect = new _RedirectInfo(_response.statusCode, method, url);
// The actual redirect is postponed until both response and
// request are done.
- if (_isAllDone) {
- _doRedirect(redirect);
- } else {
- // Prepare for redirect.
- assert(_pendingRetry == null);
- _pendingRedirect = redirect;
- }
+ assert(_pendingRetry == null);
+ _pendingRedirect = redirect;
}
List<RedirectInfo> get redirects => _redirects;
@@ -1569,12 +1594,14 @@
_socket.onClosed = null;
_socket.onError = null;
_returnTime = new Date.now();
+ _httpClientConnection = null;
}
void _close() {
_socket.onData = null;
_socket.onClosed = null;
_socket.onError = null;
+ _httpClientConnection = null;
_socket.close();
}
@@ -1586,6 +1613,7 @@
int _port;
Socket _socket;
Date _returnTime;
+ HttpClientConnection _httpClientConnection;
}
class _ProxyConfiguration {
@@ -1705,19 +1733,22 @@
set findProxy(String f(Uri uri)) => _findProxy = f;
- void shutdown() {
- _closeQueue.shutdown();
+ void shutdown({bool force: false}) {
+ if (force) _closeQueue.shutdown();
_openSockets.forEach((String key, Queue<_SocketConnection> connections) {
while (!connections.isEmpty) {
_SocketConnection socketConn = connections.removeFirst();
socketConn._socket.close();
}
});
- _activeSockets.forEach((_SocketConnection socketConn) {
- socketConn._socket.close();
- });
+ if (force) {
+ _activeSockets.forEach((_SocketConnection socketConn) {
+ socketConn._socket.close();
+ socketConn._httpClientConnection._onClientShutdown();
+ });
+ }
if (_evictionTimer != null) _cancelEvictionTimer();
- _shutdown = true;
+ _shutdown = true;
}
void _cancelEvictionTimer() {
@@ -1743,6 +1774,7 @@
void _connectionOpened(_SocketConnection socketConn,
_HttpClientConnection connection,
bool usingProxy) {
+ socketConn._httpClientConnection = connection;
connection._usingProxy = usingProxy;
connection._connectionEstablished(socketConn);
HttpClientRequest request = connection.open(method, url);
@@ -1857,15 +1889,15 @@
}
void _returnSocketConnection(_SocketConnection socketConn) {
- // Mark socket as returned to unregister from the old connection.
- socketConn._markReturned();
-
- // If the HTTP client is beeing shutdown don't return the connection.
+ // If the HTTP client is being shutdown don't return the connection.
if (_shutdown) {
- socketConn._socket.close();
+ socketConn._close();
return;
};
+ // Mark socket as returned to unregister from the old connection.
+ socketConn._markReturned();
+
String key = _connectionKey(socketConn._host, socketConn._port);
// Get or create the connection list for this key.
diff --git a/sdk/lib/io/http_parser.dart b/sdk/lib/io/http_parser.dart
index c4e966e..1acd7eb 100644
--- a/sdk/lib/io/http_parser.dart
+++ b/sdk/lib/io/http_parser.dart
@@ -582,6 +582,8 @@
}
void streamDone() {
+ String type() => _requestParser ? "request" : "response";
+
// If the connection is idle the HTTP stream is closed.
if (_state == _State.START) {
if (_requestParser) {
@@ -589,7 +591,7 @@
} else {
error(
new HttpParserException(
- "Connection closed before full header was received"));
+ "Connection closed before full ${type()} header was received"));
}
return;
}
@@ -600,7 +602,7 @@
// throw the error.
error(
new HttpParserException(
- "Connection closed before full header was received"));
+ "Connection closed before full ${type()} header was received"));
return;
}
@@ -614,7 +616,7 @@
// throw the error.
error(
new HttpParserException(
- "Connection closed before full body was received"));
+ "Connection closed before full ${type()} body was received"));
}
}
diff --git a/sdk/lib/io/io.dart b/sdk/lib/io/io.dart
index 82e84b4..7b0fbae 100644
--- a/sdk/lib/io/io.dart
+++ b/sdk/lib/io/io.dart
@@ -49,6 +49,7 @@
#source('stream_util.dart');
#source('string_stream.dart');
#source('timer_impl.dart');
-#source('tls_socket.dart');
+#source('secure_socket.dart');
+#source('secure_server_socket.dart');
#source('websocket.dart');
#source('websocket_impl.dart');
diff --git a/sdk/lib/io/iolib_sources.gypi b/sdk/lib/io/iolib_sources.gypi
index 2f5fa01..b4ac1bb 100644
--- a/sdk/lib/io/iolib_sources.gypi
+++ b/sdk/lib/io/iolib_sources.gypi
@@ -35,7 +35,8 @@
'stream_util.dart',
'string_stream.dart',
'timer_impl.dart',
- 'tls_socket.dart',
+ 'secure_socket.dart',
+ 'secure_server_socket.dart',
'websocket.dart',
'websocket_impl.dart',
],
diff --git a/sdk/lib/io/secure_server_socket.dart b/sdk/lib/io/secure_server_socket.dart
new file mode 100644
index 0000000..2ab290a
--- /dev/null
+++ b/sdk/lib/io/secure_server_socket.dart
@@ -0,0 +1,77 @@
+// Copyright (c) 2012, 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.
+
+
+abstract class SecureServerSocket implements ServerSocket {
+ /**
+ * Constructs a new secure server socket, binds it to a given address
+ * and port, and listens on it. Incoming client connections are
+ * promoted to secure connections, using the server certificate given by
+ * certificate_name. The bindAddress must be given as a numeric address,
+ * not a host name. The certificate name is the distinguished name (DN) of
+ * the certificate, such as "CN=localhost" or "CN=myserver.mydomain.com".
+ * The certificate is looked up in the NSS certificate database set by
+ * SecureSocket.setCertificateDatabase.
+ */
+ factory SecureServerSocket(String bindAddress,
+ int port,
+ int backlog,
+ String certificate_name) =>
+ new _SecureServerSocket(bindAddress, port, backlog, certificate_name);
+}
+
+
+class _SecureServerSocket implements SecureServerSocket {
+
+ _SecureServerSocket(String bindAddress,
+ int port,
+ int backlog,
+ String certificate_name) {
+ _socket = new ServerSocket(bindAddress, port, backlog);
+ _socket.onConnection = this._onConnectionHandler;
+ _certificate_name = certificate_name;
+ }
+
+ void set onConnection(void callback(Socket connection)) {
+ _onConnectionCallback = callback;
+ }
+
+ void set onError(void callback(e)) {
+ _socket.onError = callback;
+ }
+
+ /**
+ * Returns the port used by this socket.
+ */
+ int get port => _socket.port;
+
+ /**
+ * Closes the socket.
+ */
+ void close() {
+ _socket.close();
+ }
+
+ void _onConnectionHandler(Socket connection) {
+ if (_onConnectionCallback == null) {
+ connection.close();
+ throw new SocketIOException(
+ "SecureServerSocket with no onConnection callback connected to");
+ }
+ if (_certificate_name == null) {
+ connection.close();
+ throw new SocketIOException(
+ "SecureServerSocket with server certificate not set connected to");
+ }
+ var secure_connection = new _SecureSocket.server(connection.remoteHost,
+ connection.remotePort,
+ connection,
+ _certificate_name);
+ _onConnectionCallback(secure_connection);
+ }
+
+ ServerSocket _socket;
+ var _onConnectionCallback;
+ String _certificate_name;
+}
diff --git a/sdk/lib/io/secure_socket.dart b/sdk/lib/io/secure_socket.dart
new file mode 100644
index 0000000..9efbacb
--- /dev/null
+++ b/sdk/lib/io/secure_socket.dart
@@ -0,0 +1,539 @@
+// Copyright (c) 2012, 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.
+
+/**
+ * SecureSocket provides a secure (SSL or TLS) client connection to a server.
+ * The certificate provided by the server is checked
+ * using the certificate database provided in setCertificateDatabase.
+ */
+abstract class SecureSocket implements Socket {
+ /**
+ * Constructs a new secure client socket and connect it to the given
+ * host on the given port. The returned socket is not yet connected
+ * but ready for registration of callbacks.
+ */
+ factory SecureSocket(String host, int port) => new _SecureSocket(host, port);
+
+ /**
+ * Initializes the NSS library with the path to a certificate database
+ * containing root certificates for verifying certificate paths on
+ * client connections, and server certificates to provide on server
+ * connections. The password argument should be used when creating
+ * secure server sockets, to allow the private key of the server
+ * certificate to be fetched.
+ *
+ * The database should be an NSS certificate database directory
+ * containing a cert9.db file, not a cert8.db file. This version of
+ * the database can be created using the NSS certutil tool with "sql:" in
+ * front of the absolute path of the database directory, or setting the
+ * environment variable NSS_DEFAULT_DB_TYPE to "sql".
+ */
+ external static void setCertificateDatabase(String certificateDatabase,
+ [String password]);
+}
+
+
+class _SecureSocket implements SecureSocket {
+ // Status states
+ static final int NOT_CONNECTED = 200;
+ static final int HANDSHAKE = 201;
+ static final int CONNECTED = 202;
+ static final int CLOSED = 203;
+
+ // Buffer identifiers.
+ // These must agree with those in the native C++ implementation.
+ static final int READ_PLAINTEXT = 0;
+ static final int WRITE_PLAINTEXT = 1;
+ static final int READ_ENCRYPTED = 2;
+ static final int WRITE_ENCRYPTED = 3;
+ static final int NUM_BUFFERS = 4;
+
+ int _count = 0;
+ // Constructs a new secure client socket.
+ factory _SecureSocket(String host, int port) =>
+ new _SecureSocket.internal(host, port, false);
+
+ // Constructs a new secure server socket, with the named server certificate.
+ factory _SecureSocket.server(String host,
+ int port,
+ Socket socket,
+ String certificateName) =>
+ new _SecureSocket.internal(host, port, true, socket, certificateName);
+
+ _SecureSocket.internal(String host,
+ int port,
+ bool is_server,
+ [Socket socket,
+ String certificateName])
+ : _host = host,
+ _port = port,
+ _socket = socket,
+ _certificateName = certificateName,
+ _is_server = is_server,
+ _secureFilter = new _SecureFilter() {
+ if (_socket == null) {
+ _socket = new Socket(host, port);
+ }
+ _socket.onConnect = _secureConnectHandler;
+ _socket.onData = _secureDataHandler;
+ _socket.onClosed = _secureCloseHandler;
+ _secureFilter.init();
+ _secureFilter.registerHandshakeCompleteCallback(_secureHandshakeCompleteHandler);
+ }
+
+ int get port => _socket.port;
+
+ String get remoteHost => _socket.remoteHost;
+
+ int get remotePort => _socket.remotePort;
+
+ void set onClosed(void callback()) {
+ if (_inputStream != null) {
+ throw new StreamException(
+ "Cannot set close handler when input stream is used");
+ }
+ _onClosed = callback;
+ }
+
+ void set _onClosed(void callback()) {
+ _socketCloseHandler = callback;
+ }
+
+ void set onConnect(void callback()) {
+ if (_outputStream != null) {
+ throw new StreamException(
+ "Cannot set connect handler when output stream is used");
+ }
+ if (_status == CONNECTED || _status == CLOSED) {
+ throw new StreamException(
+ "Cannot set connect handler when already connected");
+ }
+ _onConnect = callback;
+ }
+
+ void set _onConnect(void callback()) {
+ _socketConnectHandler = callback;
+ }
+
+ void set onData(void callback()) {
+ if (_outputStream != null) {
+ throw new StreamException(
+ "Cannot set data handler when input stream is used");
+ }
+ _onData = callback;
+ }
+
+ void set _onData(void callback()) {
+ _socketDataHandler = callback;
+ }
+
+ void set onWrite(void callback()) {
+ if (_outputStream != null) {
+ throw new StreamException(
+ "Cannot set write handler when output stream is used");
+ }
+ _onWrite = callback;
+ }
+
+ void set _onWrite(void callback()) {
+ _socketWriteHandler = callback;
+ // Reset the one-shot onWrite handler.
+ _socket.onWrite = _secureWriteHandler;
+ }
+
+ InputStream get inputStream {
+ if (_inputStream == null) {
+ if (_socketDataHandler != null || _socketCloseHandler != null) {
+ throw new StreamException(
+ "Cannot get input stream when socket handlers are used");
+ }
+ _inputStream = new _SocketInputStream(this);
+ }
+ return _inputStream;
+ }
+
+ OutputStream get outputStream {
+ if (_outputStream == null) {
+ if (_socketConnectHandler != null || _socketWriteHandler != null) {
+ throw new StreamException(
+ "Cannot get output stream when socket handlers are used");
+ }
+ _outputStream = new _SocketOutputStream(this);
+ }
+ return _outputStream;
+ }
+
+ int available() {
+ throw new UnimplementedError("SecureSocket.available not implemented yet");
+ }
+
+ void close([bool halfClose]) {
+ if (halfClose) {
+ _closedWrite = true;
+ _writeEncryptedData();
+ if (_filterWriteEmpty) {
+ _socket.close(true);
+ _socketClosedWrite = true;
+ }
+ } else {
+ _closedWrite = true;
+ _closedRead = true;
+ _socket.close(false);
+ _socketClosedWrite = true;
+ _socketClosedRead = true;
+ _secureFilter.destroy();
+ _secureFilter = null;
+ if (scheduledDataEvent != null) {
+ scheduledDataEvent.cancel();
+ }
+ _status = CLOSED;
+ }
+ }
+
+ void _closeWrite() => close(true);
+
+ List<int> read([int len]) {
+ if (_closedRead) {
+ throw new SocketException("Reading from a closed socket");
+ }
+ if (_status != CONNECTED) {
+ return new List<int>(0);
+ }
+ var buffer = _secureFilter.buffers[READ_PLAINTEXT];
+ _readEncryptedData();
+ int toRead = buffer.length;
+ if (len != null) {
+ if (len is! int || len < 0) {
+ throw new ArgumentError(
+ "Invalid len parameter in SecureSocket.read (len: $len)");
+ }
+ if (len < toRead) {
+ toRead = len;
+ }
+ }
+ List<int> result = buffer.data.getRange(buffer.start, toRead);
+ buffer.advanceStart(toRead);
+ _setHandlersAfterRead();
+ return result;
+ }
+
+ int readList(List<int> data, int offset, int bytes) {
+ if (_closedRead) {
+ throw new SocketException("Reading from a closed socket");
+ }
+ if (offset < 0 || bytes < 0 || offset + bytes > data.length) {
+ throw new ArgumentError(
+ "Invalid offset or bytes in SecureSocket.readList");
+ }
+ if (_status != CONNECTED && _status != CLOSED) {
+ return 0;
+ }
+
+ int bytesRead = 0;
+ var buffer = _secureFilter.buffers[READ_PLAINTEXT];
+ // TODO(whesse): Currently this fails if the if is turned into a while loop.
+ // Fix it so that it can loop and read more than one buffer's worth of data.
+ if (bytes > bytesRead) {
+ _readEncryptedData();
+ if (buffer.length > 0) {
+ int toRead = min(bytes - bytesRead, buffer.length);
+ data.setRange(offset, toRead, buffer.data, buffer.start);
+ buffer.advanceStart(toRead);
+ bytesRead += toRead;
+ offset += toRead;
+ }
+ }
+
+ _setHandlersAfterRead();
+ return bytesRead;
+ }
+
+ // Write the data to the socket, and flush it as much as possible
+ // until it would block. If the write would block, _writeEncryptedData sets
+ // up handlers to flush the pipeline when possible.
+ int writeList(List<int> data, int offset, int bytes) {
+ if (_closedWrite) {
+ throw new SocketException("Writing to a closed socket");
+ }
+ if (_status != CONNECTED) return 0;
+ var buffer = _secureFilter.buffers[WRITE_PLAINTEXT];
+ if (bytes > buffer.free) {
+ bytes = buffer.free;
+ }
+ if (bytes > 0) {
+ buffer.data.setRange(buffer.start + buffer.length, bytes, data, offset);
+ buffer.length += bytes;
+ }
+ _writeEncryptedData(); // Tries to flush all pipeline stages.
+ return bytes;
+ }
+
+ void _secureConnectHandler() {
+ _connectPending = true;
+ _secureFilter.connect(_host, _port, _is_server, _certificateName);
+ _status = HANDSHAKE;
+ _secureHandshake();
+ }
+
+ void _secureWriteHandler() {
+ _writeEncryptedData();
+ if (_filterWriteEmpty && _closedWrite && !_socketClosedWrite) {
+ _socket.close(true);
+ _sockedClosedWrite = true;
+ }
+ if (_status == HANDSHAKE) {
+ _secureHandshake();
+ } else if (_status == CONNECTED &&
+ _socketWriteHandler != null &&
+ _secureFilter.buffers[WRITE_PLAINTEXT].free > 0) {
+ // We must be able to set onWrite from the onWrite callback.
+ var handler = _socketWriteHandler;
+ // Reset the one-shot handler.
+ _socketWriteHandler = null;
+ handler();
+ }
+ }
+
+ void _secureDataHandler() {
+ if (_status == HANDSHAKE) {
+ _secureHandshake();
+ } else {
+ _writeEncryptedData(); // TODO(whesse): Removing this causes a failure.
+ _readEncryptedData();
+ if (!_filterReadEmpty) {
+ // Call the onData event.
+ if (scheduledDataEvent != null) {
+ scheduledDataEvent.cancel();
+ scheduledDataEvent = null;
+ }
+ if (_socketDataHandler != null) {
+ _socketDataHandler();
+ }
+ }
+ }
+ }
+
+ void _secureCloseHandler() {
+ _socketClosedRead = true;
+ if (_filterReadEmpty) {
+ _closedRead = true;
+ _fireCloseEvent();
+ if (_socketClosedWrite) {
+ _secureFilter.destroy();
+ _secureFilter = null;
+ _status = CLOSED;
+ }
+ }
+ }
+
+ void _secureHandshake() {
+ _readEncryptedData();
+ _secureFilter.handshake();
+ _writeEncryptedData();
+ if (_secureFilter.buffers[WRITE_ENCRYPTED].length > 0) {
+ _socket.onWrite = _secureWriteHandler;
+ }
+ }
+
+ void _secureHandshakeCompleteHandler() {
+ _status = CONNECTED;
+ if (_connectPending && _socketConnectHandler != null) {
+ _connectPending = false;
+ _socketConnectHandler();
+ }
+ if (_socketWriteHandler != null) {
+ _socket.onWrite = _secureWriteHandler;
+ }
+ }
+
+ // True if the underlying socket is closed, the filter has been emptied of
+ // all data, and the close event has been fired.
+ get _closed => _socketClosed && !_fireCloseEventPending;
+
+ void _fireCloseEvent() {
+ if (scheduledDataEvent != null) {
+ scheduledDataEvent.cancel();
+ }
+ if (_socketCloseHandler != null) {
+ _socketCloseHandler();
+ }
+ }
+
+ void _readEncryptedData() {
+ // Read from the socket, and push it through the filter as far as
+ // possible.
+ var encrypted = _secureFilter.buffers[READ_ENCRYPTED];
+ var plaintext = _secureFilter.buffers[READ_PLAINTEXT];
+ bool progress = true;
+ while (progress) {
+ progress = false;
+ // Do not try to read plaintext from the filter while handshaking.
+ if ((_status == CONNECTED) && plaintext.free > 0) {
+ int bytes = _secureFilter.processBuffer(READ_PLAINTEXT);
+ if (bytes > 0) {
+ plaintext.length += bytes;
+ progress = true;
+ }
+ }
+ if (encrypted.length > 0) {
+ int bytes = _secureFilter.processBuffer(READ_ENCRYPTED);
+ if (bytes > 0) {
+ encrypted.advanceStart(bytes);
+ progress = true;
+ }
+ }
+ if (!_socketClosedRead) {
+ int bytes = _socket.readList(encrypted.data,
+ encrypted.start + encrypted.length,
+ encrypted.free);
+ if (bytes > 0) {
+ encrypted.length += bytes;
+ progress = true;
+ }
+ }
+ }
+ // If there is any data in any stages of the filter, there should
+ // be data in the plaintext buffer after this process.
+ // TODO(whesse): Verify that this is true, and there can be no
+ // partial encrypted block stuck in the secureFilter.
+ _filterReadEmpty = (plaintext.length == 0);
+ }
+
+ void _writeEncryptedData() {
+ if (_socketClosedWrite) return;
+ var encrypted = _secureFilter.buffers[WRITE_ENCRYPTED];
+ var plaintext = _secureFilter.buffers[WRITE_PLAINTEXT];
+ while (true) {
+ if (encrypted.length > 0) {
+ // Write from the filter to the socket.
+ int bytes = _socket.writeList(encrypted.data,
+ encrypted.start,
+ encrypted.length);
+ if (bytes == 0) {
+ // The socket has blocked while we have data to write.
+ // We must be notified when it becomes unblocked.
+ _socket.onWrite = _secureWriteHandler;
+ _filterWriteEmpty = false;
+ break;
+ }
+ encrypted.advanceStart(bytes);
+ } else {
+ var plaintext = _secureFilter.buffers[WRITE_PLAINTEXT];
+ if (plaintext.length > 0) {
+ int plaintext_bytes = _secureFilter.processBuffer(WRITE_PLAINTEXT);
+ plaintext.advanceStart(plaintext_bytes);
+ }
+ int bytes = _secureFilter.processBuffer(WRITE_ENCRYPTED);
+ if (bytes <= 0) {
+ // We know the WRITE_ENCRYPTED buffer is empty, and the
+ // filter wrote zero bytes to it, so the filter must be empty.
+ // Also, the WRITE_PLAINTEXT buffer must have been empty, or
+ // it would have written to the filter.
+ // TODO(whesse): Verify that the filter works this way.
+ _filterWriteEmpty = true;
+ break;
+ }
+ encrypted.length += bytes;
+ }
+ }
+ }
+
+ /* After a read, the onData handler is enabled to fire again.
+ * We may also have a close event waiting for the SecureFilter to empty.
+ */
+ void _setHandlersAfterRead() {
+ // If the filter is empty, then we are guaranteed an event when it
+ // becomes unblocked. Cancel any _secureDataHandler call.
+ // Otherwise, schedule a _secureDataHandler call since there may data
+ // available, and this read call enables the data event.
+ if (_filterReadEmpty) {
+ if (scheduledDataEvent != null) {
+ scheduledDataEvent.cancel();
+ scheduledDataEvent = null;
+ }
+ } else if (scheduledDataEvent == null) {
+ scheduledDataEvent = new Timer(0, (_) => _secureDataHandler());
+ }
+
+ if (_socketClosedRead) { // An onClose event is pending.
+ // _closedRead is false, since we are in a read or readList call.
+ if (!_filterReadEmpty) {
+ // _filterReadEmpty may be out of date since read and readList empty
+ // the plaintext buffer after calling _readEncryptedData.
+ // TODO(whesse): Fix this as part of fixing read and readList.
+ _readEncryptedData();
+ }
+ if (_filterReadEmpty) {
+ // This can't be an else clause: the value of _filterReadEmpty changes.
+ // This must be asynchronous, because we are in a read or readList call.
+ new Timer(0, (_) => _fireCloseEvent());
+ }
+ }
+ }
+
+ bool get _socketClosed => _closedRead;
+
+ // _SecureSocket cannot extend _Socket and use _Socket's factory constructor.
+ Socket _socket;
+ String _host;
+ int _port;
+ bool _is_server;
+ String _certificateName;
+
+ var _status = NOT_CONNECTED;
+ bool _socketClosedRead = false; // The network socket is closed for reading.
+ bool _socketClosedWrite = false; // The network socket is closed for writing.
+ bool _closedRead = false; // The secure socket has fired an onClosed event.
+ bool _closedWrite = false; // The secure socket has been closed for writing.
+ bool _filterReadEmpty = true; // There is no buffered data to read.
+ bool _filterWriteEmpty = true; // There is no buffered data to be written.
+ _SocketInputStream _inputStream;
+ _SocketOutputStream _outputStream;
+ bool _connectPending = false;
+ Function _socketConnectHandler;
+ Function _socketWriteHandler;
+ Function _socketDataHandler;
+ Function _socketCloseHandler;
+ Timer scheduledDataEvent;
+
+ _SecureFilter _secureFilter;
+}
+
+
+class _ExternalBuffer {
+ static final int SIZE = 8 * 1024;
+ _ExternalBuffer() : start = 0, length = 0;
+
+ // TODO(whesse): Consider making this a circular buffer. Only if it helps.
+ void advanceStart(int numBytes) {
+ start += numBytes;
+ length -= numBytes;
+ if (length == 0) {
+ start = 0;
+ }
+ }
+
+ int get free => SIZE - (start + length);
+
+ List data; // This will be a ExternalByteArray, backed by C allocated data.
+ int start;
+ int length;
+}
+
+
+abstract class _SecureFilter {
+ external factory _SecureFilter();
+
+ void connect(String hostName,
+ int port,
+ bool is_server,
+ String certificateName);
+ void destroy();
+ void handshake();
+ void init();
+ int processBuffer(int bufferIndex);
+ void registerHandshakeCompleteCallback(Function handshakeCompleteHandler);
+
+ List<_ExternalBuffer> get buffers;
+}
diff --git a/sdk/lib/io/string_stream.dart b/sdk/lib/io/string_stream.dart
index c168153..49302c1 100644
--- a/sdk/lib/io/string_stream.dart
+++ b/sdk/lib/io/string_stream.dart
@@ -268,38 +268,13 @@
static int _encodingSize(String string) => _encodeString(string, null);
static int _encodeString(String string, List<int> buffer) {
- int pos = 0;
- int length = string.length;
- for (int i = 0; i < length; i++) {
- int additionalBytes;
- int charCode = string.charCodeAt(i);
- if (charCode <= 0x007F) {
- additionalBytes = 0;
- if (buffer != null) buffer[pos] = charCode;
- } else if (charCode <= 0x07FF) {
- // 110xxxxx (xxxxx is top 5 bits).
- if (buffer != null) buffer[pos] = ((charCode >> 6) & 0x1F) | 0xC0;
- additionalBytes = 1;
- } else if (charCode <= 0xFFFF) {
- // 1110xxxx (xxxx is top 4 bits)
- if (buffer != null) buffer[pos] = ((charCode >> 12) & 0x0F)| 0xE0;
- additionalBytes = 2;
- } else {
- // 11110xxx (xxx is top 3 bits)
- if (buffer != null) buffer[pos] = ((charCode >> 18) & 0x07) | 0xF0;
- additionalBytes = 3;
- }
- pos++;
- if (buffer != null) {
- for (int i = additionalBytes; i > 0; i--) {
- // 10xxxxxx (xxxxxx is next 6 bits from the top).
- buffer[pos++] = ((charCode >> (6 * (i - 1))) & 0x3F) | 0x80;
- }
- } else {
- pos += additionalBytes;
+ List<int> utf8CodeUnits = encodeUtf8(string);
+ if (buffer != null) {
+ for (int i = 0; i < utf8CodeUnits.length; i++) {
+ buffer[i] = utf8CodeUnits[i];
}
}
- return pos;
+ return utf8CodeUnits.length;
}
}
diff --git a/sdk/lib/io/tls_socket.dart b/sdk/lib/io/tls_socket.dart
deleted file mode 100644
index 44551b5..0000000
--- a/sdk/lib/io/tls_socket.dart
+++ /dev/null
@@ -1,373 +0,0 @@
-// Copyright (c) 2012, 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.
-
-/**
- * TlsSocket provides a secure (SSL or TLS) client connection to a server.
- * The certificate provided by the server is checked
- * using the certificate database provided in setCertificateDatabase.
- */
-abstract class TlsSocket implements Socket {
- /**
- * Constructs a new secure socket and connect it to the given
- * host on the given port. The returned socket is not yet connected
- * but ready for registration of callbacks.
- */
- factory TlsSocket(String host, int port) => new _TlsSocket(host, port);
-
- /**
- * Initializes the TLS library with the path to a certificate database
- * containing root certificates for verifying certificate paths on
- * client connections, and server certificates to provide on server
- * connections.
- */
- external static void setCertificateDatabase(String pkcertDirectory);
-}
-
-
-class _TlsSocket implements TlsSocket {
- // Status states
- static final int NOT_CONNECTED = 200;
- static final int HANDSHAKE = 201;
- static final int CONNECTED = 202;
- static final int CLOSED = 203;
-
- // Buffer identifiers.
- // These must agree with those in the native C++ implementation.
- static final int READ_PLAINTEXT = 0;
- static final int WRITE_PLAINTEXT = 1;
- static final int READ_ENCRYPTED = 2;
- static final int WRITE_ENCRYPTED = 3;
- static final int NUM_BUFFERS = 4;
-
- int _count = 0;
- // Constructs a new secure client socket.
- _TlsSocket(String host, int port)
- : _host = host,
- _port = port,
- _socket = new Socket(host, port),
- _tlsFilter = new _TlsFilter() {
- _socket.onConnect = _tlsConnectHandler;
- _socket.onData = _tlsDataHandler;
- _socket.onClosed = _tlsCloseHandler;
- _tlsFilter.init();
- _tlsFilter.registerHandshakeCompleteCallback(_tlsHandshakeCompleteHandler);
- }
-
- InputStream get inputStream {
- // TODO(6701): Implement stream interfaces on TlsSocket.
- throw new UnimplementedError("TlsSocket.inputStream not implemented yet");
- }
-
- int get port => _socket.port;
-
- String get remoteHost => _socket.remoteHost;
-
- int get remotePort => _socket.remotePort;
-
- void set onClosed(void callback()) {
- _socketCloseHandler = callback;
- }
-
- void set onConnect(void callback()) {
- _socketConnectHandler = callback;
- }
-
- void set onData(void callback()) {
- _socketDataHandler = callback;
- }
-
- void set onWrite(void callback()) {
- _socketWriteHandler = callback;
- // Reset the one-shot onWrite handler.
- _socket.onWrite = _tlsWriteHandler;
- }
-
- OutputStream get outputStream {
- // TODO(6701): Implement stream interfaces on TlsSocket.
- throw new UnimplementedError("TlsSocket.inputStream not implemented yet");
- }
-
- int available() {
- throw new UnimplementedError("TlsSocket.available not implemented yet");
- }
-
- void close([bool halfClose]) {
- _socket.close(halfClose);
- }
-
- List<int> read([int len]) {
- var buffer = _tlsFilter.buffers[READ_PLAINTEXT];
- _readEncryptedData();
- int toRead = buffer.length;
- if (len != null) {
- if (len is! int || len < 0) {
- throw new ArgumentError(
- "Invalid len parameter in TlsSocket.read (len: $len)");
- }
- if (len < toRead) {
- toRead = len;
- }
- }
- List<int> result = buffer.data.getRange(buffer.start, toRead);
- buffer.advanceStart(toRead);
- _setHandlersAfterRead();
- return result;
- }
-
- int readList(List<int> data, int offset, int bytes) {
- if (offset < 0 || bytes < 0 || offset + bytes > data.length) {
- throw new ArgumentError(
- "Invalid offset or bytes in TlsSocket.readList");
- }
-
- int bytesRead = 0;
- var buffer = _tlsFilter.buffers[READ_PLAINTEXT];
- // TODO(whesse): Currently this fails if the if is turned into a while loop.
- // Fix it so that it can loop and read more than one buffer's worth of data.
- if (bytes > bytesRead) {
- _readEncryptedData();
- if (buffer.length > 0) {
- int toRead = min(bytes - bytesRead, buffer.length);
- data.setRange(offset, toRead, buffer.data, buffer.start);
- buffer.advanceStart(toRead);
- bytesRead += toRead;
- offset += toRead;
- }
- }
-
- _setHandlersAfterRead();
- return bytesRead;
- }
-
- // Write the data to the socket, and flush it as much as possible
- // until it would block. If the write would block, _writeEncryptedData sets
- // up handlers to flush the pipeline when possible.
- int writeList(List<int> data, int offset, int bytes) {
- var buffer = _tlsFilter.buffers[WRITE_PLAINTEXT];
- if (bytes > buffer.free) {
- bytes = buffer.free;
- }
- if (bytes > 0) {
- buffer.data.setRange(buffer.start + buffer.length, bytes, data, offset);
- buffer.length += bytes;
- }
- _writeEncryptedData(); // Tries to flush all pipeline stages.
- return bytes;
- }
-
- void _tlsConnectHandler() {
- _connectPending = true;
- _tlsFilter.connect(_host, _port);
- _status = HANDSHAKE;
- _tlsHandshake();
- }
-
- void _tlsWriteHandler() {
- if (_status == HANDSHAKE) {
- _tlsHandshake();
- } else if (_status == CONNECTED) {
- if (_socketWriteHandler != null) {
- _socketWriteHandler();
- }
- }
- }
-
- void _tlsDataHandler() {
- if (_status == HANDSHAKE) {
- _tlsHandshake();
- } else {
- _writeEncryptedData(); // TODO(whesse): Removing this causes a failure.
- _readEncryptedData();
- var buffer = _tlsFilter.buffers[READ_PLAINTEXT];
- if (_filterEmpty) {
- if (_fireCloseEventPending) {
- _fireCloseEvent();
- }
- } else { // Filter is not empty.
- if (scheduledDataEvent != null) {
- scheduledDataEvent.cancel();
- scheduledDataEvent = null;
- }
- if (_socketDataHandler != null) {
- _socketDataHandler();
- }
- }
- }
- }
-
- void _tlsCloseHandler() {
- _socketClosed = true;
- _status = CLOSED;
- _socket.close();
- if (_filterEmpty) {
- _fireCloseEvent();
- } else {
- _fireCloseEventPending = true;
- }
- }
-
- void _tlsHandshake() {
- _readEncryptedData();
- _tlsFilter.handshake();
- _writeEncryptedData();
- if (_tlsFilter.buffers[WRITE_ENCRYPTED].length > 0) {
- _socket.onWrite = _tlsWriteHandler;
- }
- }
-
- void _tlsHandshakeCompleteHandler() {
- _status = CONNECTED;
- if (_connectPending && _socketConnectHandler != null) {
- _connectPending = false;
- _socketConnectHandler();
- }
- }
-
- void _fireCloseEvent() {
- _fireCloseEventPending = false;
- _tlsFilter.destroy();
- _tlsFilter = null;
- if (scheduledDataEvent != null) {
- scheduledDataEvent.cancel();
- }
- if (_socketCloseHandler != null) {
- _socketCloseHandler();
- }
- }
-
- void _readEncryptedData() {
- // Read from the socket, and push it through the filter as far as
- // possible.
- var encrypted = _tlsFilter.buffers[READ_ENCRYPTED];
- var plaintext = _tlsFilter.buffers[READ_PLAINTEXT];
- bool progress = true;
- while (progress) {
- progress = false;
- // Do not try to read plaintext from the filter while handshaking.
- if ((_status == CONNECTED || _status == CLOSED) && plaintext.free > 0) {
- int bytes = _tlsFilter.processBuffer(READ_PLAINTEXT);
- if (bytes > 0) {
- plaintext.length += bytes;
- progress = true;
- }
- }
- if (encrypted.length > 0) {
- int bytes = _tlsFilter.processBuffer(READ_ENCRYPTED);
- if (bytes > 0) {
- encrypted.advanceStart(bytes);
- progress = true;
- }
- }
- if (!_socketClosed) {
- int bytes = _socket.readList(encrypted.data,
- encrypted.start + encrypted.length,
- encrypted.free);
- if (bytes > 0) {
- encrypted.length += bytes;
- progress = true;
- }
- }
- }
- // TODO(whesse): This can be incorrect if there is a partial
- // encrypted block stuck in the tlsFilter, and no other data.
- // Fix this - we do need to know when the filter is empty.
- _filterEmpty = (plaintext.length == 0);
- }
-
- void _writeEncryptedData() {
- // Write from the filter to the socket.
- var buffer = _tlsFilter.buffers[WRITE_ENCRYPTED];
- while (true) {
- if (buffer.length > 0) {
- int bytes = _socket.writeList(buffer.data, buffer.start, buffer.length);
- if (bytes == 0) {
- // The socket has blocked while we have data to write.
- // We must be notified when it becomes unblocked.
- _socket.onWrite = _tlsWriteHandler;
- break;
- }
- buffer.advanceStart(bytes);
- } else {
- var plaintext = _tlsFilter.buffers[WRITE_PLAINTEXT];
- if (plaintext.length > 0) {
- int plaintext_bytes = _tlsFilter.processBuffer(WRITE_PLAINTEXT);
- plaintext.advanceStart(plaintext_bytes);
- }
- int bytes = _tlsFilter.processBuffer(WRITE_ENCRYPTED);
- if (bytes <= 0) break;
- buffer.length += bytes;
- }
- }
- }
-
- /* After a read, the onData handler is enabled to fire again.
- * We may also have a close event waiting for the TlsFilter to empty.
- */
- void _setHandlersAfterRead() {
- // If the filter is empty, then we are guaranteed an event when it
- // becomes unblocked.
- // Otherwise, schedule a _tlsDataHandler call since there may data
- // available, and this read call enables the data event.
- if (!_filterEmpty && scheduledDataEvent == null) {
- scheduledDataEvent = new Timer(0, (_) => _tlsDataHandler());
- } else if (_filterEmpty && scheduledDataEvent != null) {
- scheduledDataEvent.cancel();
- scheduledDataEvent = null;
- }
- if (_filterEmpty && _fireCloseEventPending) {
- _fireCloseEvent();
- }
- }
-
- // _TlsSocket cannot extend _Socket and use _Socket's factory constructor.
- Socket _socket;
- String _host;
- int _port;
-
- var _status = NOT_CONNECTED;
- bool _socketClosed = false;
- bool _filterEmpty = false;
- bool _connectPending = false;
- bool _fireCloseEventPending = false;
- Function _socketConnectHandler;
- Function _socketWriteHandler;
- Function _socketDataHandler;
- Function _socketCloseHandler;
- Timer scheduledDataEvent;
-
- _TlsFilter _tlsFilter;
-}
-
-
-class _TlsExternalBuffer {
- static final int SIZE = 8 * 1024;
- _TlsExternalBuffer() : start = 0, length = 0;
-
- // TODO(whesse): Consider making this a circular buffer. Only if it helps.
- void advanceStart(int numBytes) {
- start += numBytes;
- length -= numBytes;
- if (length == 0) {
- start = 0;
- }
- }
-
- int get free => SIZE - (start + length);
-
- List data; // This will be a ExternalByteArray, backed by C allocated data.
- int start;
- int length;
-}
-
-
-abstract class _TlsFilter {
- external factory _TlsFilter();
-
- void connect(String hostName, int port);
- void destroy();
- void handshake();
- void init();
- int processBuffer(int bufferIndex);
- void registerHandshakeCompleteCallback(Function handshakeCompleteHandler);
-}
diff --git a/sdk/lib/math/random.dart b/sdk/lib/math/random.dart
index efc5678..bba1867 100644
--- a/sdk/lib/math/random.dart
+++ b/sdk/lib/math/random.dart
@@ -25,16 +25,16 @@
* Implementation note: The default implementation supports [max] values
* between 1 and ((1<<32) - 1) inclusive.
*/
- abstract int nextInt(int max);
+ int nextInt(int max);
/**
* Generates a positive random floating point value uniformly distributed on
* the range from 0.0, inclusive, to 1.0, exclusive.
*/
- abstract double nextDouble();
+ double nextDouble();
/**
* Generates a random boolean value.
*/
- abstract bool nextBool();
+ bool nextBool();
}
diff --git a/sdk/lib/svg/dart2js/svg_dart2js.dart b/sdk/lib/svg/dart2js/svg_dart2js.dart
index ef6935a..d018a6d 100644
--- a/sdk/lib/svg/dart2js/svg_dart2js.dart
+++ b/sdk/lib/svg/dart2js/svg_dart2js.dart
@@ -15,20 +15,20 @@
final _START_TAG_REGEXP = new RegExp('<(\\w+)');
-class _SVGElementFactoryProvider {
- static SVGElement createSVGElement_tag(String tag) {
+class _SvgElementFactoryProvider {
+ static SvgElement createSvgElement_tag(String tag) {
final Element temp =
document.$dom_createElementNS("http://www.w3.org/2000/svg", tag);
return temp;
}
- static SVGElement createSVGElement_svg(String svg) {
+ static SvgElement createSvgElement_svg(String svg) {
Element parentTag;
final match = _START_TAG_REGEXP.firstMatch(svg);
if (match != null && match.group(1).toLowerCase() == 'svg') {
parentTag = new Element.tag('div');
} else {
- parentTag = new SVGSVGElement();
+ parentTag = new SvgSvgElement();
}
parentTag.innerHTML = svg;
@@ -40,9 +40,9 @@
}
}
-class _SVGSVGElementFactoryProvider {
- static SVGSVGElement createSVGSVGElement() {
- final el = new SVGElement.tag("svg");
+class _SvgSvgElementFactoryProvider {
+ static SvgSvgElement createSvgSvgElement() {
+ final el = new SvgElement.tag("svg");
// The SVG spec requires the version attribute to match the spec version
el.attributes['version'] = "1.1";
return el;
@@ -53,122 +53,124 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGAElement
-class SVGAElement extends SVGElement implements SVGLangSpace, SVGTests, SVGStylable, SVGURIReference, SVGExternalResourcesRequired, SVGTransformable native "*SVGAElement" {
+/// @domName SVGAElement; @docsEditable true
+class AElement extends SvgElement implements Transformable, Tests, UriReference, Stylable, ExternalResourcesRequired, LangSpace native "*SVGAElement" {
- /** @domName SVGAElement.target */
- final SVGAnimatedString target;
+ factory AElement() => _SvgElementFactoryProvider.createSvgElement_tag("a");
+
+ /// @domName SVGAElement.target; @docsEditable true
+ final AnimatedString target;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGLocatable
- /** @domName SVGLocatable.farthestViewportElement */
- final SVGElement farthestViewportElement;
+ /// @domName SVGLocatable.farthestViewportElement; @docsEditable true
+ final SvgElement farthestViewportElement;
- /** @domName SVGLocatable.nearestViewportElement */
- final SVGElement nearestViewportElement;
+ /// @domName SVGLocatable.nearestViewportElement; @docsEditable true
+ final SvgElement nearestViewportElement;
- /** @domName SVGLocatable.getBBox */
- SVGRect getBBox() native;
+ /// @domName SVGLocatable.getBBox; @docsEditable true
+ Rect getBBox() native;
- /** @domName SVGLocatable.getCTM */
- SVGMatrix getCTM() native;
+ /// @domName SVGLocatable.getCTM; @docsEditable true
+ Matrix getCTM() native;
- /** @domName SVGLocatable.getScreenCTM */
- SVGMatrix getScreenCTM() native;
+ /// @domName SVGLocatable.getScreenCTM; @docsEditable true
+ Matrix getScreenCTM() native;
- /** @domName SVGLocatable.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native;
+ /// @domName SVGLocatable.getTransformToElement; @docsEditable true
+ Matrix getTransformToElement(SvgElement element) native;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGTests
- /** @domName SVGTests.requiredExtensions */
- final SVGStringList requiredExtensions;
+ /// @domName SVGTests.requiredExtensions; @docsEditable true
+ final StringList requiredExtensions;
- /** @domName SVGTests.requiredFeatures */
- final SVGStringList requiredFeatures;
+ /// @domName SVGTests.requiredFeatures; @docsEditable true
+ final StringList requiredFeatures;
- /** @domName SVGTests.systemLanguage */
- final SVGStringList systemLanguage;
+ /// @domName SVGTests.systemLanguage; @docsEditable true
+ final StringList systemLanguage;
- /** @domName SVGTests.hasExtension */
+ /// @domName SVGTests.hasExtension; @docsEditable true
bool hasExtension(String extension) native;
// From SVGTransformable
- /** @domName SVGTransformable.transform */
- final SVGAnimatedTransformList transform;
+ /// @domName SVGTransformable.transform; @docsEditable true
+ final AnimatedTransformList transform;
// From SVGURIReference
- /** @domName SVGURIReference.href */
- final SVGAnimatedString href;
+ /// @domName SVGURIReference.href; @docsEditable true
+ final AnimatedString href;
}
// Copyright (c) 2012, 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.
-/// @domName SVGAltGlyphDefElement
-class SVGAltGlyphDefElement extends SVGElement native "*SVGAltGlyphDefElement" {
+/// @domName SVGAltGlyphDefElement; @docsEditable true
+class AltGlyphDefElement extends SvgElement native "*SVGAltGlyphDefElement" {
}
// Copyright (c) 2012, 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.
-/// @domName SVGAltGlyphElement
-class SVGAltGlyphElement extends SVGTextPositioningElement implements SVGURIReference native "*SVGAltGlyphElement" {
+/// @domName SVGAltGlyphElement; @docsEditable true
+class AltGlyphElement extends TextPositioningElement implements UriReference native "*SVGAltGlyphElement" {
- /** @domName SVGAltGlyphElement.format */
+ /// @domName SVGAltGlyphElement.format; @docsEditable true
String format;
- /** @domName SVGAltGlyphElement.glyphRef */
+ /// @domName SVGAltGlyphElement.glyphRef; @docsEditable true
String glyphRef;
// From SVGURIReference
- /** @domName SVGURIReference.href */
- final SVGAnimatedString href;
+ /// @domName SVGURIReference.href; @docsEditable true
+ final AnimatedString href;
}
// Copyright (c) 2012, 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.
-/// @domName SVGAltGlyphItemElement
-class SVGAltGlyphItemElement extends SVGElement native "*SVGAltGlyphItemElement" {
+/// @domName SVGAltGlyphItemElement; @docsEditable true
+class AltGlyphItemElement extends SvgElement native "*SVGAltGlyphItemElement" {
}
// Copyright (c) 2012, 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.
-/// @domName SVGAngle
-class SVGAngle native "*SVGAngle" {
+/// @domName SVGAngle; @docsEditable true
+class Angle native "*SVGAngle" {
static const int SVG_ANGLETYPE_DEG = 2;
@@ -180,22 +182,22 @@
static const int SVG_ANGLETYPE_UNSPECIFIED = 1;
- /** @domName SVGAngle.unitType */
+ /// @domName SVGAngle.unitType; @docsEditable true
final int unitType;
- /** @domName SVGAngle.value */
+ /// @domName SVGAngle.value; @docsEditable true
num value;
- /** @domName SVGAngle.valueAsString */
+ /// @domName SVGAngle.valueAsString; @docsEditable true
String valueAsString;
- /** @domName SVGAngle.valueInSpecifiedUnits */
+ /// @domName SVGAngle.valueInSpecifiedUnits; @docsEditable true
num valueInSpecifiedUnits;
- /** @domName SVGAngle.convertToSpecifiedUnits */
+ /// @domName SVGAngle.convertToSpecifiedUnits; @docsEditable true
void convertToSpecifiedUnits(int unitType) native;
- /** @domName SVGAngle.newValueSpecifiedUnits */
+ /// @domName SVGAngle.newValueSpecifiedUnits; @docsEditable true
void newValueSpecifiedUnits(int unitType, num valueInSpecifiedUnits) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -203,59 +205,67 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGAnimateColorElement
-class SVGAnimateColorElement extends SVGAnimationElement native "*SVGAnimateColorElement" {
+/// @domName SVGAnimateColorElement; @docsEditable true
+class AnimateColorElement extends AnimationElement native "*SVGAnimateColorElement" {
+
+ factory AnimateColorElement() => _SvgElementFactoryProvider.createSvgElement_tag("animateColor");
}
// Copyright (c) 2012, 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.
-/// @domName SVGAnimateElement
-class SVGAnimateElement extends SVGAnimationElement native "*SVGAnimateElement" {
+/// @domName SVGAnimateElement; @docsEditable true
+class AnimateElement extends AnimationElement native "*SVGAnimateElement" {
+
+ factory AnimateElement() => _SvgElementFactoryProvider.createSvgElement_tag("animate");
}
// Copyright (c) 2012, 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.
-/// @domName SVGAnimateMotionElement
-class SVGAnimateMotionElement extends SVGAnimationElement native "*SVGAnimateMotionElement" {
+/// @domName SVGAnimateMotionElement; @docsEditable true
+class AnimateMotionElement extends AnimationElement native "*SVGAnimateMotionElement" {
+
+ factory AnimateMotionElement() => _SvgElementFactoryProvider.createSvgElement_tag("animateMotion");
}
// Copyright (c) 2012, 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.
-/// @domName SVGAnimateTransformElement
-class SVGAnimateTransformElement extends SVGAnimationElement native "*SVGAnimateTransformElement" {
+/// @domName SVGAnimateTransformElement; @docsEditable true
+class AnimateTransformElement extends AnimationElement native "*SVGAnimateTransformElement" {
+
+ factory AnimateTransformElement() => _SvgElementFactoryProvider.createSvgElement_tag("animateTransform");
}
// Copyright (c) 2012, 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.
-/// @domName SVGAnimatedAngle
-class SVGAnimatedAngle native "*SVGAnimatedAngle" {
+/// @domName SVGAnimatedAngle; @docsEditable true
+class AnimatedAngle native "*SVGAnimatedAngle" {
- /** @domName SVGAnimatedAngle.animVal */
- final SVGAngle animVal;
+ /// @domName SVGAnimatedAngle.animVal; @docsEditable true
+ final Angle animVal;
- /** @domName SVGAnimatedAngle.baseVal */
- final SVGAngle baseVal;
+ /// @domName SVGAnimatedAngle.baseVal; @docsEditable true
+ final Angle baseVal;
}
// Copyright (c) 2012, 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.
-/// @domName SVGAnimatedBoolean
-class SVGAnimatedBoolean native "*SVGAnimatedBoolean" {
+/// @domName SVGAnimatedBoolean; @docsEditable true
+class AnimatedBoolean native "*SVGAnimatedBoolean" {
- /** @domName SVGAnimatedBoolean.animVal */
+ /// @domName SVGAnimatedBoolean.animVal; @docsEditable true
final bool animVal;
- /** @domName SVGAnimatedBoolean.baseVal */
+ /// @domName SVGAnimatedBoolean.baseVal; @docsEditable true
bool baseVal;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -263,13 +273,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGAnimatedEnumeration
-class SVGAnimatedEnumeration native "*SVGAnimatedEnumeration" {
+/// @domName SVGAnimatedEnumeration; @docsEditable true
+class AnimatedEnumeration native "*SVGAnimatedEnumeration" {
- /** @domName SVGAnimatedEnumeration.animVal */
+ /// @domName SVGAnimatedEnumeration.animVal; @docsEditable true
final int animVal;
- /** @domName SVGAnimatedEnumeration.baseVal */
+ /// @domName SVGAnimatedEnumeration.baseVal; @docsEditable true
int baseVal;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -277,13 +287,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGAnimatedInteger
-class SVGAnimatedInteger native "*SVGAnimatedInteger" {
+/// @domName SVGAnimatedInteger; @docsEditable true
+class AnimatedInteger native "*SVGAnimatedInteger" {
- /** @domName SVGAnimatedInteger.animVal */
+ /// @domName SVGAnimatedInteger.animVal; @docsEditable true
final int animVal;
- /** @domName SVGAnimatedInteger.baseVal */
+ /// @domName SVGAnimatedInteger.baseVal; @docsEditable true
int baseVal;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -291,96 +301,98 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGAnimatedLength
-class SVGAnimatedLength native "*SVGAnimatedLength" {
+/// @domName SVGAnimatedLength; @docsEditable true
+class AnimatedLength native "*SVGAnimatedLength" {
- /** @domName SVGAnimatedLength.animVal */
- final SVGLength animVal;
+ /// @domName SVGAnimatedLength.animVal; @docsEditable true
+ final Length animVal;
- /** @domName SVGAnimatedLength.baseVal */
- final SVGLength baseVal;
+ /// @domName SVGAnimatedLength.baseVal; @docsEditable true
+ final Length baseVal;
}
// Copyright (c) 2012, 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.
-/// @domName SVGAnimatedLengthList
-class SVGAnimatedLengthList implements JavaScriptIndexingBehavior, List<SVGAnimatedLength> native "*SVGAnimatedLengthList" {
+/// @domName SVGAnimatedLengthList; @docsEditable true
+class AnimatedLengthList implements JavaScriptIndexingBehavior, List<AnimatedLength> native "*SVGAnimatedLengthList" {
- /** @domName SVGAnimatedLengthList.animVal */
- final SVGLengthList animVal;
+ /// @domName SVGAnimatedLengthList.animVal; @docsEditable true
+ final LengthList animVal;
- /** @domName SVGAnimatedLengthList.baseVal */
- final SVGLengthList baseVal;
+ /// @domName SVGAnimatedLengthList.baseVal; @docsEditable true
+ final LengthList baseVal;
- SVGAnimatedLength operator[](int index) => JS("SVGAnimatedLength", "#[#]", this, index);
+ AnimatedLength operator[](int index) => JS("AnimatedLength", "#[#]", this, index);
- void operator[]=(int index, SVGAnimatedLength value) {
+ void operator[]=(int index, AnimatedLength value) {
throw new UnsupportedError("Cannot assign element of immutable List.");
}
- // -- start List<SVGAnimatedLength> mixins.
- // SVGAnimatedLength is the element type.
+ // -- start List<AnimatedLength> mixins.
+ // AnimatedLength is the element type.
- // From Iterable<SVGAnimatedLength>:
+ // From Iterable<AnimatedLength>:
- Iterator<SVGAnimatedLength> iterator() {
+ Iterator<AnimatedLength> iterator() {
// Note: NodeLists are not fixed size. And most probably length shouldn't
// be cached in both iterator _and_ forEach method. For now caching it
// for consistency.
- return new FixedSizeListIterator<SVGAnimatedLength>(this);
+ return new FixedSizeListIterator<AnimatedLength>(this);
}
- // From Collection<SVGAnimatedLength>:
+ // From Collection<AnimatedLength>:
- void add(SVGAnimatedLength value) {
+ void add(AnimatedLength value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addLast(SVGAnimatedLength value) {
+ void addLast(AnimatedLength value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addAll(Collection<SVGAnimatedLength> collection) {
+ void addAll(Collection<AnimatedLength> collection) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- bool contains(SVGAnimatedLength element) => _Collections.contains(this, element);
+ bool contains(AnimatedLength element) => _Collections.contains(this, element);
- void forEach(void f(SVGAnimatedLength element)) => _Collections.forEach(this, f);
+ void forEach(void f(AnimatedLength element)) => _Collections.forEach(this, f);
- Collection map(f(SVGAnimatedLength element)) => _Collections.map(this, [], f);
+ Collection map(f(AnimatedLength element)) => _Collections.map(this, [], f);
- Collection<SVGAnimatedLength> filter(bool f(SVGAnimatedLength element)) =>
- _Collections.filter(this, <SVGAnimatedLength>[], f);
+ Collection<AnimatedLength> filter(bool f(AnimatedLength element)) =>
+ _Collections.filter(this, <AnimatedLength>[], f);
- bool every(bool f(SVGAnimatedLength element)) => _Collections.every(this, f);
+ bool every(bool f(AnimatedLength element)) => _Collections.every(this, f);
- bool some(bool f(SVGAnimatedLength element)) => _Collections.some(this, f);
+ bool some(bool f(AnimatedLength element)) => _Collections.some(this, f);
bool get isEmpty => this.length == 0;
- // From List<SVGAnimatedLength>:
+ // From List<AnimatedLength>:
- void sort([Comparator<SVGAnimatedLength> compare = Comparable.compare]) {
+ void sort([Comparator<AnimatedLength> compare = Comparable.compare]) {
throw new UnsupportedError("Cannot sort immutable List.");
}
- int indexOf(SVGAnimatedLength element, [int start = 0]) =>
+ int indexOf(AnimatedLength element, [int start = 0]) =>
_Lists.indexOf(this, element, start, this.length);
- int lastIndexOf(SVGAnimatedLength element, [int start]) {
+ int lastIndexOf(AnimatedLength element, [int start]) {
if (start == null) start = length - 1;
return _Lists.lastIndexOf(this, element, start);
}
- SVGAnimatedLength get last => this[length - 1];
+ AnimatedLength get first => this[0];
- SVGAnimatedLength removeLast() {
+ AnimatedLength get last => this[length - 1];
+
+ AnimatedLength removeLast() {
throw new UnsupportedError("Cannot removeLast on immutable List.");
}
- void setRange(int start, int rangeLength, List<SVGAnimatedLength> from, [int startFrom]) {
+ void setRange(int start, int rangeLength, List<AnimatedLength> from, [int startFrom]) {
throw new UnsupportedError("Cannot setRange on immutable List.");
}
@@ -388,27 +400,27 @@
throw new UnsupportedError("Cannot removeRange on immutable List.");
}
- void insertRange(int start, int rangeLength, [SVGAnimatedLength initialValue]) {
+ void insertRange(int start, int rangeLength, [AnimatedLength initialValue]) {
throw new UnsupportedError("Cannot insertRange on immutable List.");
}
- List<SVGAnimatedLength> getRange(int start, int rangeLength) =>
- _Lists.getRange(this, start, rangeLength, <SVGAnimatedLength>[]);
+ List<AnimatedLength> getRange(int start, int rangeLength) =>
+ _Lists.getRange(this, start, rangeLength, <AnimatedLength>[]);
- // -- end List<SVGAnimatedLength> mixins.
+ // -- end List<AnimatedLength> mixins.
}
// Copyright (c) 2012, 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.
-/// @domName SVGAnimatedNumber
-class SVGAnimatedNumber native "*SVGAnimatedNumber" {
+/// @domName SVGAnimatedNumber; @docsEditable true
+class AnimatedNumber native "*SVGAnimatedNumber" {
- /** @domName SVGAnimatedNumber.animVal */
+ /// @domName SVGAnimatedNumber.animVal; @docsEditable true
final num animVal;
- /** @domName SVGAnimatedNumber.baseVal */
+ /// @domName SVGAnimatedNumber.baseVal; @docsEditable true
num baseVal;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -416,82 +428,84 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGAnimatedNumberList
-class SVGAnimatedNumberList implements JavaScriptIndexingBehavior, List<SVGAnimatedNumber> native "*SVGAnimatedNumberList" {
+/// @domName SVGAnimatedNumberList; @docsEditable true
+class AnimatedNumberList implements JavaScriptIndexingBehavior, List<AnimatedNumber> native "*SVGAnimatedNumberList" {
- /** @domName SVGAnimatedNumberList.animVal */
- final SVGNumberList animVal;
+ /// @domName SVGAnimatedNumberList.animVal; @docsEditable true
+ final NumberList animVal;
- /** @domName SVGAnimatedNumberList.baseVal */
- final SVGNumberList baseVal;
+ /// @domName SVGAnimatedNumberList.baseVal; @docsEditable true
+ final NumberList baseVal;
- SVGAnimatedNumber operator[](int index) => JS("SVGAnimatedNumber", "#[#]", this, index);
+ AnimatedNumber operator[](int index) => JS("AnimatedNumber", "#[#]", this, index);
- void operator[]=(int index, SVGAnimatedNumber value) {
+ void operator[]=(int index, AnimatedNumber value) {
throw new UnsupportedError("Cannot assign element of immutable List.");
}
- // -- start List<SVGAnimatedNumber> mixins.
- // SVGAnimatedNumber is the element type.
+ // -- start List<AnimatedNumber> mixins.
+ // AnimatedNumber is the element type.
- // From Iterable<SVGAnimatedNumber>:
+ // From Iterable<AnimatedNumber>:
- Iterator<SVGAnimatedNumber> iterator() {
+ Iterator<AnimatedNumber> iterator() {
// Note: NodeLists are not fixed size. And most probably length shouldn't
// be cached in both iterator _and_ forEach method. For now caching it
// for consistency.
- return new FixedSizeListIterator<SVGAnimatedNumber>(this);
+ return new FixedSizeListIterator<AnimatedNumber>(this);
}
- // From Collection<SVGAnimatedNumber>:
+ // From Collection<AnimatedNumber>:
- void add(SVGAnimatedNumber value) {
+ void add(AnimatedNumber value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addLast(SVGAnimatedNumber value) {
+ void addLast(AnimatedNumber value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addAll(Collection<SVGAnimatedNumber> collection) {
+ void addAll(Collection<AnimatedNumber> collection) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- bool contains(SVGAnimatedNumber element) => _Collections.contains(this, element);
+ bool contains(AnimatedNumber element) => _Collections.contains(this, element);
- void forEach(void f(SVGAnimatedNumber element)) => _Collections.forEach(this, f);
+ void forEach(void f(AnimatedNumber element)) => _Collections.forEach(this, f);
- Collection map(f(SVGAnimatedNumber element)) => _Collections.map(this, [], f);
+ Collection map(f(AnimatedNumber element)) => _Collections.map(this, [], f);
- Collection<SVGAnimatedNumber> filter(bool f(SVGAnimatedNumber element)) =>
- _Collections.filter(this, <SVGAnimatedNumber>[], f);
+ Collection<AnimatedNumber> filter(bool f(AnimatedNumber element)) =>
+ _Collections.filter(this, <AnimatedNumber>[], f);
- bool every(bool f(SVGAnimatedNumber element)) => _Collections.every(this, f);
+ bool every(bool f(AnimatedNumber element)) => _Collections.every(this, f);
- bool some(bool f(SVGAnimatedNumber element)) => _Collections.some(this, f);
+ bool some(bool f(AnimatedNumber element)) => _Collections.some(this, f);
bool get isEmpty => this.length == 0;
- // From List<SVGAnimatedNumber>:
+ // From List<AnimatedNumber>:
- void sort([Comparator<SVGAnimatedNumber> compare = Comparable.compare]) {
+ void sort([Comparator<AnimatedNumber> compare = Comparable.compare]) {
throw new UnsupportedError("Cannot sort immutable List.");
}
- int indexOf(SVGAnimatedNumber element, [int start = 0]) =>
+ int indexOf(AnimatedNumber element, [int start = 0]) =>
_Lists.indexOf(this, element, start, this.length);
- int lastIndexOf(SVGAnimatedNumber element, [int start]) {
+ int lastIndexOf(AnimatedNumber element, [int start]) {
if (start == null) start = length - 1;
return _Lists.lastIndexOf(this, element, start);
}
- SVGAnimatedNumber get last => this[length - 1];
+ AnimatedNumber get first => this[0];
- SVGAnimatedNumber removeLast() {
+ AnimatedNumber get last => this[length - 1];
+
+ AnimatedNumber removeLast() {
throw new UnsupportedError("Cannot removeLast on immutable List.");
}
- void setRange(int start, int rangeLength, List<SVGAnimatedNumber> from, [int startFrom]) {
+ void setRange(int start, int rangeLength, List<AnimatedNumber> from, [int startFrom]) {
throw new UnsupportedError("Cannot setRange on immutable List.");
}
@@ -499,55 +513,55 @@
throw new UnsupportedError("Cannot removeRange on immutable List.");
}
- void insertRange(int start, int rangeLength, [SVGAnimatedNumber initialValue]) {
+ void insertRange(int start, int rangeLength, [AnimatedNumber initialValue]) {
throw new UnsupportedError("Cannot insertRange on immutable List.");
}
- List<SVGAnimatedNumber> getRange(int start, int rangeLength) =>
- _Lists.getRange(this, start, rangeLength, <SVGAnimatedNumber>[]);
+ List<AnimatedNumber> getRange(int start, int rangeLength) =>
+ _Lists.getRange(this, start, rangeLength, <AnimatedNumber>[]);
- // -- end List<SVGAnimatedNumber> mixins.
+ // -- end List<AnimatedNumber> mixins.
}
// Copyright (c) 2012, 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.
-/// @domName SVGAnimatedPreserveAspectRatio
-class SVGAnimatedPreserveAspectRatio native "*SVGAnimatedPreserveAspectRatio" {
+/// @domName SVGAnimatedPreserveAspectRatio; @docsEditable true
+class AnimatedPreserveAspectRatio native "*SVGAnimatedPreserveAspectRatio" {
- /** @domName SVGAnimatedPreserveAspectRatio.animVal */
- final SVGPreserveAspectRatio animVal;
+ /// @domName SVGAnimatedPreserveAspectRatio.animVal; @docsEditable true
+ final PreserveAspectRatio animVal;
- /** @domName SVGAnimatedPreserveAspectRatio.baseVal */
- final SVGPreserveAspectRatio baseVal;
+ /// @domName SVGAnimatedPreserveAspectRatio.baseVal; @docsEditable true
+ final PreserveAspectRatio baseVal;
}
// Copyright (c) 2012, 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.
-/// @domName SVGAnimatedRect
-class SVGAnimatedRect native "*SVGAnimatedRect" {
+/// @domName SVGAnimatedRect; @docsEditable true
+class AnimatedRect native "*SVGAnimatedRect" {
- /** @domName SVGAnimatedRect.animVal */
- final SVGRect animVal;
+ /// @domName SVGAnimatedRect.animVal; @docsEditable true
+ final Rect animVal;
- /** @domName SVGAnimatedRect.baseVal */
- final SVGRect baseVal;
+ /// @domName SVGAnimatedRect.baseVal; @docsEditable true
+ final Rect baseVal;
}
// Copyright (c) 2012, 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.
-/// @domName SVGAnimatedString
-class SVGAnimatedString native "*SVGAnimatedString" {
+/// @domName SVGAnimatedString; @docsEditable true
+class AnimatedString native "*SVGAnimatedString" {
- /** @domName SVGAnimatedString.animVal */
+ /// @domName SVGAnimatedString.animVal; @docsEditable true
final String animVal;
- /** @domName SVGAnimatedString.baseVal */
+ /// @domName SVGAnimatedString.baseVal; @docsEditable true
String baseVal;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -555,82 +569,84 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGAnimatedTransformList
-class SVGAnimatedTransformList implements JavaScriptIndexingBehavior, List<SVGAnimateTransformElement> native "*SVGAnimatedTransformList" {
+/// @domName SVGAnimatedTransformList; @docsEditable true
+class AnimatedTransformList implements JavaScriptIndexingBehavior, List<AnimateTransformElement> native "*SVGAnimatedTransformList" {
- /** @domName SVGAnimatedTransformList.animVal */
- final SVGTransformList animVal;
+ /// @domName SVGAnimatedTransformList.animVal; @docsEditable true
+ final TransformList animVal;
- /** @domName SVGAnimatedTransformList.baseVal */
- final SVGTransformList baseVal;
+ /// @domName SVGAnimatedTransformList.baseVal; @docsEditable true
+ final TransformList baseVal;
- SVGAnimateTransformElement operator[](int index) => JS("SVGAnimateTransformElement", "#[#]", this, index);
+ AnimateTransformElement operator[](int index) => JS("AnimateTransformElement", "#[#]", this, index);
- void operator[]=(int index, SVGAnimateTransformElement value) {
+ void operator[]=(int index, AnimateTransformElement value) {
throw new UnsupportedError("Cannot assign element of immutable List.");
}
- // -- start List<SVGAnimateTransformElement> mixins.
- // SVGAnimateTransformElement is the element type.
+ // -- start List<AnimateTransformElement> mixins.
+ // AnimateTransformElement is the element type.
- // From Iterable<SVGAnimateTransformElement>:
+ // From Iterable<AnimateTransformElement>:
- Iterator<SVGAnimateTransformElement> iterator() {
+ Iterator<AnimateTransformElement> iterator() {
// Note: NodeLists are not fixed size. And most probably length shouldn't
// be cached in both iterator _and_ forEach method. For now caching it
// for consistency.
- return new FixedSizeListIterator<SVGAnimateTransformElement>(this);
+ return new FixedSizeListIterator<AnimateTransformElement>(this);
}
- // From Collection<SVGAnimateTransformElement>:
+ // From Collection<AnimateTransformElement>:
- void add(SVGAnimateTransformElement value) {
+ void add(AnimateTransformElement value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addLast(SVGAnimateTransformElement value) {
+ void addLast(AnimateTransformElement value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addAll(Collection<SVGAnimateTransformElement> collection) {
+ void addAll(Collection<AnimateTransformElement> collection) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- bool contains(SVGAnimateTransformElement element) => _Collections.contains(this, element);
+ bool contains(AnimateTransformElement element) => _Collections.contains(this, element);
- void forEach(void f(SVGAnimateTransformElement element)) => _Collections.forEach(this, f);
+ void forEach(void f(AnimateTransformElement element)) => _Collections.forEach(this, f);
- Collection map(f(SVGAnimateTransformElement element)) => _Collections.map(this, [], f);
+ Collection map(f(AnimateTransformElement element)) => _Collections.map(this, [], f);
- Collection<SVGAnimateTransformElement> filter(bool f(SVGAnimateTransformElement element)) =>
- _Collections.filter(this, <SVGAnimateTransformElement>[], f);
+ Collection<AnimateTransformElement> filter(bool f(AnimateTransformElement element)) =>
+ _Collections.filter(this, <AnimateTransformElement>[], f);
- bool every(bool f(SVGAnimateTransformElement element)) => _Collections.every(this, f);
+ bool every(bool f(AnimateTransformElement element)) => _Collections.every(this, f);
- bool some(bool f(SVGAnimateTransformElement element)) => _Collections.some(this, f);
+ bool some(bool f(AnimateTransformElement element)) => _Collections.some(this, f);
bool get isEmpty => this.length == 0;
- // From List<SVGAnimateTransformElement>:
+ // From List<AnimateTransformElement>:
- void sort([Comparator<SVGAnimateTransformElement> compare = Comparable.compare]) {
+ void sort([Comparator<AnimateTransformElement> compare = Comparable.compare]) {
throw new UnsupportedError("Cannot sort immutable List.");
}
- int indexOf(SVGAnimateTransformElement element, [int start = 0]) =>
+ int indexOf(AnimateTransformElement element, [int start = 0]) =>
_Lists.indexOf(this, element, start, this.length);
- int lastIndexOf(SVGAnimateTransformElement element, [int start]) {
+ int lastIndexOf(AnimateTransformElement element, [int start]) {
if (start == null) start = length - 1;
return _Lists.lastIndexOf(this, element, start);
}
- SVGAnimateTransformElement get last => this[length - 1];
+ AnimateTransformElement get first => this[0];
- SVGAnimateTransformElement removeLast() {
+ AnimateTransformElement get last => this[length - 1];
+
+ AnimateTransformElement removeLast() {
throw new UnsupportedError("Cannot removeLast on immutable List.");
}
- void setRange(int start, int rangeLength, List<SVGAnimateTransformElement> from, [int startFrom]) {
+ void setRange(int start, int rangeLength, List<AnimateTransformElement> from, [int startFrom]) {
throw new UnsupportedError("Cannot setRange on immutable List.");
}
@@ -638,66 +654,68 @@
throw new UnsupportedError("Cannot removeRange on immutable List.");
}
- void insertRange(int start, int rangeLength, [SVGAnimateTransformElement initialValue]) {
+ void insertRange(int start, int rangeLength, [AnimateTransformElement initialValue]) {
throw new UnsupportedError("Cannot insertRange on immutable List.");
}
- List<SVGAnimateTransformElement> getRange(int start, int rangeLength) =>
- _Lists.getRange(this, start, rangeLength, <SVGAnimateTransformElement>[]);
+ List<AnimateTransformElement> getRange(int start, int rangeLength) =>
+ _Lists.getRange(this, start, rangeLength, <AnimateTransformElement>[]);
- // -- end List<SVGAnimateTransformElement> mixins.
+ // -- end List<AnimateTransformElement> mixins.
}
// Copyright (c) 2012, 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.
-/// @domName SVGAnimationElement
-class SVGAnimationElement extends SVGElement implements ElementTimeControl, SVGTests, SVGExternalResourcesRequired native "*SVGAnimationElement" {
+/// @domName SVGAnimationElement; @docsEditable true
+class AnimationElement extends SvgElement implements Tests, ElementTimeControl, ExternalResourcesRequired native "*SVGAnimationElement" {
- /** @domName SVGAnimationElement.targetElement */
- final SVGElement targetElement;
+ factory AnimationElement() => _SvgElementFactoryProvider.createSvgElement_tag("animation");
- /** @domName SVGAnimationElement.getCurrentTime */
+ /// @domName SVGAnimationElement.targetElement; @docsEditable true
+ final SvgElement targetElement;
+
+ /// @domName SVGAnimationElement.getCurrentTime; @docsEditable true
num getCurrentTime() native;
- /** @domName SVGAnimationElement.getSimpleDuration */
+ /// @domName SVGAnimationElement.getSimpleDuration; @docsEditable true
num getSimpleDuration() native;
- /** @domName SVGAnimationElement.getStartTime */
+ /// @domName SVGAnimationElement.getStartTime; @docsEditable true
num getStartTime() native;
// From ElementTimeControl
- /** @domName ElementTimeControl.beginElement */
+ /// @domName ElementTimeControl.beginElement; @docsEditable true
void beginElement() native;
- /** @domName ElementTimeControl.beginElementAt */
+ /// @domName ElementTimeControl.beginElementAt; @docsEditable true
void beginElementAt(num offset) native;
- /** @domName ElementTimeControl.endElement */
+ /// @domName ElementTimeControl.endElement; @docsEditable true
void endElement() native;
- /** @domName ElementTimeControl.endElementAt */
+ /// @domName ElementTimeControl.endElementAt; @docsEditable true
void endElementAt(num offset) native;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGTests
- /** @domName SVGTests.requiredExtensions */
- final SVGStringList requiredExtensions;
+ /// @domName SVGTests.requiredExtensions; @docsEditable true
+ final StringList requiredExtensions;
- /** @domName SVGTests.requiredFeatures */
- final SVGStringList requiredFeatures;
+ /// @domName SVGTests.requiredFeatures; @docsEditable true
+ final StringList requiredFeatures;
- /** @domName SVGTests.systemLanguage */
- final SVGStringList systemLanguage;
+ /// @domName SVGTests.systemLanguage; @docsEditable true
+ final StringList systemLanguage;
- /** @domName SVGTests.hasExtension */
+ /// @domName SVGTests.hasExtension; @docsEditable true
bool hasExtension(String extension) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -705,162 +723,166 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGCircleElement
-class SVGCircleElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired native "*SVGCircleElement" {
+/// @domName SVGCircleElement; @docsEditable true
+class CircleElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace native "*SVGCircleElement" {
- /** @domName SVGCircleElement.cx */
- final SVGAnimatedLength cx;
+ factory CircleElement() => _SvgElementFactoryProvider.createSvgElement_tag("circle");
- /** @domName SVGCircleElement.cy */
- final SVGAnimatedLength cy;
+ /// @domName SVGCircleElement.cx; @docsEditable true
+ final AnimatedLength cx;
- /** @domName SVGCircleElement.r */
- final SVGAnimatedLength r;
+ /// @domName SVGCircleElement.cy; @docsEditable true
+ final AnimatedLength cy;
+
+ /// @domName SVGCircleElement.r; @docsEditable true
+ final AnimatedLength r;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGLocatable
- /** @domName SVGLocatable.farthestViewportElement */
- final SVGElement farthestViewportElement;
+ /// @domName SVGLocatable.farthestViewportElement; @docsEditable true
+ final SvgElement farthestViewportElement;
- /** @domName SVGLocatable.nearestViewportElement */
- final SVGElement nearestViewportElement;
+ /// @domName SVGLocatable.nearestViewportElement; @docsEditable true
+ final SvgElement nearestViewportElement;
- /** @domName SVGLocatable.getBBox */
- SVGRect getBBox() native;
+ /// @domName SVGLocatable.getBBox; @docsEditable true
+ Rect getBBox() native;
- /** @domName SVGLocatable.getCTM */
- SVGMatrix getCTM() native;
+ /// @domName SVGLocatable.getCTM; @docsEditable true
+ Matrix getCTM() native;
- /** @domName SVGLocatable.getScreenCTM */
- SVGMatrix getScreenCTM() native;
+ /// @domName SVGLocatable.getScreenCTM; @docsEditable true
+ Matrix getScreenCTM() native;
- /** @domName SVGLocatable.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native;
+ /// @domName SVGLocatable.getTransformToElement; @docsEditable true
+ Matrix getTransformToElement(SvgElement element) native;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGTests
- /** @domName SVGTests.requiredExtensions */
- final SVGStringList requiredExtensions;
+ /// @domName SVGTests.requiredExtensions; @docsEditable true
+ final StringList requiredExtensions;
- /** @domName SVGTests.requiredFeatures */
- final SVGStringList requiredFeatures;
+ /// @domName SVGTests.requiredFeatures; @docsEditable true
+ final StringList requiredFeatures;
- /** @domName SVGTests.systemLanguage */
- final SVGStringList systemLanguage;
+ /// @domName SVGTests.systemLanguage; @docsEditable true
+ final StringList systemLanguage;
- /** @domName SVGTests.hasExtension */
+ /// @domName SVGTests.hasExtension; @docsEditable true
bool hasExtension(String extension) native;
// From SVGTransformable
- /** @domName SVGTransformable.transform */
- final SVGAnimatedTransformList transform;
+ /// @domName SVGTransformable.transform; @docsEditable true
+ final AnimatedTransformList transform;
}
// Copyright (c) 2012, 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.
-/// @domName SVGClipPathElement
-class SVGClipPathElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired native "*SVGClipPathElement" {
+/// @domName SVGClipPathElement; @docsEditable true
+class ClipPathElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace native "*SVGClipPathElement" {
- /** @domName SVGClipPathElement.clipPathUnits */
- final SVGAnimatedEnumeration clipPathUnits;
+ factory ClipPathElement() => _SvgElementFactoryProvider.createSvgElement_tag("clipPath");
+
+ /// @domName SVGClipPathElement.clipPathUnits; @docsEditable true
+ final AnimatedEnumeration clipPathUnits;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGLocatable
- /** @domName SVGLocatable.farthestViewportElement */
- final SVGElement farthestViewportElement;
+ /// @domName SVGLocatable.farthestViewportElement; @docsEditable true
+ final SvgElement farthestViewportElement;
- /** @domName SVGLocatable.nearestViewportElement */
- final SVGElement nearestViewportElement;
+ /// @domName SVGLocatable.nearestViewportElement; @docsEditable true
+ final SvgElement nearestViewportElement;
- /** @domName SVGLocatable.getBBox */
- SVGRect getBBox() native;
+ /// @domName SVGLocatable.getBBox; @docsEditable true
+ Rect getBBox() native;
- /** @domName SVGLocatable.getCTM */
- SVGMatrix getCTM() native;
+ /// @domName SVGLocatable.getCTM; @docsEditable true
+ Matrix getCTM() native;
- /** @domName SVGLocatable.getScreenCTM */
- SVGMatrix getScreenCTM() native;
+ /// @domName SVGLocatable.getScreenCTM; @docsEditable true
+ Matrix getScreenCTM() native;
- /** @domName SVGLocatable.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native;
+ /// @domName SVGLocatable.getTransformToElement; @docsEditable true
+ Matrix getTransformToElement(SvgElement element) native;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGTests
- /** @domName SVGTests.requiredExtensions */
- final SVGStringList requiredExtensions;
+ /// @domName SVGTests.requiredExtensions; @docsEditable true
+ final StringList requiredExtensions;
- /** @domName SVGTests.requiredFeatures */
- final SVGStringList requiredFeatures;
+ /// @domName SVGTests.requiredFeatures; @docsEditable true
+ final StringList requiredFeatures;
- /** @domName SVGTests.systemLanguage */
- final SVGStringList systemLanguage;
+ /// @domName SVGTests.systemLanguage; @docsEditable true
+ final StringList systemLanguage;
- /** @domName SVGTests.hasExtension */
+ /// @domName SVGTests.hasExtension; @docsEditable true
bool hasExtension(String extension) native;
// From SVGTransformable
- /** @domName SVGTransformable.transform */
- final SVGAnimatedTransformList transform;
+ /// @domName SVGTransformable.transform; @docsEditable true
+ final AnimatedTransformList transform;
}
// Copyright (c) 2012, 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.
-/// @domName SVGColor
-class SVGColor extends CSSValue native "*SVGColor" {
+/// @domName SVGColor; @docsEditable true
+class Color extends CSSValue native "*SVGColor" {
static const int SVG_COLORTYPE_CURRENTCOLOR = 3;
@@ -870,19 +892,19 @@
static const int SVG_COLORTYPE_UNKNOWN = 0;
- /** @domName SVGColor.colorType */
+ /// @domName SVGColor.colorType; @docsEditable true
final int colorType;
- /** @domName SVGColor.rgbColor */
+ /// @domName SVGColor.rgbColor; @docsEditable true
final RGBColor rgbColor;
- /** @domName SVGColor.setColor */
+ /// @domName SVGColor.setColor; @docsEditable true
void setColor(int colorType, String rgbColor, String iccColor) native;
- /** @domName SVGColor.setRGBColor */
+ /// @domName SVGColor.setRGBColor; @docsEditable true
void setRGBColor(String rgbColor) native;
- /** @domName SVGColor.setRGBColorICCColor */
+ /// @domName SVGColor.setRGBColorICCColor; @docsEditable true
void setRGBColorICCColor(String rgbColor, String iccColor) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -890,8 +912,8 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGComponentTransferFunctionElement
-class SVGComponentTransferFunctionElement extends SVGElement native "*SVGComponentTransferFunctionElement" {
+/// @domName SVGComponentTransferFunctionElement; @docsEditable true
+class ComponentTransferFunctionElement extends SvgElement native "*SVGComponentTransferFunctionElement" {
static const int SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3;
@@ -905,161 +927,167 @@
static const int SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0;
- /** @domName SVGComponentTransferFunctionElement.amplitude */
- final SVGAnimatedNumber amplitude;
+ /// @domName SVGComponentTransferFunctionElement.amplitude; @docsEditable true
+ final AnimatedNumber amplitude;
- /** @domName SVGComponentTransferFunctionElement.exponent */
- final SVGAnimatedNumber exponent;
+ /// @domName SVGComponentTransferFunctionElement.exponent; @docsEditable true
+ final AnimatedNumber exponent;
- /** @domName SVGComponentTransferFunctionElement.intercept */
- final SVGAnimatedNumber intercept;
+ /// @domName SVGComponentTransferFunctionElement.intercept; @docsEditable true
+ final AnimatedNumber intercept;
- /** @domName SVGComponentTransferFunctionElement.offset */
- final SVGAnimatedNumber offset;
+ /// @domName SVGComponentTransferFunctionElement.offset; @docsEditable true
+ final AnimatedNumber offset;
- /** @domName SVGComponentTransferFunctionElement.slope */
- final SVGAnimatedNumber slope;
+ /// @domName SVGComponentTransferFunctionElement.slope; @docsEditable true
+ final AnimatedNumber slope;
- /** @domName SVGComponentTransferFunctionElement.tableValues */
- final SVGAnimatedNumberList tableValues;
+ /// @domName SVGComponentTransferFunctionElement.tableValues; @docsEditable true
+ final AnimatedNumberList tableValues;
- /** @domName SVGComponentTransferFunctionElement.type */
- final SVGAnimatedEnumeration type;
+ /// @domName SVGComponentTransferFunctionElement.type; @docsEditable true
+ final AnimatedEnumeration type;
}
// Copyright (c) 2012, 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.
-/// @domName SVGCursorElement
-class SVGCursorElement extends SVGElement implements SVGURIReference, SVGTests, SVGExternalResourcesRequired native "*SVGCursorElement" {
+/// @domName SVGCursorElement; @docsEditable true
+class CursorElement extends SvgElement implements UriReference, Tests, ExternalResourcesRequired native "*SVGCursorElement" {
- /** @domName SVGCursorElement.x */
- final SVGAnimatedLength x;
+ factory CursorElement() => _SvgElementFactoryProvider.createSvgElement_tag("cursor");
- /** @domName SVGCursorElement.y */
- final SVGAnimatedLength y;
+ /// @domName SVGCursorElement.x; @docsEditable true
+ final AnimatedLength x;
+
+ /// @domName SVGCursorElement.y; @docsEditable true
+ final AnimatedLength y;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGTests
- /** @domName SVGTests.requiredExtensions */
- final SVGStringList requiredExtensions;
+ /// @domName SVGTests.requiredExtensions; @docsEditable true
+ final StringList requiredExtensions;
- /** @domName SVGTests.requiredFeatures */
- final SVGStringList requiredFeatures;
+ /// @domName SVGTests.requiredFeatures; @docsEditable true
+ final StringList requiredFeatures;
- /** @domName SVGTests.systemLanguage */
- final SVGStringList systemLanguage;
+ /// @domName SVGTests.systemLanguage; @docsEditable true
+ final StringList systemLanguage;
- /** @domName SVGTests.hasExtension */
+ /// @domName SVGTests.hasExtension; @docsEditable true
bool hasExtension(String extension) native;
// From SVGURIReference
- /** @domName SVGURIReference.href */
- final SVGAnimatedString href;
+ /// @domName SVGURIReference.href; @docsEditable true
+ final AnimatedString href;
}
// Copyright (c) 2012, 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.
-/// @domName SVGDefsElement
-class SVGDefsElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired native "*SVGDefsElement" {
+/// @domName SVGDefsElement; @docsEditable true
+class DefsElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace native "*SVGDefsElement" {
+
+ factory DefsElement() => _SvgElementFactoryProvider.createSvgElement_tag("defs");
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGLocatable
- /** @domName SVGLocatable.farthestViewportElement */
- final SVGElement farthestViewportElement;
+ /// @domName SVGLocatable.farthestViewportElement; @docsEditable true
+ final SvgElement farthestViewportElement;
- /** @domName SVGLocatable.nearestViewportElement */
- final SVGElement nearestViewportElement;
+ /// @domName SVGLocatable.nearestViewportElement; @docsEditable true
+ final SvgElement nearestViewportElement;
- /** @domName SVGLocatable.getBBox */
- SVGRect getBBox() native;
+ /// @domName SVGLocatable.getBBox; @docsEditable true
+ Rect getBBox() native;
- /** @domName SVGLocatable.getCTM */
- SVGMatrix getCTM() native;
+ /// @domName SVGLocatable.getCTM; @docsEditable true
+ Matrix getCTM() native;
- /** @domName SVGLocatable.getScreenCTM */
- SVGMatrix getScreenCTM() native;
+ /// @domName SVGLocatable.getScreenCTM; @docsEditable true
+ Matrix getScreenCTM() native;
- /** @domName SVGLocatable.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native;
+ /// @domName SVGLocatable.getTransformToElement; @docsEditable true
+ Matrix getTransformToElement(SvgElement element) native;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGTests
- /** @domName SVGTests.requiredExtensions */
- final SVGStringList requiredExtensions;
+ /// @domName SVGTests.requiredExtensions; @docsEditable true
+ final StringList requiredExtensions;
- /** @domName SVGTests.requiredFeatures */
- final SVGStringList requiredFeatures;
+ /// @domName SVGTests.requiredFeatures; @docsEditable true
+ final StringList requiredFeatures;
- /** @domName SVGTests.systemLanguage */
- final SVGStringList systemLanguage;
+ /// @domName SVGTests.systemLanguage; @docsEditable true
+ final StringList systemLanguage;
- /** @domName SVGTests.hasExtension */
+ /// @domName SVGTests.hasExtension; @docsEditable true
bool hasExtension(String extension) native;
// From SVGTransformable
- /** @domName SVGTransformable.transform */
- final SVGAnimatedTransformList transform;
+ /// @domName SVGTransformable.transform; @docsEditable true
+ final AnimatedTransformList transform;
}
// Copyright (c) 2012, 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.
-/// @domName SVGDescElement
-class SVGDescElement extends SVGElement implements SVGLangSpace, SVGStylable native "*SVGDescElement" {
+/// @domName SVGDescElement; @docsEditable true
+class DescElement extends SvgElement implements Stylable, LangSpace native "*SVGDescElement" {
+
+ factory DescElement() => _SvgElementFactoryProvider.createSvgElement_tag("desc");
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1067,152 +1095,41 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGDocument
-class SVGDocument extends Document native "*SVGDocument" {
+/// @domName SVGElementInstance; @docsEditable true
+class ElementInstance extends EventTarget native "*SVGElementInstance" {
- /** @domName SVGDocument.rootElement */
- final SVGSVGElement rootElement;
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
+ ElementInstanceEvents get on =>
+ new ElementInstanceEvents(this);
- /** @domName SVGDocument.createEvent */
- Event $dom_createEvent(String eventType) native "createEvent";
-}
-// Copyright (c) 2011, 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.
+ /// @domName SVGElementInstance.childNodes; @docsEditable true
+ @Returns('_ElementInstanceList') @Creates('_ElementInstanceList')
+ final List<ElementInstance> childNodes;
+ /// @domName SVGElementInstance.correspondingElement; @docsEditable true
+ final SvgElement correspondingElement;
-class _AttributeClassSet extends CssClassSet {
- final Element _element;
+ /// @domName SVGElementInstance.correspondingUseElement; @docsEditable true
+ final UseElement correspondingUseElement;
- _AttributeClassSet(this._element);
+ /// @domName SVGElementInstance.firstChild; @docsEditable true
+ final ElementInstance firstChild;
- Set<String> readClasses() {
- var classname = _element.attributes['class'];
+ /// @domName SVGElementInstance.lastChild; @docsEditable true
+ final ElementInstance lastChild;
- Set<String> s = new Set<String>();
- if (classname == null) {
- return s;
- }
- for (String name in classname.split(' ')) {
- String trimmed = name.trim();
- if (!trimmed.isEmpty) {
- s.add(trimmed);
- }
- }
- return s;
- }
+ /// @domName SVGElementInstance.nextSibling; @docsEditable true
+ final ElementInstance nextSibling;
- void writeClasses(Set s) {
- List list = new List.from(s);
- _element.attributes['class'] = Strings.join(list, ' ');
- }
+ /// @domName SVGElementInstance.parentNode; @docsEditable true
+ final ElementInstance parentNode;
+
+ /// @domName SVGElementInstance.previousSibling; @docsEditable true
+ final ElementInstance previousSibling;
}
-class SVGElement extends Element native "*SVGElement" {
- factory SVGElement.tag(String tag) =>
- _SVGElementFactoryProvider.createSVGElement_tag(tag);
- factory SVGElement.svg(String svg) =>
- _SVGElementFactoryProvider.createSVGElement_svg(svg);
-
- _AttributeClassSet _cssClassSet;
- CssClassSet get classes {
- if (_cssClassSet == null) {
- _cssClassSet = new _AttributeClassSet(this);
- }
- return _cssClassSet;
- }
-
- List<Element> get elements => new FilteredElementList(this);
-
- void set elements(Collection<Element> value) {
- final elements = this.elements;
- elements.clear();
- elements.addAll(value);
- }
-
- String get outerHTML {
- final container = new Element.tag("div");
- final SVGElement cloned = this.clone(true);
- container.elements.add(cloned);
- return container.innerHTML;
- }
-
- String get innerHTML {
- final container = new Element.tag("div");
- final SVGElement cloned = this.clone(true);
- container.elements.addAll(cloned.elements);
- return container.innerHTML;
- }
-
- void set innerHTML(String svg) {
- final container = new Element.tag("div");
- // Wrap the SVG string in <svg> so that SVGElements are created, rather than
- // HTMLElements.
- container.innerHTML = '<svg version="1.1">$svg</svg>';
- this.elements = container.elements[0].elements;
- }
-
-
- // Shadowing definition.
- /** @domName SVGElement.id */
- String get id => JS("String", "#.id", this);
-
- /** @domName SVGElement.id */
- void set id(String value) {
- JS("void", "#.id = #", this, value);
- }
-
- /** @domName SVGElement.ownerSVGElement */
- final SVGSVGElement ownerSVGElement;
-
- /** @domName SVGElement.viewportElement */
- final SVGElement viewportElement;
-
- /** @domName SVGElement.xmlbase */
- String xmlbase;
-
-}
-// Copyright (c) 2012, 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.
-
-
-/// @domName SVGElementInstance
-class SVGElementInstance extends EventTarget native "*SVGElementInstance" {
-
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
- SVGElementInstanceEvents get on =>
- new SVGElementInstanceEvents(this);
-
- /** @domName SVGElementInstance.childNodes */
- final List<SVGElementInstance> childNodes;
-
- /** @domName SVGElementInstance.correspondingElement */
- final SVGElement correspondingElement;
-
- /** @domName SVGElementInstance.correspondingUseElement */
- final SVGUseElement correspondingUseElement;
-
- /** @domName SVGElementInstance.firstChild */
- final SVGElementInstance firstChild;
-
- /** @domName SVGElementInstance.lastChild */
- final SVGElementInstance lastChild;
-
- /** @domName SVGElementInstance.nextSibling */
- final SVGElementInstance nextSibling;
-
- /** @domName SVGElementInstance.parentNode */
- final SVGElementInstance parentNode;
-
- /** @domName SVGElementInstance.previousSibling */
- final SVGElementInstance previousSibling;
-}
-
-class SVGElementInstanceEvents extends Events {
- SVGElementInstanceEvents(EventTarget _ptr) : super(_ptr);
+class ElementInstanceEvents extends Events {
+ ElementInstanceEvents(EventTarget _ptr) : super(_ptr);
EventListenerList get abort => this['abort'];
@@ -1299,91 +1216,93 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGEllipseElement
-class SVGEllipseElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired native "*SVGEllipseElement" {
+/// @domName SVGEllipseElement; @docsEditable true
+class EllipseElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace native "*SVGEllipseElement" {
- /** @domName SVGEllipseElement.cx */
- final SVGAnimatedLength cx;
+ factory EllipseElement() => _SvgElementFactoryProvider.createSvgElement_tag("ellipse");
- /** @domName SVGEllipseElement.cy */
- final SVGAnimatedLength cy;
+ /// @domName SVGEllipseElement.cx; @docsEditable true
+ final AnimatedLength cx;
- /** @domName SVGEllipseElement.rx */
- final SVGAnimatedLength rx;
+ /// @domName SVGEllipseElement.cy; @docsEditable true
+ final AnimatedLength cy;
- /** @domName SVGEllipseElement.ry */
- final SVGAnimatedLength ry;
+ /// @domName SVGEllipseElement.rx; @docsEditable true
+ final AnimatedLength rx;
+
+ /// @domName SVGEllipseElement.ry; @docsEditable true
+ final AnimatedLength ry;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGLocatable
- /** @domName SVGLocatable.farthestViewportElement */
- final SVGElement farthestViewportElement;
+ /// @domName SVGLocatable.farthestViewportElement; @docsEditable true
+ final SvgElement farthestViewportElement;
- /** @domName SVGLocatable.nearestViewportElement */
- final SVGElement nearestViewportElement;
+ /// @domName SVGLocatable.nearestViewportElement; @docsEditable true
+ final SvgElement nearestViewportElement;
- /** @domName SVGLocatable.getBBox */
- SVGRect getBBox() native;
+ /// @domName SVGLocatable.getBBox; @docsEditable true
+ Rect getBBox() native;
- /** @domName SVGLocatable.getCTM */
- SVGMatrix getCTM() native;
+ /// @domName SVGLocatable.getCTM; @docsEditable true
+ Matrix getCTM() native;
- /** @domName SVGLocatable.getScreenCTM */
- SVGMatrix getScreenCTM() native;
+ /// @domName SVGLocatable.getScreenCTM; @docsEditable true
+ Matrix getScreenCTM() native;
- /** @domName SVGLocatable.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native;
+ /// @domName SVGLocatable.getTransformToElement; @docsEditable true
+ Matrix getTransformToElement(SvgElement element) native;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGTests
- /** @domName SVGTests.requiredExtensions */
- final SVGStringList requiredExtensions;
+ /// @domName SVGTests.requiredExtensions; @docsEditable true
+ final StringList requiredExtensions;
- /** @domName SVGTests.requiredFeatures */
- final SVGStringList requiredFeatures;
+ /// @domName SVGTests.requiredFeatures; @docsEditable true
+ final StringList requiredFeatures;
- /** @domName SVGTests.systemLanguage */
- final SVGStringList systemLanguage;
+ /// @domName SVGTests.systemLanguage; @docsEditable true
+ final StringList systemLanguage;
- /** @domName SVGTests.hasExtension */
+ /// @domName SVGTests.hasExtension; @docsEditable true
bool hasExtension(String extension) native;
// From SVGTransformable
- /** @domName SVGTransformable.transform */
- final SVGAnimatedTransformList transform;
+ /// @domName SVGTransformable.transform; @docsEditable true
+ final AnimatedTransformList transform;
}
// Copyright (c) 2012, 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.
-/// @domName SVGException
-class SVGException native "*SVGException" {
+/// @domName SVGException; @docsEditable true
+class Exception native "*SVGException" {
static const int SVG_INVALID_VALUE_ERR = 1;
@@ -1391,16 +1310,16 @@
static const int SVG_WRONG_TYPE_ERR = 0;
- /** @domName SVGException.code */
+ /// @domName SVGException.code; @docsEditable true
final int code;
- /** @domName SVGException.message */
+ /// @domName SVGException.message; @docsEditable true
final String message;
- /** @domName SVGException.name */
+ /// @domName SVGException.name; @docsEditable true
final String name;
- /** @domName SVGException.toString */
+ /// @domName SVGException.toString; @docsEditable true
String toString() native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1409,17 +1328,17 @@
/// @domName SVGExternalResourcesRequired
-abstract class SVGExternalResourcesRequired {
+abstract class ExternalResourcesRequired {
- SVGAnimatedBoolean externalResourcesRequired;
+ AnimatedBoolean externalResourcesRequired;
}
// Copyright (c) 2012, 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.
-/// @domName SVGFEBlendElement
-class SVGFEBlendElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes native "*SVGFEBlendElement" {
+/// @domName SVGFEBlendElement; @docsEditable true
+class FEBlendElement extends SvgElement implements FilterPrimitiveStandardAttributes native "*SVGFEBlendElement" {
static const int SVG_FEBLEND_MODE_DARKEN = 4;
@@ -1433,41 +1352,41 @@
static const int SVG_FEBLEND_MODE_UNKNOWN = 0;
- /** @domName SVGFEBlendElement.in1 */
- final SVGAnimatedString in1;
+ /// @domName SVGFEBlendElement.in1; @docsEditable true
+ final AnimatedString in1;
- /** @domName SVGFEBlendElement.in2 */
- final SVGAnimatedString in2;
+ /// @domName SVGFEBlendElement.in2; @docsEditable true
+ final AnimatedString in2;
- /** @domName SVGFEBlendElement.mode */
- final SVGAnimatedEnumeration mode;
+ /// @domName SVGFEBlendElement.mode; @docsEditable true
+ final AnimatedEnumeration mode;
// From SVGFilterPrimitiveStandardAttributes
- /** @domName SVGFilterPrimitiveStandardAttributes.height */
- final SVGAnimatedLength height;
+ /// @domName SVGFilterPrimitiveStandardAttributes.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGFilterPrimitiveStandardAttributes.result */
- final SVGAnimatedString result;
+ /// @domName SVGFilterPrimitiveStandardAttributes.result; @docsEditable true
+ final AnimatedString result;
- /** @domName SVGFilterPrimitiveStandardAttributes.width */
- final SVGAnimatedLength width;
+ /// @domName SVGFilterPrimitiveStandardAttributes.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGFilterPrimitiveStandardAttributes.x */
- final SVGAnimatedLength x;
+ /// @domName SVGFilterPrimitiveStandardAttributes.x; @docsEditable true
+ final AnimatedLength x;
- /** @domName SVGFilterPrimitiveStandardAttributes.y */
- final SVGAnimatedLength y;
+ /// @domName SVGFilterPrimitiveStandardAttributes.y; @docsEditable true
+ final AnimatedLength y;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1475,8 +1394,8 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGFEColorMatrixElement
-class SVGFEColorMatrixElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes native "*SVGFEColorMatrixElement" {
+/// @domName SVGFEColorMatrixElement; @docsEditable true
+class FEColorMatrixElement extends SvgElement implements FilterPrimitiveStandardAttributes native "*SVGFEColorMatrixElement" {
static const int SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3;
@@ -1488,41 +1407,41 @@
static const int SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0;
- /** @domName SVGFEColorMatrixElement.in1 */
- final SVGAnimatedString in1;
+ /// @domName SVGFEColorMatrixElement.in1; @docsEditable true
+ final AnimatedString in1;
- /** @domName SVGFEColorMatrixElement.type */
- final SVGAnimatedEnumeration type;
+ /// @domName SVGFEColorMatrixElement.type; @docsEditable true
+ final AnimatedEnumeration type;
- /** @domName SVGFEColorMatrixElement.values */
- final SVGAnimatedNumberList values;
+ /// @domName SVGFEColorMatrixElement.values; @docsEditable true
+ final AnimatedNumberList values;
// From SVGFilterPrimitiveStandardAttributes
- /** @domName SVGFilterPrimitiveStandardAttributes.height */
- final SVGAnimatedLength height;
+ /// @domName SVGFilterPrimitiveStandardAttributes.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGFilterPrimitiveStandardAttributes.result */
- final SVGAnimatedString result;
+ /// @domName SVGFilterPrimitiveStandardAttributes.result; @docsEditable true
+ final AnimatedString result;
- /** @domName SVGFilterPrimitiveStandardAttributes.width */
- final SVGAnimatedLength width;
+ /// @domName SVGFilterPrimitiveStandardAttributes.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGFilterPrimitiveStandardAttributes.x */
- final SVGAnimatedLength x;
+ /// @domName SVGFilterPrimitiveStandardAttributes.x; @docsEditable true
+ final AnimatedLength x;
- /** @domName SVGFilterPrimitiveStandardAttributes.y */
- final SVGAnimatedLength y;
+ /// @domName SVGFilterPrimitiveStandardAttributes.y; @docsEditable true
+ final AnimatedLength y;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1530,38 +1449,38 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGFEComponentTransferElement
-class SVGFEComponentTransferElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes native "*SVGFEComponentTransferElement" {
+/// @domName SVGFEComponentTransferElement; @docsEditable true
+class FEComponentTransferElement extends SvgElement implements FilterPrimitiveStandardAttributes native "*SVGFEComponentTransferElement" {
- /** @domName SVGFEComponentTransferElement.in1 */
- final SVGAnimatedString in1;
+ /// @domName SVGFEComponentTransferElement.in1; @docsEditable true
+ final AnimatedString in1;
// From SVGFilterPrimitiveStandardAttributes
- /** @domName SVGFilterPrimitiveStandardAttributes.height */
- final SVGAnimatedLength height;
+ /// @domName SVGFilterPrimitiveStandardAttributes.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGFilterPrimitiveStandardAttributes.result */
- final SVGAnimatedString result;
+ /// @domName SVGFilterPrimitiveStandardAttributes.result; @docsEditable true
+ final AnimatedString result;
- /** @domName SVGFilterPrimitiveStandardAttributes.width */
- final SVGAnimatedLength width;
+ /// @domName SVGFilterPrimitiveStandardAttributes.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGFilterPrimitiveStandardAttributes.x */
- final SVGAnimatedLength x;
+ /// @domName SVGFilterPrimitiveStandardAttributes.x; @docsEditable true
+ final AnimatedLength x;
- /** @domName SVGFilterPrimitiveStandardAttributes.y */
- final SVGAnimatedLength y;
+ /// @domName SVGFilterPrimitiveStandardAttributes.y; @docsEditable true
+ final AnimatedLength y;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1569,8 +1488,8 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGFECompositeElement
-class SVGFECompositeElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes native "*SVGFECompositeElement" {
+/// @domName SVGFECompositeElement; @docsEditable true
+class FECompositeElement extends SvgElement implements FilterPrimitiveStandardAttributes native "*SVGFECompositeElement" {
static const int SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6;
@@ -1586,53 +1505,53 @@
static const int SVG_FECOMPOSITE_OPERATOR_XOR = 5;
- /** @domName SVGFECompositeElement.in1 */
- final SVGAnimatedString in1;
+ /// @domName SVGFECompositeElement.in1; @docsEditable true
+ final AnimatedString in1;
- /** @domName SVGFECompositeElement.in2 */
- final SVGAnimatedString in2;
+ /// @domName SVGFECompositeElement.in2; @docsEditable true
+ final AnimatedString in2;
- /** @domName SVGFECompositeElement.k1 */
- final SVGAnimatedNumber k1;
+ /// @domName SVGFECompositeElement.k1; @docsEditable true
+ final AnimatedNumber k1;
- /** @domName SVGFECompositeElement.k2 */
- final SVGAnimatedNumber k2;
+ /// @domName SVGFECompositeElement.k2; @docsEditable true
+ final AnimatedNumber k2;
- /** @domName SVGFECompositeElement.k3 */
- final SVGAnimatedNumber k3;
+ /// @domName SVGFECompositeElement.k3; @docsEditable true
+ final AnimatedNumber k3;
- /** @domName SVGFECompositeElement.k4 */
- final SVGAnimatedNumber k4;
+ /// @domName SVGFECompositeElement.k4; @docsEditable true
+ final AnimatedNumber k4;
- /** @domName SVGFECompositeElement.operator */
- final SVGAnimatedEnumeration operator;
+ /// @domName SVGFECompositeElement.operator; @docsEditable true
+ final AnimatedEnumeration operator;
// From SVGFilterPrimitiveStandardAttributes
- /** @domName SVGFilterPrimitiveStandardAttributes.height */
- final SVGAnimatedLength height;
+ /// @domName SVGFilterPrimitiveStandardAttributes.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGFilterPrimitiveStandardAttributes.result */
- final SVGAnimatedString result;
+ /// @domName SVGFilterPrimitiveStandardAttributes.result; @docsEditable true
+ final AnimatedString result;
- /** @domName SVGFilterPrimitiveStandardAttributes.width */
- final SVGAnimatedLength width;
+ /// @domName SVGFilterPrimitiveStandardAttributes.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGFilterPrimitiveStandardAttributes.x */
- final SVGAnimatedLength x;
+ /// @domName SVGFilterPrimitiveStandardAttributes.x; @docsEditable true
+ final AnimatedLength x;
- /** @domName SVGFilterPrimitiveStandardAttributes.y */
- final SVGAnimatedLength y;
+ /// @domName SVGFilterPrimitiveStandardAttributes.y; @docsEditable true
+ final AnimatedLength y;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1640,8 +1559,8 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGFEConvolveMatrixElement
-class SVGFEConvolveMatrixElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes native "*SVGFEConvolveMatrixElement" {
+/// @domName SVGFEConvolveMatrixElement; @docsEditable true
+class FEConvolveMatrixElement extends SvgElement implements FilterPrimitiveStandardAttributes native "*SVGFEConvolveMatrixElement" {
static const int SVG_EDGEMODE_DUPLICATE = 1;
@@ -1651,68 +1570,68 @@
static const int SVG_EDGEMODE_WRAP = 2;
- /** @domName SVGFEConvolveMatrixElement.bias */
- final SVGAnimatedNumber bias;
+ /// @domName SVGFEConvolveMatrixElement.bias; @docsEditable true
+ final AnimatedNumber bias;
- /** @domName SVGFEConvolveMatrixElement.divisor */
- final SVGAnimatedNumber divisor;
+ /// @domName SVGFEConvolveMatrixElement.divisor; @docsEditable true
+ final AnimatedNumber divisor;
- /** @domName SVGFEConvolveMatrixElement.edgeMode */
- final SVGAnimatedEnumeration edgeMode;
+ /// @domName SVGFEConvolveMatrixElement.edgeMode; @docsEditable true
+ final AnimatedEnumeration edgeMode;
- /** @domName SVGFEConvolveMatrixElement.in1 */
- final SVGAnimatedString in1;
+ /// @domName SVGFEConvolveMatrixElement.in1; @docsEditable true
+ final AnimatedString in1;
- /** @domName SVGFEConvolveMatrixElement.kernelMatrix */
- final SVGAnimatedNumberList kernelMatrix;
+ /// @domName SVGFEConvolveMatrixElement.kernelMatrix; @docsEditable true
+ final AnimatedNumberList kernelMatrix;
- /** @domName SVGFEConvolveMatrixElement.kernelUnitLengthX */
- final SVGAnimatedNumber kernelUnitLengthX;
+ /// @domName SVGFEConvolveMatrixElement.kernelUnitLengthX; @docsEditable true
+ final AnimatedNumber kernelUnitLengthX;
- /** @domName SVGFEConvolveMatrixElement.kernelUnitLengthY */
- final SVGAnimatedNumber kernelUnitLengthY;
+ /// @domName SVGFEConvolveMatrixElement.kernelUnitLengthY; @docsEditable true
+ final AnimatedNumber kernelUnitLengthY;
- /** @domName SVGFEConvolveMatrixElement.orderX */
- final SVGAnimatedInteger orderX;
+ /// @domName SVGFEConvolveMatrixElement.orderX; @docsEditable true
+ final AnimatedInteger orderX;
- /** @domName SVGFEConvolveMatrixElement.orderY */
- final SVGAnimatedInteger orderY;
+ /// @domName SVGFEConvolveMatrixElement.orderY; @docsEditable true
+ final AnimatedInteger orderY;
- /** @domName SVGFEConvolveMatrixElement.preserveAlpha */
- final SVGAnimatedBoolean preserveAlpha;
+ /// @domName SVGFEConvolveMatrixElement.preserveAlpha; @docsEditable true
+ final AnimatedBoolean preserveAlpha;
- /** @domName SVGFEConvolveMatrixElement.targetX */
- final SVGAnimatedInteger targetX;
+ /// @domName SVGFEConvolveMatrixElement.targetX; @docsEditable true
+ final AnimatedInteger targetX;
- /** @domName SVGFEConvolveMatrixElement.targetY */
- final SVGAnimatedInteger targetY;
+ /// @domName SVGFEConvolveMatrixElement.targetY; @docsEditable true
+ final AnimatedInteger targetY;
// From SVGFilterPrimitiveStandardAttributes
- /** @domName SVGFilterPrimitiveStandardAttributes.height */
- final SVGAnimatedLength height;
+ /// @domName SVGFilterPrimitiveStandardAttributes.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGFilterPrimitiveStandardAttributes.result */
- final SVGAnimatedString result;
+ /// @domName SVGFilterPrimitiveStandardAttributes.result; @docsEditable true
+ final AnimatedString result;
- /** @domName SVGFilterPrimitiveStandardAttributes.width */
- final SVGAnimatedLength width;
+ /// @domName SVGFilterPrimitiveStandardAttributes.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGFilterPrimitiveStandardAttributes.x */
- final SVGAnimatedLength x;
+ /// @domName SVGFilterPrimitiveStandardAttributes.x; @docsEditable true
+ final AnimatedLength x;
- /** @domName SVGFilterPrimitiveStandardAttributes.y */
- final SVGAnimatedLength y;
+ /// @domName SVGFilterPrimitiveStandardAttributes.y; @docsEditable true
+ final AnimatedLength y;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1720,50 +1639,50 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGFEDiffuseLightingElement
-class SVGFEDiffuseLightingElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes native "*SVGFEDiffuseLightingElement" {
+/// @domName SVGFEDiffuseLightingElement; @docsEditable true
+class FEDiffuseLightingElement extends SvgElement implements FilterPrimitiveStandardAttributes native "*SVGFEDiffuseLightingElement" {
- /** @domName SVGFEDiffuseLightingElement.diffuseConstant */
- final SVGAnimatedNumber diffuseConstant;
+ /// @domName SVGFEDiffuseLightingElement.diffuseConstant; @docsEditable true
+ final AnimatedNumber diffuseConstant;
- /** @domName SVGFEDiffuseLightingElement.in1 */
- final SVGAnimatedString in1;
+ /// @domName SVGFEDiffuseLightingElement.in1; @docsEditable true
+ final AnimatedString in1;
- /** @domName SVGFEDiffuseLightingElement.kernelUnitLengthX */
- final SVGAnimatedNumber kernelUnitLengthX;
+ /// @domName SVGFEDiffuseLightingElement.kernelUnitLengthX; @docsEditable true
+ final AnimatedNumber kernelUnitLengthX;
- /** @domName SVGFEDiffuseLightingElement.kernelUnitLengthY */
- final SVGAnimatedNumber kernelUnitLengthY;
+ /// @domName SVGFEDiffuseLightingElement.kernelUnitLengthY; @docsEditable true
+ final AnimatedNumber kernelUnitLengthY;
- /** @domName SVGFEDiffuseLightingElement.surfaceScale */
- final SVGAnimatedNumber surfaceScale;
+ /// @domName SVGFEDiffuseLightingElement.surfaceScale; @docsEditable true
+ final AnimatedNumber surfaceScale;
// From SVGFilterPrimitiveStandardAttributes
- /** @domName SVGFilterPrimitiveStandardAttributes.height */
- final SVGAnimatedLength height;
+ /// @domName SVGFilterPrimitiveStandardAttributes.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGFilterPrimitiveStandardAttributes.result */
- final SVGAnimatedString result;
+ /// @domName SVGFilterPrimitiveStandardAttributes.result; @docsEditable true
+ final AnimatedString result;
- /** @domName SVGFilterPrimitiveStandardAttributes.width */
- final SVGAnimatedLength width;
+ /// @domName SVGFilterPrimitiveStandardAttributes.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGFilterPrimitiveStandardAttributes.x */
- final SVGAnimatedLength x;
+ /// @domName SVGFilterPrimitiveStandardAttributes.x; @docsEditable true
+ final AnimatedLength x;
- /** @domName SVGFilterPrimitiveStandardAttributes.y */
- final SVGAnimatedLength y;
+ /// @domName SVGFilterPrimitiveStandardAttributes.y; @docsEditable true
+ final AnimatedLength y;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1771,8 +1690,8 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGFEDisplacementMapElement
-class SVGFEDisplacementMapElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes native "*SVGFEDisplacementMapElement" {
+/// @domName SVGFEDisplacementMapElement; @docsEditable true
+class FEDisplacementMapElement extends SvgElement implements FilterPrimitiveStandardAttributes native "*SVGFEDisplacementMapElement" {
static const int SVG_CHANNEL_A = 4;
@@ -1784,47 +1703,47 @@
static const int SVG_CHANNEL_UNKNOWN = 0;
- /** @domName SVGFEDisplacementMapElement.in1 */
- final SVGAnimatedString in1;
+ /// @domName SVGFEDisplacementMapElement.in1; @docsEditable true
+ final AnimatedString in1;
- /** @domName SVGFEDisplacementMapElement.in2 */
- final SVGAnimatedString in2;
+ /// @domName SVGFEDisplacementMapElement.in2; @docsEditable true
+ final AnimatedString in2;
- /** @domName SVGFEDisplacementMapElement.scale */
- final SVGAnimatedNumber scale;
+ /// @domName SVGFEDisplacementMapElement.scale; @docsEditable true
+ final AnimatedNumber scale;
- /** @domName SVGFEDisplacementMapElement.xChannelSelector */
- final SVGAnimatedEnumeration xChannelSelector;
+ /// @domName SVGFEDisplacementMapElement.xChannelSelector; @docsEditable true
+ final AnimatedEnumeration xChannelSelector;
- /** @domName SVGFEDisplacementMapElement.yChannelSelector */
- final SVGAnimatedEnumeration yChannelSelector;
+ /// @domName SVGFEDisplacementMapElement.yChannelSelector; @docsEditable true
+ final AnimatedEnumeration yChannelSelector;
// From SVGFilterPrimitiveStandardAttributes
- /** @domName SVGFilterPrimitiveStandardAttributes.height */
- final SVGAnimatedLength height;
+ /// @domName SVGFilterPrimitiveStandardAttributes.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGFilterPrimitiveStandardAttributes.result */
- final SVGAnimatedString result;
+ /// @domName SVGFilterPrimitiveStandardAttributes.result; @docsEditable true
+ final AnimatedString result;
- /** @domName SVGFilterPrimitiveStandardAttributes.width */
- final SVGAnimatedLength width;
+ /// @domName SVGFilterPrimitiveStandardAttributes.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGFilterPrimitiveStandardAttributes.x */
- final SVGAnimatedLength x;
+ /// @domName SVGFilterPrimitiveStandardAttributes.x; @docsEditable true
+ final AnimatedLength x;
- /** @domName SVGFilterPrimitiveStandardAttributes.y */
- final SVGAnimatedLength y;
+ /// @domName SVGFilterPrimitiveStandardAttributes.y; @docsEditable true
+ final AnimatedLength y;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1832,67 +1751,67 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGFEDistantLightElement
-class SVGFEDistantLightElement extends SVGElement native "*SVGFEDistantLightElement" {
+/// @domName SVGFEDistantLightElement; @docsEditable true
+class FEDistantLightElement extends SvgElement native "*SVGFEDistantLightElement" {
- /** @domName SVGFEDistantLightElement.azimuth */
- final SVGAnimatedNumber azimuth;
+ /// @domName SVGFEDistantLightElement.azimuth; @docsEditable true
+ final AnimatedNumber azimuth;
- /** @domName SVGFEDistantLightElement.elevation */
- final SVGAnimatedNumber elevation;
+ /// @domName SVGFEDistantLightElement.elevation; @docsEditable true
+ final AnimatedNumber elevation;
}
// Copyright (c) 2012, 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.
-/// @domName SVGFEDropShadowElement
-class SVGFEDropShadowElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes native "*SVGFEDropShadowElement" {
+/// @domName SVGFEDropShadowElement; @docsEditable true
+class FEDropShadowElement extends SvgElement implements FilterPrimitiveStandardAttributes native "*SVGFEDropShadowElement" {
- /** @domName SVGFEDropShadowElement.dx */
- final SVGAnimatedNumber dx;
+ /// @domName SVGFEDropShadowElement.dx; @docsEditable true
+ final AnimatedNumber dx;
- /** @domName SVGFEDropShadowElement.dy */
- final SVGAnimatedNumber dy;
+ /// @domName SVGFEDropShadowElement.dy; @docsEditable true
+ final AnimatedNumber dy;
- /** @domName SVGFEDropShadowElement.in1 */
- final SVGAnimatedString in1;
+ /// @domName SVGFEDropShadowElement.in1; @docsEditable true
+ final AnimatedString in1;
- /** @domName SVGFEDropShadowElement.stdDeviationX */
- final SVGAnimatedNumber stdDeviationX;
+ /// @domName SVGFEDropShadowElement.stdDeviationX; @docsEditable true
+ final AnimatedNumber stdDeviationX;
- /** @domName SVGFEDropShadowElement.stdDeviationY */
- final SVGAnimatedNumber stdDeviationY;
+ /// @domName SVGFEDropShadowElement.stdDeviationY; @docsEditable true
+ final AnimatedNumber stdDeviationY;
- /** @domName SVGFEDropShadowElement.setStdDeviation */
+ /// @domName SVGFEDropShadowElement.setStdDeviation; @docsEditable true
void setStdDeviation(num stdDeviationX, num stdDeviationY) native;
// From SVGFilterPrimitiveStandardAttributes
- /** @domName SVGFilterPrimitiveStandardAttributes.height */
- final SVGAnimatedLength height;
+ /// @domName SVGFilterPrimitiveStandardAttributes.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGFilterPrimitiveStandardAttributes.result */
- final SVGAnimatedString result;
+ /// @domName SVGFilterPrimitiveStandardAttributes.result; @docsEditable true
+ final AnimatedString result;
- /** @domName SVGFilterPrimitiveStandardAttributes.width */
- final SVGAnimatedLength width;
+ /// @domName SVGFilterPrimitiveStandardAttributes.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGFilterPrimitiveStandardAttributes.x */
- final SVGAnimatedLength x;
+ /// @domName SVGFilterPrimitiveStandardAttributes.x; @docsEditable true
+ final AnimatedLength x;
- /** @domName SVGFilterPrimitiveStandardAttributes.y */
- final SVGAnimatedLength y;
+ /// @domName SVGFilterPrimitiveStandardAttributes.y; @docsEditable true
+ final AnimatedLength y;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1900,35 +1819,35 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGFEFloodElement
-class SVGFEFloodElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes native "*SVGFEFloodElement" {
+/// @domName SVGFEFloodElement; @docsEditable true
+class FEFloodElement extends SvgElement implements FilterPrimitiveStandardAttributes native "*SVGFEFloodElement" {
// From SVGFilterPrimitiveStandardAttributes
- /** @domName SVGFilterPrimitiveStandardAttributes.height */
- final SVGAnimatedLength height;
+ /// @domName SVGFilterPrimitiveStandardAttributes.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGFilterPrimitiveStandardAttributes.result */
- final SVGAnimatedString result;
+ /// @domName SVGFilterPrimitiveStandardAttributes.result; @docsEditable true
+ final AnimatedString result;
- /** @domName SVGFilterPrimitiveStandardAttributes.width */
- final SVGAnimatedLength width;
+ /// @domName SVGFilterPrimitiveStandardAttributes.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGFilterPrimitiveStandardAttributes.x */
- final SVGAnimatedLength x;
+ /// @domName SVGFilterPrimitiveStandardAttributes.x; @docsEditable true
+ final AnimatedLength x;
- /** @domName SVGFilterPrimitiveStandardAttributes.y */
- final SVGAnimatedLength y;
+ /// @domName SVGFilterPrimitiveStandardAttributes.y; @docsEditable true
+ final AnimatedLength y;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1936,79 +1855,79 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGFEFuncAElement
-class SVGFEFuncAElement extends SVGComponentTransferFunctionElement native "*SVGFEFuncAElement" {
+/// @domName SVGFEFuncAElement; @docsEditable true
+class FEFuncAElement extends ComponentTransferFunctionElement native "*SVGFEFuncAElement" {
}
// Copyright (c) 2012, 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.
-/// @domName SVGFEFuncBElement
-class SVGFEFuncBElement extends SVGComponentTransferFunctionElement native "*SVGFEFuncBElement" {
+/// @domName SVGFEFuncBElement; @docsEditable true
+class FEFuncBElement extends ComponentTransferFunctionElement native "*SVGFEFuncBElement" {
}
// Copyright (c) 2012, 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.
-/// @domName SVGFEFuncGElement
-class SVGFEFuncGElement extends SVGComponentTransferFunctionElement native "*SVGFEFuncGElement" {
+/// @domName SVGFEFuncGElement; @docsEditable true
+class FEFuncGElement extends ComponentTransferFunctionElement native "*SVGFEFuncGElement" {
}
// Copyright (c) 2012, 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.
-/// @domName SVGFEFuncRElement
-class SVGFEFuncRElement extends SVGComponentTransferFunctionElement native "*SVGFEFuncRElement" {
+/// @domName SVGFEFuncRElement; @docsEditable true
+class FEFuncRElement extends ComponentTransferFunctionElement native "*SVGFEFuncRElement" {
}
// Copyright (c) 2012, 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.
-/// @domName SVGFEGaussianBlurElement
-class SVGFEGaussianBlurElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes native "*SVGFEGaussianBlurElement" {
+/// @domName SVGFEGaussianBlurElement; @docsEditable true
+class FEGaussianBlurElement extends SvgElement implements FilterPrimitiveStandardAttributes native "*SVGFEGaussianBlurElement" {
- /** @domName SVGFEGaussianBlurElement.in1 */
- final SVGAnimatedString in1;
+ /// @domName SVGFEGaussianBlurElement.in1; @docsEditable true
+ final AnimatedString in1;
- /** @domName SVGFEGaussianBlurElement.stdDeviationX */
- final SVGAnimatedNumber stdDeviationX;
+ /// @domName SVGFEGaussianBlurElement.stdDeviationX; @docsEditable true
+ final AnimatedNumber stdDeviationX;
- /** @domName SVGFEGaussianBlurElement.stdDeviationY */
- final SVGAnimatedNumber stdDeviationY;
+ /// @domName SVGFEGaussianBlurElement.stdDeviationY; @docsEditable true
+ final AnimatedNumber stdDeviationY;
- /** @domName SVGFEGaussianBlurElement.setStdDeviation */
+ /// @domName SVGFEGaussianBlurElement.setStdDeviation; @docsEditable true
void setStdDeviation(num stdDeviationX, num stdDeviationY) native;
// From SVGFilterPrimitiveStandardAttributes
- /** @domName SVGFilterPrimitiveStandardAttributes.height */
- final SVGAnimatedLength height;
+ /// @domName SVGFilterPrimitiveStandardAttributes.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGFilterPrimitiveStandardAttributes.result */
- final SVGAnimatedString result;
+ /// @domName SVGFilterPrimitiveStandardAttributes.result; @docsEditable true
+ final AnimatedString result;
- /** @domName SVGFilterPrimitiveStandardAttributes.width */
- final SVGAnimatedLength width;
+ /// @domName SVGFilterPrimitiveStandardAttributes.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGFilterPrimitiveStandardAttributes.x */
- final SVGAnimatedLength x;
+ /// @domName SVGFilterPrimitiveStandardAttributes.x; @docsEditable true
+ final AnimatedLength x;
- /** @domName SVGFilterPrimitiveStandardAttributes.y */
- final SVGAnimatedLength y;
+ /// @domName SVGFilterPrimitiveStandardAttributes.y; @docsEditable true
+ final AnimatedLength y;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -2016,92 +1935,92 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGFEImageElement
-class SVGFEImageElement extends SVGElement implements SVGURIReference, SVGLangSpace, SVGFilterPrimitiveStandardAttributes, SVGExternalResourcesRequired native "*SVGFEImageElement" {
+/// @domName SVGFEImageElement; @docsEditable true
+class FEImageElement extends SvgElement implements FilterPrimitiveStandardAttributes, UriReference, ExternalResourcesRequired, LangSpace native "*SVGFEImageElement" {
- /** @domName SVGFEImageElement.preserveAspectRatio */
- final SVGAnimatedPreserveAspectRatio preserveAspectRatio;
+ /// @domName SVGFEImageElement.preserveAspectRatio; @docsEditable true
+ final AnimatedPreserveAspectRatio preserveAspectRatio;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGFilterPrimitiveStandardAttributes
- /** @domName SVGFilterPrimitiveStandardAttributes.height */
- final SVGAnimatedLength height;
+ /// @domName SVGFilterPrimitiveStandardAttributes.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGFilterPrimitiveStandardAttributes.result */
- final SVGAnimatedString result;
+ /// @domName SVGFilterPrimitiveStandardAttributes.result; @docsEditable true
+ final AnimatedString result;
- /** @domName SVGFilterPrimitiveStandardAttributes.width */
- final SVGAnimatedLength width;
+ /// @domName SVGFilterPrimitiveStandardAttributes.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGFilterPrimitiveStandardAttributes.x */
- final SVGAnimatedLength x;
+ /// @domName SVGFilterPrimitiveStandardAttributes.x; @docsEditable true
+ final AnimatedLength x;
- /** @domName SVGFilterPrimitiveStandardAttributes.y */
- final SVGAnimatedLength y;
+ /// @domName SVGFilterPrimitiveStandardAttributes.y; @docsEditable true
+ final AnimatedLength y;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGURIReference
- /** @domName SVGURIReference.href */
- final SVGAnimatedString href;
+ /// @domName SVGURIReference.href; @docsEditable true
+ final AnimatedString href;
}
// Copyright (c) 2012, 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.
-/// @domName SVGFEMergeElement
-class SVGFEMergeElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes native "*SVGFEMergeElement" {
+/// @domName SVGFEMergeElement; @docsEditable true
+class FEMergeElement extends SvgElement implements FilterPrimitiveStandardAttributes native "*SVGFEMergeElement" {
// From SVGFilterPrimitiveStandardAttributes
- /** @domName SVGFilterPrimitiveStandardAttributes.height */
- final SVGAnimatedLength height;
+ /// @domName SVGFilterPrimitiveStandardAttributes.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGFilterPrimitiveStandardAttributes.result */
- final SVGAnimatedString result;
+ /// @domName SVGFilterPrimitiveStandardAttributes.result; @docsEditable true
+ final AnimatedString result;
- /** @domName SVGFilterPrimitiveStandardAttributes.width */
- final SVGAnimatedLength width;
+ /// @domName SVGFilterPrimitiveStandardAttributes.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGFilterPrimitiveStandardAttributes.x */
- final SVGAnimatedLength x;
+ /// @domName SVGFilterPrimitiveStandardAttributes.x; @docsEditable true
+ final AnimatedLength x;
- /** @domName SVGFilterPrimitiveStandardAttributes.y */
- final SVGAnimatedLength y;
+ /// @domName SVGFilterPrimitiveStandardAttributes.y; @docsEditable true
+ final AnimatedLength y;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -2109,19 +2028,19 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGFEMergeNodeElement
-class SVGFEMergeNodeElement extends SVGElement native "*SVGFEMergeNodeElement" {
+/// @domName SVGFEMergeNodeElement; @docsEditable true
+class FEMergeNodeElement extends SvgElement native "*SVGFEMergeNodeElement" {
- /** @domName SVGFEMergeNodeElement.in1 */
- final SVGAnimatedString in1;
+ /// @domName SVGFEMergeNodeElement.in1; @docsEditable true
+ final AnimatedString in1;
}
// Copyright (c) 2012, 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.
-/// @domName SVGFEMorphologyElement
-class SVGFEMorphologyElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes native "*SVGFEMorphologyElement" {
+/// @domName SVGFEMorphologyElement; @docsEditable true
+class FEMorphologyElement extends SvgElement implements FilterPrimitiveStandardAttributes native "*SVGFEMorphologyElement" {
static const int SVG_MORPHOLOGY_OPERATOR_DILATE = 2;
@@ -2129,47 +2048,47 @@
static const int SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0;
- /** @domName SVGFEMorphologyElement.in1 */
- final SVGAnimatedString in1;
+ /// @domName SVGFEMorphologyElement.in1; @docsEditable true
+ final AnimatedString in1;
- /** @domName SVGFEMorphologyElement.operator */
- final SVGAnimatedEnumeration operator;
+ /// @domName SVGFEMorphologyElement.operator; @docsEditable true
+ final AnimatedEnumeration operator;
- /** @domName SVGFEMorphologyElement.radiusX */
- final SVGAnimatedNumber radiusX;
+ /// @domName SVGFEMorphologyElement.radiusX; @docsEditable true
+ final AnimatedNumber radiusX;
- /** @domName SVGFEMorphologyElement.radiusY */
- final SVGAnimatedNumber radiusY;
+ /// @domName SVGFEMorphologyElement.radiusY; @docsEditable true
+ final AnimatedNumber radiusY;
- /** @domName SVGFEMorphologyElement.setRadius */
+ /// @domName SVGFEMorphologyElement.setRadius; @docsEditable true
void setRadius(num radiusX, num radiusY) native;
// From SVGFilterPrimitiveStandardAttributes
- /** @domName SVGFilterPrimitiveStandardAttributes.height */
- final SVGAnimatedLength height;
+ /// @domName SVGFilterPrimitiveStandardAttributes.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGFilterPrimitiveStandardAttributes.result */
- final SVGAnimatedString result;
+ /// @domName SVGFilterPrimitiveStandardAttributes.result; @docsEditable true
+ final AnimatedString result;
- /** @domName SVGFilterPrimitiveStandardAttributes.width */
- final SVGAnimatedLength width;
+ /// @domName SVGFilterPrimitiveStandardAttributes.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGFilterPrimitiveStandardAttributes.x */
- final SVGAnimatedLength x;
+ /// @domName SVGFilterPrimitiveStandardAttributes.x; @docsEditable true
+ final AnimatedLength x;
- /** @domName SVGFilterPrimitiveStandardAttributes.y */
- final SVGAnimatedLength y;
+ /// @domName SVGFilterPrimitiveStandardAttributes.y; @docsEditable true
+ final AnimatedLength y;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -2177,44 +2096,44 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGFEOffsetElement
-class SVGFEOffsetElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes native "*SVGFEOffsetElement" {
+/// @domName SVGFEOffsetElement; @docsEditable true
+class FEOffsetElement extends SvgElement implements FilterPrimitiveStandardAttributes native "*SVGFEOffsetElement" {
- /** @domName SVGFEOffsetElement.dx */
- final SVGAnimatedNumber dx;
+ /// @domName SVGFEOffsetElement.dx; @docsEditable true
+ final AnimatedNumber dx;
- /** @domName SVGFEOffsetElement.dy */
- final SVGAnimatedNumber dy;
+ /// @domName SVGFEOffsetElement.dy; @docsEditable true
+ final AnimatedNumber dy;
- /** @domName SVGFEOffsetElement.in1 */
- final SVGAnimatedString in1;
+ /// @domName SVGFEOffsetElement.in1; @docsEditable true
+ final AnimatedString in1;
// From SVGFilterPrimitiveStandardAttributes
- /** @domName SVGFilterPrimitiveStandardAttributes.height */
- final SVGAnimatedLength height;
+ /// @domName SVGFilterPrimitiveStandardAttributes.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGFilterPrimitiveStandardAttributes.result */
- final SVGAnimatedString result;
+ /// @domName SVGFilterPrimitiveStandardAttributes.result; @docsEditable true
+ final AnimatedString result;
- /** @domName SVGFilterPrimitiveStandardAttributes.width */
- final SVGAnimatedLength width;
+ /// @domName SVGFilterPrimitiveStandardAttributes.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGFilterPrimitiveStandardAttributes.x */
- final SVGAnimatedLength x;
+ /// @domName SVGFilterPrimitiveStandardAttributes.x; @docsEditable true
+ final AnimatedLength x;
- /** @domName SVGFilterPrimitiveStandardAttributes.y */
- final SVGAnimatedLength y;
+ /// @domName SVGFilterPrimitiveStandardAttributes.y; @docsEditable true
+ final AnimatedLength y;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -2222,64 +2141,64 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGFEPointLightElement
-class SVGFEPointLightElement extends SVGElement native "*SVGFEPointLightElement" {
+/// @domName SVGFEPointLightElement; @docsEditable true
+class FEPointLightElement extends SvgElement native "*SVGFEPointLightElement" {
- /** @domName SVGFEPointLightElement.x */
- final SVGAnimatedNumber x;
+ /// @domName SVGFEPointLightElement.x; @docsEditable true
+ final AnimatedNumber x;
- /** @domName SVGFEPointLightElement.y */
- final SVGAnimatedNumber y;
+ /// @domName SVGFEPointLightElement.y; @docsEditable true
+ final AnimatedNumber y;
- /** @domName SVGFEPointLightElement.z */
- final SVGAnimatedNumber z;
+ /// @domName SVGFEPointLightElement.z; @docsEditable true
+ final AnimatedNumber z;
}
// Copyright (c) 2012, 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.
-/// @domName SVGFESpecularLightingElement
-class SVGFESpecularLightingElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes native "*SVGFESpecularLightingElement" {
+/// @domName SVGFESpecularLightingElement; @docsEditable true
+class FESpecularLightingElement extends SvgElement implements FilterPrimitiveStandardAttributes native "*SVGFESpecularLightingElement" {
- /** @domName SVGFESpecularLightingElement.in1 */
- final SVGAnimatedString in1;
+ /// @domName SVGFESpecularLightingElement.in1; @docsEditable true
+ final AnimatedString in1;
- /** @domName SVGFESpecularLightingElement.specularConstant */
- final SVGAnimatedNumber specularConstant;
+ /// @domName SVGFESpecularLightingElement.specularConstant; @docsEditable true
+ final AnimatedNumber specularConstant;
- /** @domName SVGFESpecularLightingElement.specularExponent */
- final SVGAnimatedNumber specularExponent;
+ /// @domName SVGFESpecularLightingElement.specularExponent; @docsEditable true
+ final AnimatedNumber specularExponent;
- /** @domName SVGFESpecularLightingElement.surfaceScale */
- final SVGAnimatedNumber surfaceScale;
+ /// @domName SVGFESpecularLightingElement.surfaceScale; @docsEditable true
+ final AnimatedNumber surfaceScale;
// From SVGFilterPrimitiveStandardAttributes
- /** @domName SVGFilterPrimitiveStandardAttributes.height */
- final SVGAnimatedLength height;
+ /// @domName SVGFilterPrimitiveStandardAttributes.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGFilterPrimitiveStandardAttributes.result */
- final SVGAnimatedString result;
+ /// @domName SVGFilterPrimitiveStandardAttributes.result; @docsEditable true
+ final AnimatedString result;
- /** @domName SVGFilterPrimitiveStandardAttributes.width */
- final SVGAnimatedLength width;
+ /// @domName SVGFilterPrimitiveStandardAttributes.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGFilterPrimitiveStandardAttributes.x */
- final SVGAnimatedLength x;
+ /// @domName SVGFilterPrimitiveStandardAttributes.x; @docsEditable true
+ final AnimatedLength x;
- /** @domName SVGFilterPrimitiveStandardAttributes.y */
- final SVGAnimatedLength y;
+ /// @domName SVGFilterPrimitiveStandardAttributes.y; @docsEditable true
+ final AnimatedLength y;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -2287,70 +2206,70 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGFESpotLightElement
-class SVGFESpotLightElement extends SVGElement native "*SVGFESpotLightElement" {
+/// @domName SVGFESpotLightElement; @docsEditable true
+class FESpotLightElement extends SvgElement native "*SVGFESpotLightElement" {
- /** @domName SVGFESpotLightElement.limitingConeAngle */
- final SVGAnimatedNumber limitingConeAngle;
+ /// @domName SVGFESpotLightElement.limitingConeAngle; @docsEditable true
+ final AnimatedNumber limitingConeAngle;
- /** @domName SVGFESpotLightElement.pointsAtX */
- final SVGAnimatedNumber pointsAtX;
+ /// @domName SVGFESpotLightElement.pointsAtX; @docsEditable true
+ final AnimatedNumber pointsAtX;
- /** @domName SVGFESpotLightElement.pointsAtY */
- final SVGAnimatedNumber pointsAtY;
+ /// @domName SVGFESpotLightElement.pointsAtY; @docsEditable true
+ final AnimatedNumber pointsAtY;
- /** @domName SVGFESpotLightElement.pointsAtZ */
- final SVGAnimatedNumber pointsAtZ;
+ /// @domName SVGFESpotLightElement.pointsAtZ; @docsEditable true
+ final AnimatedNumber pointsAtZ;
- /** @domName SVGFESpotLightElement.specularExponent */
- final SVGAnimatedNumber specularExponent;
+ /// @domName SVGFESpotLightElement.specularExponent; @docsEditable true
+ final AnimatedNumber specularExponent;
- /** @domName SVGFESpotLightElement.x */
- final SVGAnimatedNumber x;
+ /// @domName SVGFESpotLightElement.x; @docsEditable true
+ final AnimatedNumber x;
- /** @domName SVGFESpotLightElement.y */
- final SVGAnimatedNumber y;
+ /// @domName SVGFESpotLightElement.y; @docsEditable true
+ final AnimatedNumber y;
- /** @domName SVGFESpotLightElement.z */
- final SVGAnimatedNumber z;
+ /// @domName SVGFESpotLightElement.z; @docsEditable true
+ final AnimatedNumber z;
}
// Copyright (c) 2012, 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.
-/// @domName SVGFETileElement
-class SVGFETileElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes native "*SVGFETileElement" {
+/// @domName SVGFETileElement; @docsEditable true
+class FETileElement extends SvgElement implements FilterPrimitiveStandardAttributes native "*SVGFETileElement" {
- /** @domName SVGFETileElement.in1 */
- final SVGAnimatedString in1;
+ /// @domName SVGFETileElement.in1; @docsEditable true
+ final AnimatedString in1;
// From SVGFilterPrimitiveStandardAttributes
- /** @domName SVGFilterPrimitiveStandardAttributes.height */
- final SVGAnimatedLength height;
+ /// @domName SVGFilterPrimitiveStandardAttributes.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGFilterPrimitiveStandardAttributes.result */
- final SVGAnimatedString result;
+ /// @domName SVGFilterPrimitiveStandardAttributes.result; @docsEditable true
+ final AnimatedString result;
- /** @domName SVGFilterPrimitiveStandardAttributes.width */
- final SVGAnimatedLength width;
+ /// @domName SVGFilterPrimitiveStandardAttributes.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGFilterPrimitiveStandardAttributes.x */
- final SVGAnimatedLength x;
+ /// @domName SVGFilterPrimitiveStandardAttributes.x; @docsEditable true
+ final AnimatedLength x;
- /** @domName SVGFilterPrimitiveStandardAttributes.y */
- final SVGAnimatedLength y;
+ /// @domName SVGFilterPrimitiveStandardAttributes.y; @docsEditable true
+ final AnimatedLength y;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -2358,8 +2277,8 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGFETurbulenceElement
-class SVGFETurbulenceElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes native "*SVGFETurbulenceElement" {
+/// @domName SVGFETurbulenceElement; @docsEditable true
+class FETurbulenceElement extends SvgElement implements FilterPrimitiveStandardAttributes native "*SVGFETurbulenceElement" {
static const int SVG_STITCHTYPE_NOSTITCH = 2;
@@ -2373,50 +2292,50 @@
static const int SVG_TURBULENCE_TYPE_UNKNOWN = 0;
- /** @domName SVGFETurbulenceElement.baseFrequencyX */
- final SVGAnimatedNumber baseFrequencyX;
+ /// @domName SVGFETurbulenceElement.baseFrequencyX; @docsEditable true
+ final AnimatedNumber baseFrequencyX;
- /** @domName SVGFETurbulenceElement.baseFrequencyY */
- final SVGAnimatedNumber baseFrequencyY;
+ /// @domName SVGFETurbulenceElement.baseFrequencyY; @docsEditable true
+ final AnimatedNumber baseFrequencyY;
- /** @domName SVGFETurbulenceElement.numOctaves */
- final SVGAnimatedInteger numOctaves;
+ /// @domName SVGFETurbulenceElement.numOctaves; @docsEditable true
+ final AnimatedInteger numOctaves;
- /** @domName SVGFETurbulenceElement.seed */
- final SVGAnimatedNumber seed;
+ /// @domName SVGFETurbulenceElement.seed; @docsEditable true
+ final AnimatedNumber seed;
- /** @domName SVGFETurbulenceElement.stitchTiles */
- final SVGAnimatedEnumeration stitchTiles;
+ /// @domName SVGFETurbulenceElement.stitchTiles; @docsEditable true
+ final AnimatedEnumeration stitchTiles;
- /** @domName SVGFETurbulenceElement.type */
- final SVGAnimatedEnumeration type;
+ /// @domName SVGFETurbulenceElement.type; @docsEditable true
+ final AnimatedEnumeration type;
// From SVGFilterPrimitiveStandardAttributes
- /** @domName SVGFilterPrimitiveStandardAttributes.height */
- final SVGAnimatedLength height;
+ /// @domName SVGFilterPrimitiveStandardAttributes.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGFilterPrimitiveStandardAttributes.result */
- final SVGAnimatedString result;
+ /// @domName SVGFilterPrimitiveStandardAttributes.result; @docsEditable true
+ final AnimatedString result;
- /** @domName SVGFilterPrimitiveStandardAttributes.width */
- final SVGAnimatedLength width;
+ /// @domName SVGFilterPrimitiveStandardAttributes.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGFilterPrimitiveStandardAttributes.x */
- final SVGAnimatedLength x;
+ /// @domName SVGFilterPrimitiveStandardAttributes.x; @docsEditable true
+ final AnimatedLength x;
- /** @domName SVGFilterPrimitiveStandardAttributes.y */
- final SVGAnimatedLength y;
+ /// @domName SVGFilterPrimitiveStandardAttributes.y; @docsEditable true
+ final AnimatedLength y;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -2424,64 +2343,66 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGFilterElement
-class SVGFilterElement extends SVGElement implements SVGURIReference, SVGLangSpace, SVGExternalResourcesRequired, SVGStylable native "*SVGFilterElement" {
+/// @domName SVGFilterElement; @docsEditable true
+class FilterElement extends SvgElement implements UriReference, ExternalResourcesRequired, Stylable, LangSpace native "*SVGFilterElement" {
- /** @domName SVGFilterElement.filterResX */
- final SVGAnimatedInteger filterResX;
+ factory FilterElement() => _SvgElementFactoryProvider.createSvgElement_tag("filter");
- /** @domName SVGFilterElement.filterResY */
- final SVGAnimatedInteger filterResY;
+ /// @domName SVGFilterElement.filterResX; @docsEditable true
+ final AnimatedInteger filterResX;
- /** @domName SVGFilterElement.filterUnits */
- final SVGAnimatedEnumeration filterUnits;
+ /// @domName SVGFilterElement.filterResY; @docsEditable true
+ final AnimatedInteger filterResY;
- /** @domName SVGFilterElement.height */
- final SVGAnimatedLength height;
+ /// @domName SVGFilterElement.filterUnits; @docsEditable true
+ final AnimatedEnumeration filterUnits;
- /** @domName SVGFilterElement.primitiveUnits */
- final SVGAnimatedEnumeration primitiveUnits;
+ /// @domName SVGFilterElement.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGFilterElement.width */
- final SVGAnimatedLength width;
+ /// @domName SVGFilterElement.primitiveUnits; @docsEditable true
+ final AnimatedEnumeration primitiveUnits;
- /** @domName SVGFilterElement.x */
- final SVGAnimatedLength x;
+ /// @domName SVGFilterElement.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGFilterElement.y */
- final SVGAnimatedLength y;
+ /// @domName SVGFilterElement.x; @docsEditable true
+ final AnimatedLength x;
- /** @domName SVGFilterElement.setFilterRes */
+ /// @domName SVGFilterElement.y; @docsEditable true
+ final AnimatedLength y;
+
+ /// @domName SVGFilterElement.setFilterRes; @docsEditable true
void setFilterRes(int filterResX, int filterResY) native;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGURIReference
- /** @domName SVGURIReference.href */
- final SVGAnimatedString href;
+ /// @domName SVGURIReference.href; @docsEditable true
+ final AnimatedString href;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
@@ -2489,25 +2410,25 @@
/// @domName SVGFilterPrimitiveStandardAttributes
-abstract class SVGFilterPrimitiveStandardAttributes implements SVGStylable {
+abstract class FilterPrimitiveStandardAttributes implements Stylable {
- SVGAnimatedLength height;
+ AnimatedLength height;
- SVGAnimatedString result;
+ AnimatedString result;
- SVGAnimatedLength width;
+ AnimatedLength width;
- SVGAnimatedLength x;
+ AnimatedLength x;
- SVGAnimatedLength y;
+ AnimatedLength y;
// From SVGStylable
- SVGAnimatedString className;
+ AnimatedString className;
CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name);
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -2516,271 +2437,289 @@
/// @domName SVGFitToViewBox
-abstract class SVGFitToViewBox {
+abstract class FitToViewBox {
- SVGAnimatedPreserveAspectRatio preserveAspectRatio;
+ AnimatedPreserveAspectRatio preserveAspectRatio;
- SVGAnimatedRect viewBox;
+ AnimatedRect viewBox;
}
// Copyright (c) 2012, 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.
-/// @domName SVGFontElement
-class SVGFontElement extends SVGElement native "*SVGFontElement" {
+/// @domName SVGFontElement; @docsEditable true
+class FontElement extends SvgElement native "*SVGFontElement" {
+
+ factory FontElement() => _SvgElementFactoryProvider.createSvgElement_tag("font");
}
// Copyright (c) 2012, 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.
-/// @domName SVGFontFaceElement
-class SVGFontFaceElement extends SVGElement native "*SVGFontFaceElement" {
+/// @domName SVGFontFaceElement; @docsEditable true
+class FontFaceElement extends SvgElement native "*SVGFontFaceElement" {
+
+ factory FontFaceElement() => _SvgElementFactoryProvider.createSvgElement_tag("font-face");
}
// Copyright (c) 2012, 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.
-/// @domName SVGFontFaceFormatElement
-class SVGFontFaceFormatElement extends SVGElement native "*SVGFontFaceFormatElement" {
+/// @domName SVGFontFaceFormatElement; @docsEditable true
+class FontFaceFormatElement extends SvgElement native "*SVGFontFaceFormatElement" {
+
+ factory FontFaceFormatElement() => _SvgElementFactoryProvider.createSvgElement_tag("font-face-format");
}
// Copyright (c) 2012, 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.
-/// @domName SVGFontFaceNameElement
-class SVGFontFaceNameElement extends SVGElement native "*SVGFontFaceNameElement" {
+/// @domName SVGFontFaceNameElement; @docsEditable true
+class FontFaceNameElement extends SvgElement native "*SVGFontFaceNameElement" {
+
+ factory FontFaceNameElement() => _SvgElementFactoryProvider.createSvgElement_tag("font-face-name");
}
// Copyright (c) 2012, 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.
-/// @domName SVGFontFaceSrcElement
-class SVGFontFaceSrcElement extends SVGElement native "*SVGFontFaceSrcElement" {
+/// @domName SVGFontFaceSrcElement; @docsEditable true
+class FontFaceSrcElement extends SvgElement native "*SVGFontFaceSrcElement" {
+
+ factory FontFaceSrcElement() => _SvgElementFactoryProvider.createSvgElement_tag("font-face-src");
}
// Copyright (c) 2012, 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.
-/// @domName SVGFontFaceUriElement
-class SVGFontFaceUriElement extends SVGElement native "*SVGFontFaceUriElement" {
+/// @domName SVGFontFaceUriElement; @docsEditable true
+class FontFaceUriElement extends SvgElement native "*SVGFontFaceUriElement" {
+
+ factory FontFaceUriElement() => _SvgElementFactoryProvider.createSvgElement_tag("font-face-uri");
}
// Copyright (c) 2012, 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.
-/// @domName SVGForeignObjectElement
-class SVGForeignObjectElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired native "*SVGForeignObjectElement" {
+/// @domName SVGForeignObjectElement; @docsEditable true
+class ForeignObjectElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace native "*SVGForeignObjectElement" {
- /** @domName SVGForeignObjectElement.height */
- final SVGAnimatedLength height;
+ factory ForeignObjectElement() => _SvgElementFactoryProvider.createSvgElement_tag("foreignObject");
- /** @domName SVGForeignObjectElement.width */
- final SVGAnimatedLength width;
+ /// @domName SVGForeignObjectElement.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGForeignObjectElement.x */
- final SVGAnimatedLength x;
+ /// @domName SVGForeignObjectElement.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGForeignObjectElement.y */
- final SVGAnimatedLength y;
+ /// @domName SVGForeignObjectElement.x; @docsEditable true
+ final AnimatedLength x;
+
+ /// @domName SVGForeignObjectElement.y; @docsEditable true
+ final AnimatedLength y;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGLocatable
- /** @domName SVGLocatable.farthestViewportElement */
- final SVGElement farthestViewportElement;
+ /// @domName SVGLocatable.farthestViewportElement; @docsEditable true
+ final SvgElement farthestViewportElement;
- /** @domName SVGLocatable.nearestViewportElement */
- final SVGElement nearestViewportElement;
+ /// @domName SVGLocatable.nearestViewportElement; @docsEditable true
+ final SvgElement nearestViewportElement;
- /** @domName SVGLocatable.getBBox */
- SVGRect getBBox() native;
+ /// @domName SVGLocatable.getBBox; @docsEditable true
+ Rect getBBox() native;
- /** @domName SVGLocatable.getCTM */
- SVGMatrix getCTM() native;
+ /// @domName SVGLocatable.getCTM; @docsEditable true
+ Matrix getCTM() native;
- /** @domName SVGLocatable.getScreenCTM */
- SVGMatrix getScreenCTM() native;
+ /// @domName SVGLocatable.getScreenCTM; @docsEditable true
+ Matrix getScreenCTM() native;
- /** @domName SVGLocatable.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native;
+ /// @domName SVGLocatable.getTransformToElement; @docsEditable true
+ Matrix getTransformToElement(SvgElement element) native;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGTests
- /** @domName SVGTests.requiredExtensions */
- final SVGStringList requiredExtensions;
+ /// @domName SVGTests.requiredExtensions; @docsEditable true
+ final StringList requiredExtensions;
- /** @domName SVGTests.requiredFeatures */
- final SVGStringList requiredFeatures;
+ /// @domName SVGTests.requiredFeatures; @docsEditable true
+ final StringList requiredFeatures;
- /** @domName SVGTests.systemLanguage */
- final SVGStringList systemLanguage;
+ /// @domName SVGTests.systemLanguage; @docsEditable true
+ final StringList systemLanguage;
- /** @domName SVGTests.hasExtension */
+ /// @domName SVGTests.hasExtension; @docsEditable true
bool hasExtension(String extension) native;
// From SVGTransformable
- /** @domName SVGTransformable.transform */
- final SVGAnimatedTransformList transform;
+ /// @domName SVGTransformable.transform; @docsEditable true
+ final AnimatedTransformList transform;
}
// Copyright (c) 2012, 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.
-/// @domName SVGGElement
-class SVGGElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired native "*SVGGElement" {
+/// @domName SVGGElement; @docsEditable true
+class GElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace native "*SVGGElement" {
+
+ factory GElement() => _SvgElementFactoryProvider.createSvgElement_tag("g");
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGLocatable
- /** @domName SVGLocatable.farthestViewportElement */
- final SVGElement farthestViewportElement;
+ /// @domName SVGLocatable.farthestViewportElement; @docsEditable true
+ final SvgElement farthestViewportElement;
- /** @domName SVGLocatable.nearestViewportElement */
- final SVGElement nearestViewportElement;
+ /// @domName SVGLocatable.nearestViewportElement; @docsEditable true
+ final SvgElement nearestViewportElement;
- /** @domName SVGLocatable.getBBox */
- SVGRect getBBox() native;
+ /// @domName SVGLocatable.getBBox; @docsEditable true
+ Rect getBBox() native;
- /** @domName SVGLocatable.getCTM */
- SVGMatrix getCTM() native;
+ /// @domName SVGLocatable.getCTM; @docsEditable true
+ Matrix getCTM() native;
- /** @domName SVGLocatable.getScreenCTM */
- SVGMatrix getScreenCTM() native;
+ /// @domName SVGLocatable.getScreenCTM; @docsEditable true
+ Matrix getScreenCTM() native;
- /** @domName SVGLocatable.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native;
+ /// @domName SVGLocatable.getTransformToElement; @docsEditable true
+ Matrix getTransformToElement(SvgElement element) native;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGTests
- /** @domName SVGTests.requiredExtensions */
- final SVGStringList requiredExtensions;
+ /// @domName SVGTests.requiredExtensions; @docsEditable true
+ final StringList requiredExtensions;
- /** @domName SVGTests.requiredFeatures */
- final SVGStringList requiredFeatures;
+ /// @domName SVGTests.requiredFeatures; @docsEditable true
+ final StringList requiredFeatures;
- /** @domName SVGTests.systemLanguage */
- final SVGStringList systemLanguage;
+ /// @domName SVGTests.systemLanguage; @docsEditable true
+ final StringList systemLanguage;
- /** @domName SVGTests.hasExtension */
+ /// @domName SVGTests.hasExtension; @docsEditable true
bool hasExtension(String extension) native;
// From SVGTransformable
- /** @domName SVGTransformable.transform */
- final SVGAnimatedTransformList transform;
+ /// @domName SVGTransformable.transform; @docsEditable true
+ final AnimatedTransformList transform;
}
// Copyright (c) 2012, 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.
-/// @domName SVGGlyphElement
-class SVGGlyphElement extends SVGElement native "*SVGGlyphElement" {
+/// @domName SVGGlyphElement; @docsEditable true
+class GlyphElement extends SvgElement native "*SVGGlyphElement" {
+
+ factory GlyphElement() => _SvgElementFactoryProvider.createSvgElement_tag("glyph");
}
// Copyright (c) 2012, 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.
-/// @domName SVGGlyphRefElement
-class SVGGlyphRefElement extends SVGElement implements SVGURIReference, SVGStylable native "*SVGGlyphRefElement" {
+/// @domName SVGGlyphRefElement; @docsEditable true
+class GlyphRefElement extends SvgElement implements UriReference, Stylable native "*SVGGlyphRefElement" {
- /** @domName SVGGlyphRefElement.dx */
+ /// @domName SVGGlyphRefElement.dx; @docsEditable true
num dx;
- /** @domName SVGGlyphRefElement.dy */
+ /// @domName SVGGlyphRefElement.dy; @docsEditable true
num dy;
- /** @domName SVGGlyphRefElement.format */
+ /// @domName SVGGlyphRefElement.format; @docsEditable true
String format;
- /** @domName SVGGlyphRefElement.glyphRef */
+ /// @domName SVGGlyphRefElement.glyphRef; @docsEditable true
String glyphRef;
- /** @domName SVGGlyphRefElement.x */
+ /// @domName SVGGlyphRefElement.x; @docsEditable true
num x;
- /** @domName SVGGlyphRefElement.y */
+ /// @domName SVGGlyphRefElement.y; @docsEditable true
num y;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGURIReference
- /** @domName SVGURIReference.href */
- final SVGAnimatedString href;
+ /// @domName SVGURIReference.href; @docsEditable true
+ final AnimatedString href;
}
// Copyright (c) 2012, 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.
-/// @domName SVGGradientElement
-class SVGGradientElement extends SVGElement implements SVGURIReference, SVGExternalResourcesRequired, SVGStylable native "*SVGGradientElement" {
+/// @domName SVGGradientElement; @docsEditable true
+class GradientElement extends SvgElement implements UriReference, ExternalResourcesRequired, Stylable native "*SVGGradientElement" {
static const int SVG_SPREADMETHOD_PAD = 1;
@@ -2790,134 +2729,138 @@
static const int SVG_SPREADMETHOD_UNKNOWN = 0;
- /** @domName SVGGradientElement.gradientTransform */
- final SVGAnimatedTransformList gradientTransform;
+ /// @domName SVGGradientElement.gradientTransform; @docsEditable true
+ final AnimatedTransformList gradientTransform;
- /** @domName SVGGradientElement.gradientUnits */
- final SVGAnimatedEnumeration gradientUnits;
+ /// @domName SVGGradientElement.gradientUnits; @docsEditable true
+ final AnimatedEnumeration gradientUnits;
- /** @domName SVGGradientElement.spreadMethod */
- final SVGAnimatedEnumeration spreadMethod;
+ /// @domName SVGGradientElement.spreadMethod; @docsEditable true
+ final AnimatedEnumeration spreadMethod;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGURIReference
- /** @domName SVGURIReference.href */
- final SVGAnimatedString href;
+ /// @domName SVGURIReference.href; @docsEditable true
+ final AnimatedString href;
}
// Copyright (c) 2012, 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.
-/// @domName SVGHKernElement
-class SVGHKernElement extends SVGElement native "*SVGHKernElement" {
+/// @domName SVGHKernElement; @docsEditable true
+class HKernElement extends SvgElement native "*SVGHKernElement" {
+
+ factory HKernElement() => _SvgElementFactoryProvider.createSvgElement_tag("hkern");
}
// Copyright (c) 2012, 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.
-/// @domName SVGImageElement
-class SVGImageElement extends SVGElement implements SVGLangSpace, SVGTests, SVGStylable, SVGURIReference, SVGExternalResourcesRequired, SVGTransformable native "*SVGImageElement" {
+/// @domName SVGImageElement; @docsEditable true
+class ImageElement extends SvgElement implements Transformable, Tests, UriReference, Stylable, ExternalResourcesRequired, LangSpace native "*SVGImageElement" {
- /** @domName SVGImageElement.height */
- final SVGAnimatedLength height;
+ factory ImageElement() => _SvgElementFactoryProvider.createSvgElement_tag("image");
- /** @domName SVGImageElement.preserveAspectRatio */
- final SVGAnimatedPreserveAspectRatio preserveAspectRatio;
+ /// @domName SVGImageElement.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGImageElement.width */
- final SVGAnimatedLength width;
+ /// @domName SVGImageElement.preserveAspectRatio; @docsEditable true
+ final AnimatedPreserveAspectRatio preserveAspectRatio;
- /** @domName SVGImageElement.x */
- final SVGAnimatedLength x;
+ /// @domName SVGImageElement.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGImageElement.y */
- final SVGAnimatedLength y;
+ /// @domName SVGImageElement.x; @docsEditable true
+ final AnimatedLength x;
+
+ /// @domName SVGImageElement.y; @docsEditable true
+ final AnimatedLength y;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGLocatable
- /** @domName SVGLocatable.farthestViewportElement */
- final SVGElement farthestViewportElement;
+ /// @domName SVGLocatable.farthestViewportElement; @docsEditable true
+ final SvgElement farthestViewportElement;
- /** @domName SVGLocatable.nearestViewportElement */
- final SVGElement nearestViewportElement;
+ /// @domName SVGLocatable.nearestViewportElement; @docsEditable true
+ final SvgElement nearestViewportElement;
- /** @domName SVGLocatable.getBBox */
- SVGRect getBBox() native;
+ /// @domName SVGLocatable.getBBox; @docsEditable true
+ Rect getBBox() native;
- /** @domName SVGLocatable.getCTM */
- SVGMatrix getCTM() native;
+ /// @domName SVGLocatable.getCTM; @docsEditable true
+ Matrix getCTM() native;
- /** @domName SVGLocatable.getScreenCTM */
- SVGMatrix getScreenCTM() native;
+ /// @domName SVGLocatable.getScreenCTM; @docsEditable true
+ Matrix getScreenCTM() native;
- /** @domName SVGLocatable.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native;
+ /// @domName SVGLocatable.getTransformToElement; @docsEditable true
+ Matrix getTransformToElement(SvgElement element) native;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGTests
- /** @domName SVGTests.requiredExtensions */
- final SVGStringList requiredExtensions;
+ /// @domName SVGTests.requiredExtensions; @docsEditable true
+ final StringList requiredExtensions;
- /** @domName SVGTests.requiredFeatures */
- final SVGStringList requiredFeatures;
+ /// @domName SVGTests.requiredFeatures; @docsEditable true
+ final StringList requiredFeatures;
- /** @domName SVGTests.systemLanguage */
- final SVGStringList systemLanguage;
+ /// @domName SVGTests.systemLanguage; @docsEditable true
+ final StringList systemLanguage;
- /** @domName SVGTests.hasExtension */
+ /// @domName SVGTests.hasExtension; @docsEditable true
bool hasExtension(String extension) native;
// From SVGTransformable
- /** @domName SVGTransformable.transform */
- final SVGAnimatedTransformList transform;
+ /// @domName SVGTransformable.transform; @docsEditable true
+ final AnimatedTransformList transform;
// From SVGURIReference
- /** @domName SVGURIReference.href */
- final SVGAnimatedString href;
+ /// @domName SVGURIReference.href; @docsEditable true
+ final AnimatedString href;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
@@ -2925,7 +2868,7 @@
/// @domName SVGLangSpace
-abstract class SVGLangSpace {
+abstract class LangSpace {
String xmllang;
@@ -2936,8 +2879,8 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGLength
-class SVGLength native "*SVGLength" {
+/// @domName SVGLength; @docsEditable true
+class Length native "*SVGLength" {
static const int SVG_LENGTHTYPE_CM = 6;
@@ -2961,22 +2904,22 @@
static const int SVG_LENGTHTYPE_UNKNOWN = 0;
- /** @domName SVGLength.unitType */
+ /// @domName SVGLength.unitType; @docsEditable true
final int unitType;
- /** @domName SVGLength.value */
+ /// @domName SVGLength.value; @docsEditable true
num value;
- /** @domName SVGLength.valueAsString */
+ /// @domName SVGLength.valueAsString; @docsEditable true
String valueAsString;
- /** @domName SVGLength.valueInSpecifiedUnits */
+ /// @domName SVGLength.valueInSpecifiedUnits; @docsEditable true
num valueInSpecifiedUnits;
- /** @domName SVGLength.convertToSpecifiedUnits */
+ /// @domName SVGLength.convertToSpecifiedUnits; @docsEditable true
void convertToSpecifiedUnits(int unitType) native;
- /** @domName SVGLength.newValueSpecifiedUnits */
+ /// @domName SVGLength.newValueSpecifiedUnits; @docsEditable true
void newValueSpecifiedUnits(int unitType, num valueInSpecifiedUnits) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -2984,79 +2927,81 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGLengthList
-class SVGLengthList implements JavaScriptIndexingBehavior, List<SVGLength> native "*SVGLengthList" {
+/// @domName SVGLengthList; @docsEditable true
+class LengthList implements JavaScriptIndexingBehavior, List<Length> native "*SVGLengthList" {
- /** @domName SVGLengthList.numberOfItems */
+ /// @domName SVGLengthList.numberOfItems; @docsEditable true
final int numberOfItems;
- SVGLength operator[](int index) => JS("SVGLength", "#[#]", this, index);
+ Length operator[](int index) => JS("Length", "#[#]", this, index);
- void operator[]=(int index, SVGLength value) {
+ void operator[]=(int index, Length value) {
throw new UnsupportedError("Cannot assign element of immutable List.");
}
- // -- start List<SVGLength> mixins.
- // SVGLength is the element type.
+ // -- start List<Length> mixins.
+ // Length is the element type.
- // From Iterable<SVGLength>:
+ // From Iterable<Length>:
- Iterator<SVGLength> iterator() {
+ Iterator<Length> iterator() {
// Note: NodeLists are not fixed size. And most probably length shouldn't
// be cached in both iterator _and_ forEach method. For now caching it
// for consistency.
- return new FixedSizeListIterator<SVGLength>(this);
+ return new FixedSizeListIterator<Length>(this);
}
- // From Collection<SVGLength>:
+ // From Collection<Length>:
- void add(SVGLength value) {
+ void add(Length value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addLast(SVGLength value) {
+ void addLast(Length value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addAll(Collection<SVGLength> collection) {
+ void addAll(Collection<Length> collection) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- bool contains(SVGLength element) => _Collections.contains(this, element);
+ bool contains(Length element) => _Collections.contains(this, element);
- void forEach(void f(SVGLength element)) => _Collections.forEach(this, f);
+ void forEach(void f(Length element)) => _Collections.forEach(this, f);
- Collection map(f(SVGLength element)) => _Collections.map(this, [], f);
+ Collection map(f(Length element)) => _Collections.map(this, [], f);
- Collection<SVGLength> filter(bool f(SVGLength element)) =>
- _Collections.filter(this, <SVGLength>[], f);
+ Collection<Length> filter(bool f(Length element)) =>
+ _Collections.filter(this, <Length>[], f);
- bool every(bool f(SVGLength element)) => _Collections.every(this, f);
+ bool every(bool f(Length element)) => _Collections.every(this, f);
- bool some(bool f(SVGLength element)) => _Collections.some(this, f);
+ bool some(bool f(Length element)) => _Collections.some(this, f);
bool get isEmpty => this.length == 0;
- // From List<SVGLength>:
+ // From List<Length>:
- void sort([Comparator<SVGLength> compare = Comparable.compare]) {
+ void sort([Comparator<Length> compare = Comparable.compare]) {
throw new UnsupportedError("Cannot sort immutable List.");
}
- int indexOf(SVGLength element, [int start = 0]) =>
+ int indexOf(Length element, [int start = 0]) =>
_Lists.indexOf(this, element, start, this.length);
- int lastIndexOf(SVGLength element, [int start]) {
+ int lastIndexOf(Length element, [int start]) {
if (start == null) start = length - 1;
return _Lists.lastIndexOf(this, element, start);
}
- SVGLength get last => this[length - 1];
+ Length get first => this[0];
- SVGLength removeLast() {
+ Length get last => this[length - 1];
+
+ Length removeLast() {
throw new UnsupportedError("Cannot removeLast on immutable List.");
}
- void setRange(int start, int rangeLength, List<SVGLength> from, [int startFrom]) {
+ void setRange(int start, int rangeLength, List<Length> from, [int startFrom]) {
throw new UnsupportedError("Cannot setRange on immutable List.");
}
@@ -3064,138 +3009,142 @@
throw new UnsupportedError("Cannot removeRange on immutable List.");
}
- void insertRange(int start, int rangeLength, [SVGLength initialValue]) {
+ void insertRange(int start, int rangeLength, [Length initialValue]) {
throw new UnsupportedError("Cannot insertRange on immutable List.");
}
- List<SVGLength> getRange(int start, int rangeLength) =>
- _Lists.getRange(this, start, rangeLength, <SVGLength>[]);
+ List<Length> getRange(int start, int rangeLength) =>
+ _Lists.getRange(this, start, rangeLength, <Length>[]);
- // -- end List<SVGLength> mixins.
+ // -- end List<Length> mixins.
- /** @domName SVGLengthList.appendItem */
- SVGLength appendItem(SVGLength item) native;
+ /// @domName SVGLengthList.appendItem; @docsEditable true
+ Length appendItem(Length item) native;
- /** @domName SVGLengthList.clear */
+ /// @domName SVGLengthList.clear; @docsEditable true
void clear() native;
- /** @domName SVGLengthList.getItem */
- SVGLength getItem(int index) native;
+ /// @domName SVGLengthList.getItem; @docsEditable true
+ Length getItem(int index) native;
- /** @domName SVGLengthList.initialize */
- SVGLength initialize(SVGLength item) native;
+ /// @domName SVGLengthList.initialize; @docsEditable true
+ Length initialize(Length item) native;
- /** @domName SVGLengthList.insertItemBefore */
- SVGLength insertItemBefore(SVGLength item, int index) native;
+ /// @domName SVGLengthList.insertItemBefore; @docsEditable true
+ Length insertItemBefore(Length item, int index) native;
- /** @domName SVGLengthList.removeItem */
- SVGLength removeItem(int index) native;
+ /// @domName SVGLengthList.removeItem; @docsEditable true
+ Length removeItem(int index) native;
- /** @domName SVGLengthList.replaceItem */
- SVGLength replaceItem(SVGLength item, int index) native;
+ /// @domName SVGLengthList.replaceItem; @docsEditable true
+ Length replaceItem(Length item, int index) native;
}
// Copyright (c) 2012, 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.
-/// @domName SVGLineElement
-class SVGLineElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired native "*SVGLineElement" {
+/// @domName SVGLineElement; @docsEditable true
+class LineElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace native "*SVGLineElement" {
- /** @domName SVGLineElement.x1 */
- final SVGAnimatedLength x1;
+ factory LineElement() => _SvgElementFactoryProvider.createSvgElement_tag("line");
- /** @domName SVGLineElement.x2 */
- final SVGAnimatedLength x2;
+ /// @domName SVGLineElement.x1; @docsEditable true
+ final AnimatedLength x1;
- /** @domName SVGLineElement.y1 */
- final SVGAnimatedLength y1;
+ /// @domName SVGLineElement.x2; @docsEditable true
+ final AnimatedLength x2;
- /** @domName SVGLineElement.y2 */
- final SVGAnimatedLength y2;
+ /// @domName SVGLineElement.y1; @docsEditable true
+ final AnimatedLength y1;
+
+ /// @domName SVGLineElement.y2; @docsEditable true
+ final AnimatedLength y2;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGLocatable
- /** @domName SVGLocatable.farthestViewportElement */
- final SVGElement farthestViewportElement;
+ /// @domName SVGLocatable.farthestViewportElement; @docsEditable true
+ final SvgElement farthestViewportElement;
- /** @domName SVGLocatable.nearestViewportElement */
- final SVGElement nearestViewportElement;
+ /// @domName SVGLocatable.nearestViewportElement; @docsEditable true
+ final SvgElement nearestViewportElement;
- /** @domName SVGLocatable.getBBox */
- SVGRect getBBox() native;
+ /// @domName SVGLocatable.getBBox; @docsEditable true
+ Rect getBBox() native;
- /** @domName SVGLocatable.getCTM */
- SVGMatrix getCTM() native;
+ /// @domName SVGLocatable.getCTM; @docsEditable true
+ Matrix getCTM() native;
- /** @domName SVGLocatable.getScreenCTM */
- SVGMatrix getScreenCTM() native;
+ /// @domName SVGLocatable.getScreenCTM; @docsEditable true
+ Matrix getScreenCTM() native;
- /** @domName SVGLocatable.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native;
+ /// @domName SVGLocatable.getTransformToElement; @docsEditable true
+ Matrix getTransformToElement(SvgElement element) native;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGTests
- /** @domName SVGTests.requiredExtensions */
- final SVGStringList requiredExtensions;
+ /// @domName SVGTests.requiredExtensions; @docsEditable true
+ final StringList requiredExtensions;
- /** @domName SVGTests.requiredFeatures */
- final SVGStringList requiredFeatures;
+ /// @domName SVGTests.requiredFeatures; @docsEditable true
+ final StringList requiredFeatures;
- /** @domName SVGTests.systemLanguage */
- final SVGStringList systemLanguage;
+ /// @domName SVGTests.systemLanguage; @docsEditable true
+ final StringList systemLanguage;
- /** @domName SVGTests.hasExtension */
+ /// @domName SVGTests.hasExtension; @docsEditable true
bool hasExtension(String extension) native;
// From SVGTransformable
- /** @domName SVGTransformable.transform */
- final SVGAnimatedTransformList transform;
+ /// @domName SVGTransformable.transform; @docsEditable true
+ final AnimatedTransformList transform;
}
// Copyright (c) 2012, 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.
-/// @domName SVGLinearGradientElement
-class SVGLinearGradientElement extends SVGGradientElement native "*SVGLinearGradientElement" {
+/// @domName SVGLinearGradientElement; @docsEditable true
+class LinearGradientElement extends GradientElement native "*SVGLinearGradientElement" {
- /** @domName SVGLinearGradientElement.x1 */
- final SVGAnimatedLength x1;
+ factory LinearGradientElement() => _SvgElementFactoryProvider.createSvgElement_tag("linearGradient");
- /** @domName SVGLinearGradientElement.x2 */
- final SVGAnimatedLength x2;
+ /// @domName SVGLinearGradientElement.x1; @docsEditable true
+ final AnimatedLength x1;
- /** @domName SVGLinearGradientElement.y1 */
- final SVGAnimatedLength y1;
+ /// @domName SVGLinearGradientElement.x2; @docsEditable true
+ final AnimatedLength x2;
- /** @domName SVGLinearGradientElement.y2 */
- final SVGAnimatedLength y2;
+ /// @domName SVGLinearGradientElement.y1; @docsEditable true
+ final AnimatedLength y1;
+
+ /// @domName SVGLinearGradientElement.y2; @docsEditable true
+ final AnimatedLength y2;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
@@ -3203,49 +3152,53 @@
/// @domName SVGLocatable
-abstract class SVGLocatable {
+abstract class Locatable {
- SVGElement farthestViewportElement;
+ SvgElement farthestViewportElement;
- SVGElement nearestViewportElement;
+ SvgElement nearestViewportElement;
- /** @domName SVGLocatable.getBBox */
- SVGRect getBBox();
+ /// @domName SVGLocatable.getBBox; @docsEditable true
+ Rect getBBox();
- /** @domName SVGLocatable.getCTM */
- SVGMatrix getCTM();
+ /// @domName SVGLocatable.getCTM; @docsEditable true
+ Matrix getCTM();
- /** @domName SVGLocatable.getScreenCTM */
- SVGMatrix getScreenCTM();
+ /// @domName SVGLocatable.getScreenCTM; @docsEditable true
+ Matrix getScreenCTM();
- /** @domName SVGLocatable.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element);
+ /// @domName SVGLocatable.getTransformToElement; @docsEditable true
+ Matrix getTransformToElement(SvgElement element);
}
// Copyright (c) 2012, 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.
-/// @domName SVGMPathElement
-class SVGMPathElement extends SVGElement implements SVGURIReference, SVGExternalResourcesRequired native "*SVGMPathElement" {
+/// @domName SVGMPathElement; @docsEditable true
+class MPathElement extends SvgElement implements UriReference, ExternalResourcesRequired native "*SVGMPathElement" {
+
+ factory MPathElement() => _SvgElementFactoryProvider.createSvgElement_tag("mpath");
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGURIReference
- /** @domName SVGURIReference.href */
- final SVGAnimatedString href;
+ /// @domName SVGURIReference.href; @docsEditable true
+ final AnimatedString href;
}
// Copyright (c) 2012, 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.
-/// @domName SVGMarkerElement
-class SVGMarkerElement extends SVGElement implements SVGLangSpace, SVGFitToViewBox, SVGExternalResourcesRequired, SVGStylable native "*SVGMarkerElement" {
+/// @domName SVGMarkerElement; @docsEditable true
+class MarkerElement extends SvgElement implements FitToViewBox, ExternalResourcesRequired, Stylable, LangSpace native "*SVGMarkerElement" {
+
+ factory MarkerElement() => _SvgElementFactoryProvider.createSvgElement_tag("marker");
static const int SVG_MARKERUNITS_STROKEWIDTH = 2;
@@ -3259,63 +3212,63 @@
static const int SVG_MARKER_ORIENT_UNKNOWN = 0;
- /** @domName SVGMarkerElement.markerHeight */
- final SVGAnimatedLength markerHeight;
+ /// @domName SVGMarkerElement.markerHeight; @docsEditable true
+ final AnimatedLength markerHeight;
- /** @domName SVGMarkerElement.markerUnits */
- final SVGAnimatedEnumeration markerUnits;
+ /// @domName SVGMarkerElement.markerUnits; @docsEditable true
+ final AnimatedEnumeration markerUnits;
- /** @domName SVGMarkerElement.markerWidth */
- final SVGAnimatedLength markerWidth;
+ /// @domName SVGMarkerElement.markerWidth; @docsEditable true
+ final AnimatedLength markerWidth;
- /** @domName SVGMarkerElement.orientAngle */
- final SVGAnimatedAngle orientAngle;
+ /// @domName SVGMarkerElement.orientAngle; @docsEditable true
+ final AnimatedAngle orientAngle;
- /** @domName SVGMarkerElement.orientType */
- final SVGAnimatedEnumeration orientType;
+ /// @domName SVGMarkerElement.orientType; @docsEditable true
+ final AnimatedEnumeration orientType;
- /** @domName SVGMarkerElement.refX */
- final SVGAnimatedLength refX;
+ /// @domName SVGMarkerElement.refX; @docsEditable true
+ final AnimatedLength refX;
- /** @domName SVGMarkerElement.refY */
- final SVGAnimatedLength refY;
+ /// @domName SVGMarkerElement.refY; @docsEditable true
+ final AnimatedLength refY;
- /** @domName SVGMarkerElement.setOrientToAngle */
- void setOrientToAngle(SVGAngle angle) native;
+ /// @domName SVGMarkerElement.setOrientToAngle; @docsEditable true
+ void setOrientToAngle(Angle angle) native;
- /** @domName SVGMarkerElement.setOrientToAuto */
+ /// @domName SVGMarkerElement.setOrientToAuto; @docsEditable true
void setOrientToAuto() native;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGFitToViewBox
- /** @domName SVGFitToViewBox.preserveAspectRatio */
- final SVGAnimatedPreserveAspectRatio preserveAspectRatio;
+ /// @domName SVGFitToViewBox.preserveAspectRatio; @docsEditable true
+ final AnimatedPreserveAspectRatio preserveAspectRatio;
- /** @domName SVGFitToViewBox.viewBox */
- final SVGAnimatedRect viewBox;
+ /// @domName SVGFitToViewBox.viewBox; @docsEditable true
+ final AnimatedRect viewBox;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3323,63 +3276,65 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGMaskElement
-class SVGMaskElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGExternalResourcesRequired native "*SVGMaskElement" {
+/// @domName SVGMaskElement; @docsEditable true
+class MaskElement extends SvgElement implements Tests, Stylable, ExternalResourcesRequired, LangSpace native "*SVGMaskElement" {
- /** @domName SVGMaskElement.height */
- final SVGAnimatedLength height;
+ factory MaskElement() => _SvgElementFactoryProvider.createSvgElement_tag("mask");
- /** @domName SVGMaskElement.maskContentUnits */
- final SVGAnimatedEnumeration maskContentUnits;
+ /// @domName SVGMaskElement.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGMaskElement.maskUnits */
- final SVGAnimatedEnumeration maskUnits;
+ /// @domName SVGMaskElement.maskContentUnits; @docsEditable true
+ final AnimatedEnumeration maskContentUnits;
- /** @domName SVGMaskElement.width */
- final SVGAnimatedLength width;
+ /// @domName SVGMaskElement.maskUnits; @docsEditable true
+ final AnimatedEnumeration maskUnits;
- /** @domName SVGMaskElement.x */
- final SVGAnimatedLength x;
+ /// @domName SVGMaskElement.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGMaskElement.y */
- final SVGAnimatedLength y;
+ /// @domName SVGMaskElement.x; @docsEditable true
+ final AnimatedLength x;
+
+ /// @domName SVGMaskElement.y; @docsEditable true
+ final AnimatedLength y;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGTests
- /** @domName SVGTests.requiredExtensions */
- final SVGStringList requiredExtensions;
+ /// @domName SVGTests.requiredExtensions; @docsEditable true
+ final StringList requiredExtensions;
- /** @domName SVGTests.requiredFeatures */
- final SVGStringList requiredFeatures;
+ /// @domName SVGTests.requiredFeatures; @docsEditable true
+ final StringList requiredFeatures;
- /** @domName SVGTests.systemLanguage */
- final SVGStringList systemLanguage;
+ /// @domName SVGTests.systemLanguage; @docsEditable true
+ final StringList systemLanguage;
- /** @domName SVGTests.hasExtension */
+ /// @domName SVGTests.hasExtension; @docsEditable true
bool hasExtension(String extension) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3387,85 +3342,85 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGMatrix
-class SVGMatrix native "*SVGMatrix" {
+/// @domName SVGMatrix; @docsEditable true
+class Matrix native "*SVGMatrix" {
- /** @domName SVGMatrix.a */
+ /// @domName SVGMatrix.a; @docsEditable true
num a;
- /** @domName SVGMatrix.b */
+ /// @domName SVGMatrix.b; @docsEditable true
num b;
- /** @domName SVGMatrix.c */
+ /// @domName SVGMatrix.c; @docsEditable true
num c;
- /** @domName SVGMatrix.d */
+ /// @domName SVGMatrix.d; @docsEditable true
num d;
- /** @domName SVGMatrix.e */
+ /// @domName SVGMatrix.e; @docsEditable true
num e;
- /** @domName SVGMatrix.f */
+ /// @domName SVGMatrix.f; @docsEditable true
num f;
- /** @domName SVGMatrix.flipX */
- SVGMatrix flipX() native;
+ /// @domName SVGMatrix.flipX; @docsEditable true
+ Matrix flipX() native;
- /** @domName SVGMatrix.flipY */
- SVGMatrix flipY() native;
+ /// @domName SVGMatrix.flipY; @docsEditable true
+ Matrix flipY() native;
- /** @domName SVGMatrix.inverse */
- SVGMatrix inverse() native;
+ /// @domName SVGMatrix.inverse; @docsEditable true
+ Matrix inverse() native;
- /** @domName SVGMatrix.multiply */
- SVGMatrix multiply(SVGMatrix secondMatrix) native;
+ /// @domName SVGMatrix.multiply; @docsEditable true
+ Matrix multiply(Matrix secondMatrix) native;
- /** @domName SVGMatrix.rotate */
- SVGMatrix rotate(num angle) native;
+ /// @domName SVGMatrix.rotate; @docsEditable true
+ Matrix rotate(num angle) native;
- /** @domName SVGMatrix.rotateFromVector */
- SVGMatrix rotateFromVector(num x, num y) native;
+ /// @domName SVGMatrix.rotateFromVector; @docsEditable true
+ Matrix rotateFromVector(num x, num y) native;
- /** @domName SVGMatrix.scale */
- SVGMatrix scale(num scaleFactor) native;
+ /// @domName SVGMatrix.scale; @docsEditable true
+ Matrix scale(num scaleFactor) native;
- /** @domName SVGMatrix.scaleNonUniform */
- SVGMatrix scaleNonUniform(num scaleFactorX, num scaleFactorY) native;
+ /// @domName SVGMatrix.scaleNonUniform; @docsEditable true
+ Matrix scaleNonUniform(num scaleFactorX, num scaleFactorY) native;
- /** @domName SVGMatrix.skewX */
- SVGMatrix skewX(num angle) native;
+ /// @domName SVGMatrix.skewX; @docsEditable true
+ Matrix skewX(num angle) native;
- /** @domName SVGMatrix.skewY */
- SVGMatrix skewY(num angle) native;
+ /// @domName SVGMatrix.skewY; @docsEditable true
+ Matrix skewY(num angle) native;
- /** @domName SVGMatrix.translate */
- SVGMatrix translate(num x, num y) native;
+ /// @domName SVGMatrix.translate; @docsEditable true
+ Matrix translate(num x, num y) native;
}
// Copyright (c) 2012, 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.
-/// @domName SVGMetadataElement
-class SVGMetadataElement extends SVGElement native "*SVGMetadataElement" {
+/// @domName SVGMetadataElement; @docsEditable true
+class MetadataElement extends SvgElement native "*SVGMetadataElement" {
}
// Copyright (c) 2012, 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.
-/// @domName SVGMissingGlyphElement
-class SVGMissingGlyphElement extends SVGElement native "*SVGMissingGlyphElement" {
+/// @domName SVGMissingGlyphElement; @docsEditable true
+class MissingGlyphElement extends SvgElement native "*SVGMissingGlyphElement" {
}
// Copyright (c) 2012, 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.
-/// @domName SVGNumber
-class SVGNumber native "*SVGNumber" {
+/// @domName SVGNumber; @docsEditable true
+class Number native "*SVGNumber" {
- /** @domName SVGNumber.value */
+ /// @domName SVGNumber.value; @docsEditable true
num value;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3473,79 +3428,81 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGNumberList
-class SVGNumberList implements JavaScriptIndexingBehavior, List<SVGNumber> native "*SVGNumberList" {
+/// @domName SVGNumberList; @docsEditable true
+class NumberList implements JavaScriptIndexingBehavior, List<Number> native "*SVGNumberList" {
- /** @domName SVGNumberList.numberOfItems */
+ /// @domName SVGNumberList.numberOfItems; @docsEditable true
final int numberOfItems;
- SVGNumber operator[](int index) => JS("SVGNumber", "#[#]", this, index);
+ Number operator[](int index) => JS("Number", "#[#]", this, index);
- void operator[]=(int index, SVGNumber value) {
+ void operator[]=(int index, Number value) {
throw new UnsupportedError("Cannot assign element of immutable List.");
}
- // -- start List<SVGNumber> mixins.
- // SVGNumber is the element type.
+ // -- start List<Number> mixins.
+ // Number is the element type.
- // From Iterable<SVGNumber>:
+ // From Iterable<Number>:
- Iterator<SVGNumber> iterator() {
+ Iterator<Number> iterator() {
// Note: NodeLists are not fixed size. And most probably length shouldn't
// be cached in both iterator _and_ forEach method. For now caching it
// for consistency.
- return new FixedSizeListIterator<SVGNumber>(this);
+ return new FixedSizeListIterator<Number>(this);
}
- // From Collection<SVGNumber>:
+ // From Collection<Number>:
- void add(SVGNumber value) {
+ void add(Number value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addLast(SVGNumber value) {
+ void addLast(Number value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addAll(Collection<SVGNumber> collection) {
+ void addAll(Collection<Number> collection) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- bool contains(SVGNumber element) => _Collections.contains(this, element);
+ bool contains(Number element) => _Collections.contains(this, element);
- void forEach(void f(SVGNumber element)) => _Collections.forEach(this, f);
+ void forEach(void f(Number element)) => _Collections.forEach(this, f);
- Collection map(f(SVGNumber element)) => _Collections.map(this, [], f);
+ Collection map(f(Number element)) => _Collections.map(this, [], f);
- Collection<SVGNumber> filter(bool f(SVGNumber element)) =>
- _Collections.filter(this, <SVGNumber>[], f);
+ Collection<Number> filter(bool f(Number element)) =>
+ _Collections.filter(this, <Number>[], f);
- bool every(bool f(SVGNumber element)) => _Collections.every(this, f);
+ bool every(bool f(Number element)) => _Collections.every(this, f);
- bool some(bool f(SVGNumber element)) => _Collections.some(this, f);
+ bool some(bool f(Number element)) => _Collections.some(this, f);
bool get isEmpty => this.length == 0;
- // From List<SVGNumber>:
+ // From List<Number>:
- void sort([Comparator<SVGNumber> compare = Comparable.compare]) {
+ void sort([Comparator<Number> compare = Comparable.compare]) {
throw new UnsupportedError("Cannot sort immutable List.");
}
- int indexOf(SVGNumber element, [int start = 0]) =>
+ int indexOf(Number element, [int start = 0]) =>
_Lists.indexOf(this, element, start, this.length);
- int lastIndexOf(SVGNumber element, [int start]) {
+ int lastIndexOf(Number element, [int start]) {
if (start == null) start = length - 1;
return _Lists.lastIndexOf(this, element, start);
}
- SVGNumber get last => this[length - 1];
+ Number get first => this[0];
- SVGNumber removeLast() {
+ Number get last => this[length - 1];
+
+ Number removeLast() {
throw new UnsupportedError("Cannot removeLast on immutable List.");
}
- void setRange(int start, int rangeLength, List<SVGNumber> from, [int startFrom]) {
+ void setRange(int start, int rangeLength, List<Number> from, [int startFrom]) {
throw new UnsupportedError("Cannot setRange on immutable List.");
}
@@ -3553,43 +3510,43 @@
throw new UnsupportedError("Cannot removeRange on immutable List.");
}
- void insertRange(int start, int rangeLength, [SVGNumber initialValue]) {
+ void insertRange(int start, int rangeLength, [Number initialValue]) {
throw new UnsupportedError("Cannot insertRange on immutable List.");
}
- List<SVGNumber> getRange(int start, int rangeLength) =>
- _Lists.getRange(this, start, rangeLength, <SVGNumber>[]);
+ List<Number> getRange(int start, int rangeLength) =>
+ _Lists.getRange(this, start, rangeLength, <Number>[]);
- // -- end List<SVGNumber> mixins.
+ // -- end List<Number> mixins.
- /** @domName SVGNumberList.appendItem */
- SVGNumber appendItem(SVGNumber item) native;
+ /// @domName SVGNumberList.appendItem; @docsEditable true
+ Number appendItem(Number item) native;
- /** @domName SVGNumberList.clear */
+ /// @domName SVGNumberList.clear; @docsEditable true
void clear() native;
- /** @domName SVGNumberList.getItem */
- SVGNumber getItem(int index) native;
+ /// @domName SVGNumberList.getItem; @docsEditable true
+ Number getItem(int index) native;
- /** @domName SVGNumberList.initialize */
- SVGNumber initialize(SVGNumber item) native;
+ /// @domName SVGNumberList.initialize; @docsEditable true
+ Number initialize(Number item) native;
- /** @domName SVGNumberList.insertItemBefore */
- SVGNumber insertItemBefore(SVGNumber item, int index) native;
+ /// @domName SVGNumberList.insertItemBefore; @docsEditable true
+ Number insertItemBefore(Number item, int index) native;
- /** @domName SVGNumberList.removeItem */
- SVGNumber removeItem(int index) native;
+ /// @domName SVGNumberList.removeItem; @docsEditable true
+ Number removeItem(int index) native;
- /** @domName SVGNumberList.replaceItem */
- SVGNumber replaceItem(SVGNumber item, int index) native;
+ /// @domName SVGNumberList.replaceItem; @docsEditable true
+ Number replaceItem(Number item, int index) native;
}
// Copyright (c) 2012, 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.
-/// @domName SVGPaint
-class SVGPaint extends SVGColor native "*SVGPaint" {
+/// @domName SVGPaint; @docsEditable true
+class Paint extends Color native "*SVGPaint" {
static const int SVG_PAINTTYPE_CURRENTCOLOR = 102;
@@ -3611,16 +3568,16 @@
static const int SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR = 106;
- /** @domName SVGPaint.paintType */
+ /// @domName SVGPaint.paintType; @docsEditable true
final int paintType;
- /** @domName SVGPaint.uri */
+ /// @domName SVGPaint.uri; @docsEditable true
final String uri;
- /** @domName SVGPaint.setPaint */
+ /// @domName SVGPaint.setPaint; @docsEditable true
void setPaint(int paintType, String uri, String rgbColor, String iccColor) native;
- /** @domName SVGPaint.setUri */
+ /// @domName SVGPaint.setUri; @docsEditable true
void setUri(String uri) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3628,160 +3585,162 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGPathElement
-class SVGPathElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired native "*SVGPathElement" {
+/// @domName SVGPathElement; @docsEditable true
+class PathElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace native "*SVGPathElement" {
- /** @domName SVGPathElement.animatedNormalizedPathSegList */
- final SVGPathSegList animatedNormalizedPathSegList;
+ factory PathElement() => _SvgElementFactoryProvider.createSvgElement_tag("path");
- /** @domName SVGPathElement.animatedPathSegList */
- final SVGPathSegList animatedPathSegList;
+ /// @domName SVGPathElement.animatedNormalizedPathSegList; @docsEditable true
+ final PathSegList animatedNormalizedPathSegList;
- /** @domName SVGPathElement.normalizedPathSegList */
- final SVGPathSegList normalizedPathSegList;
+ /// @domName SVGPathElement.animatedPathSegList; @docsEditable true
+ final PathSegList animatedPathSegList;
- /** @domName SVGPathElement.pathLength */
- final SVGAnimatedNumber pathLength;
+ /// @domName SVGPathElement.normalizedPathSegList; @docsEditable true
+ final PathSegList normalizedPathSegList;
- /** @domName SVGPathElement.pathSegList */
- final SVGPathSegList pathSegList;
+ /// @domName SVGPathElement.pathLength; @docsEditable true
+ final AnimatedNumber pathLength;
- /** @domName SVGPathElement.createSVGPathSegArcAbs */
- SVGPathSegArcAbs createSVGPathSegArcAbs(num x, num y, num r1, num r2, num angle, bool largeArcFlag, bool sweepFlag) native;
+ /// @domName SVGPathElement.pathSegList; @docsEditable true
+ final PathSegList pathSegList;
- /** @domName SVGPathElement.createSVGPathSegArcRel */
- SVGPathSegArcRel createSVGPathSegArcRel(num x, num y, num r1, num r2, num angle, bool largeArcFlag, bool sweepFlag) native;
+ /// @domName SVGPathElement.createSVGPathSegArcAbs; @docsEditable true
+ PathSegArcAbs createSVGPathSegArcAbs(num x, num y, num r1, num r2, num angle, bool largeArcFlag, bool sweepFlag) native;
- /** @domName SVGPathElement.createSVGPathSegClosePath */
- SVGPathSegClosePath createSVGPathSegClosePath() native;
+ /// @domName SVGPathElement.createSVGPathSegArcRel; @docsEditable true
+ PathSegArcRel createSVGPathSegArcRel(num x, num y, num r1, num r2, num angle, bool largeArcFlag, bool sweepFlag) native;
- /** @domName SVGPathElement.createSVGPathSegCurvetoCubicAbs */
- SVGPathSegCurvetoCubicAbs createSVGPathSegCurvetoCubicAbs(num x, num y, num x1, num y1, num x2, num y2) native;
+ /// @domName SVGPathElement.createSVGPathSegClosePath; @docsEditable true
+ PathSegClosePath createSVGPathSegClosePath() native;
- /** @domName SVGPathElement.createSVGPathSegCurvetoCubicRel */
- SVGPathSegCurvetoCubicRel createSVGPathSegCurvetoCubicRel(num x, num y, num x1, num y1, num x2, num y2) native;
+ /// @domName SVGPathElement.createSVGPathSegCurvetoCubicAbs; @docsEditable true
+ PathSegCurvetoCubicAbs createSVGPathSegCurvetoCubicAbs(num x, num y, num x1, num y1, num x2, num y2) native;
- /** @domName SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs */
- SVGPathSegCurvetoCubicSmoothAbs createSVGPathSegCurvetoCubicSmoothAbs(num x, num y, num x2, num y2) native;
+ /// @domName SVGPathElement.createSVGPathSegCurvetoCubicRel; @docsEditable true
+ PathSegCurvetoCubicRel createSVGPathSegCurvetoCubicRel(num x, num y, num x1, num y1, num x2, num y2) native;
- /** @domName SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel */
- SVGPathSegCurvetoCubicSmoothRel createSVGPathSegCurvetoCubicSmoothRel(num x, num y, num x2, num y2) native;
+ /// @domName SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs; @docsEditable true
+ PathSegCurvetoCubicSmoothAbs createSVGPathSegCurvetoCubicSmoothAbs(num x, num y, num x2, num y2) native;
- /** @domName SVGPathElement.createSVGPathSegCurvetoQuadraticAbs */
- SVGPathSegCurvetoQuadraticAbs createSVGPathSegCurvetoQuadraticAbs(num x, num y, num x1, num y1) native;
+ /// @domName SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel; @docsEditable true
+ PathSegCurvetoCubicSmoothRel createSVGPathSegCurvetoCubicSmoothRel(num x, num y, num x2, num y2) native;
- /** @domName SVGPathElement.createSVGPathSegCurvetoQuadraticRel */
- SVGPathSegCurvetoQuadraticRel createSVGPathSegCurvetoQuadraticRel(num x, num y, num x1, num y1) native;
+ /// @domName SVGPathElement.createSVGPathSegCurvetoQuadraticAbs; @docsEditable true
+ PathSegCurvetoQuadraticAbs createSVGPathSegCurvetoQuadraticAbs(num x, num y, num x1, num y1) native;
- /** @domName SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs */
- SVGPathSegCurvetoQuadraticSmoothAbs createSVGPathSegCurvetoQuadraticSmoothAbs(num x, num y) native;
+ /// @domName SVGPathElement.createSVGPathSegCurvetoQuadraticRel; @docsEditable true
+ PathSegCurvetoQuadraticRel createSVGPathSegCurvetoQuadraticRel(num x, num y, num x1, num y1) native;
- /** @domName SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel */
- SVGPathSegCurvetoQuadraticSmoothRel createSVGPathSegCurvetoQuadraticSmoothRel(num x, num y) native;
+ /// @domName SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs; @docsEditable true
+ PathSegCurvetoQuadraticSmoothAbs createSVGPathSegCurvetoQuadraticSmoothAbs(num x, num y) native;
- /** @domName SVGPathElement.createSVGPathSegLinetoAbs */
- SVGPathSegLinetoAbs createSVGPathSegLinetoAbs(num x, num y) native;
+ /// @domName SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel; @docsEditable true
+ PathSegCurvetoQuadraticSmoothRel createSVGPathSegCurvetoQuadraticSmoothRel(num x, num y) native;
- /** @domName SVGPathElement.createSVGPathSegLinetoHorizontalAbs */
- SVGPathSegLinetoHorizontalAbs createSVGPathSegLinetoHorizontalAbs(num x) native;
+ /// @domName SVGPathElement.createSVGPathSegLinetoAbs; @docsEditable true
+ PathSegLinetoAbs createSVGPathSegLinetoAbs(num x, num y) native;
- /** @domName SVGPathElement.createSVGPathSegLinetoHorizontalRel */
- SVGPathSegLinetoHorizontalRel createSVGPathSegLinetoHorizontalRel(num x) native;
+ /// @domName SVGPathElement.createSVGPathSegLinetoHorizontalAbs; @docsEditable true
+ PathSegLinetoHorizontalAbs createSVGPathSegLinetoHorizontalAbs(num x) native;
- /** @domName SVGPathElement.createSVGPathSegLinetoRel */
- SVGPathSegLinetoRel createSVGPathSegLinetoRel(num x, num y) native;
+ /// @domName SVGPathElement.createSVGPathSegLinetoHorizontalRel; @docsEditable true
+ PathSegLinetoHorizontalRel createSVGPathSegLinetoHorizontalRel(num x) native;
- /** @domName SVGPathElement.createSVGPathSegLinetoVerticalAbs */
- SVGPathSegLinetoVerticalAbs createSVGPathSegLinetoVerticalAbs(num y) native;
+ /// @domName SVGPathElement.createSVGPathSegLinetoRel; @docsEditable true
+ PathSegLinetoRel createSVGPathSegLinetoRel(num x, num y) native;
- /** @domName SVGPathElement.createSVGPathSegLinetoVerticalRel */
- SVGPathSegLinetoVerticalRel createSVGPathSegLinetoVerticalRel(num y) native;
+ /// @domName SVGPathElement.createSVGPathSegLinetoVerticalAbs; @docsEditable true
+ PathSegLinetoVerticalAbs createSVGPathSegLinetoVerticalAbs(num y) native;
- /** @domName SVGPathElement.createSVGPathSegMovetoAbs */
- SVGPathSegMovetoAbs createSVGPathSegMovetoAbs(num x, num y) native;
+ /// @domName SVGPathElement.createSVGPathSegLinetoVerticalRel; @docsEditable true
+ PathSegLinetoVerticalRel createSVGPathSegLinetoVerticalRel(num y) native;
- /** @domName SVGPathElement.createSVGPathSegMovetoRel */
- SVGPathSegMovetoRel createSVGPathSegMovetoRel(num x, num y) native;
+ /// @domName SVGPathElement.createSVGPathSegMovetoAbs; @docsEditable true
+ PathSegMovetoAbs createSVGPathSegMovetoAbs(num x, num y) native;
- /** @domName SVGPathElement.getPathSegAtLength */
+ /// @domName SVGPathElement.createSVGPathSegMovetoRel; @docsEditable true
+ PathSegMovetoRel createSVGPathSegMovetoRel(num x, num y) native;
+
+ /// @domName SVGPathElement.getPathSegAtLength; @docsEditable true
int getPathSegAtLength(num distance) native;
- /** @domName SVGPathElement.getPointAtLength */
- SVGPoint getPointAtLength(num distance) native;
+ /// @domName SVGPathElement.getPointAtLength; @docsEditable true
+ Point getPointAtLength(num distance) native;
- /** @domName SVGPathElement.getTotalLength */
+ /// @domName SVGPathElement.getTotalLength; @docsEditable true
num getTotalLength() native;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGLocatable
- /** @domName SVGLocatable.farthestViewportElement */
- final SVGElement farthestViewportElement;
+ /// @domName SVGLocatable.farthestViewportElement; @docsEditable true
+ final SvgElement farthestViewportElement;
- /** @domName SVGLocatable.nearestViewportElement */
- final SVGElement nearestViewportElement;
+ /// @domName SVGLocatable.nearestViewportElement; @docsEditable true
+ final SvgElement nearestViewportElement;
- /** @domName SVGLocatable.getBBox */
- SVGRect getBBox() native;
+ /// @domName SVGLocatable.getBBox; @docsEditable true
+ Rect getBBox() native;
- /** @domName SVGLocatable.getCTM */
- SVGMatrix getCTM() native;
+ /// @domName SVGLocatable.getCTM; @docsEditable true
+ Matrix getCTM() native;
- /** @domName SVGLocatable.getScreenCTM */
- SVGMatrix getScreenCTM() native;
+ /// @domName SVGLocatable.getScreenCTM; @docsEditable true
+ Matrix getScreenCTM() native;
- /** @domName SVGLocatable.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native;
+ /// @domName SVGLocatable.getTransformToElement; @docsEditable true
+ Matrix getTransformToElement(SvgElement element) native;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGTests
- /** @domName SVGTests.requiredExtensions */
- final SVGStringList requiredExtensions;
+ /// @domName SVGTests.requiredExtensions; @docsEditable true
+ final StringList requiredExtensions;
- /** @domName SVGTests.requiredFeatures */
- final SVGStringList requiredFeatures;
+ /// @domName SVGTests.requiredFeatures; @docsEditable true
+ final StringList requiredFeatures;
- /** @domName SVGTests.systemLanguage */
- final SVGStringList systemLanguage;
+ /// @domName SVGTests.systemLanguage; @docsEditable true
+ final StringList systemLanguage;
- /** @domName SVGTests.hasExtension */
+ /// @domName SVGTests.hasExtension; @docsEditable true
bool hasExtension(String extension) native;
// From SVGTransformable
- /** @domName SVGTransformable.transform */
- final SVGAnimatedTransformList transform;
+ /// @domName SVGTransformable.transform; @docsEditable true
+ final AnimatedTransformList transform;
}
// Copyright (c) 2012, 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.
-/// @domName SVGPathSeg
-class SVGPathSeg native "*SVGPathSeg" {
+/// @domName SVGPathSeg; @docsEditable true
+class PathSeg native "*SVGPathSeg" {
static const int PATHSEG_ARC_ABS = 10;
@@ -3823,10 +3782,10 @@
static const int PATHSEG_UNKNOWN = 0;
- /** @domName SVGPathSeg.pathSegType */
+ /// @domName SVGPathSeg.pathSegType; @docsEditable true
final int pathSegType;
- /** @domName SVGPathSeg.pathSegTypeAsLetter */
+ /// @domName SVGPathSeg.pathSegTypeAsLetter; @docsEditable true
final String pathSegTypeAsLetter;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3834,28 +3793,28 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGPathSegArcAbs
-class SVGPathSegArcAbs extends SVGPathSeg native "*SVGPathSegArcAbs" {
+/// @domName SVGPathSegArcAbs; @docsEditable true
+class PathSegArcAbs extends PathSeg native "*SVGPathSegArcAbs" {
- /** @domName SVGPathSegArcAbs.angle */
+ /// @domName SVGPathSegArcAbs.angle; @docsEditable true
num angle;
- /** @domName SVGPathSegArcAbs.largeArcFlag */
+ /// @domName SVGPathSegArcAbs.largeArcFlag; @docsEditable true
bool largeArcFlag;
- /** @domName SVGPathSegArcAbs.r1 */
+ /// @domName SVGPathSegArcAbs.r1; @docsEditable true
num r1;
- /** @domName SVGPathSegArcAbs.r2 */
+ /// @domName SVGPathSegArcAbs.r2; @docsEditable true
num r2;
- /** @domName SVGPathSegArcAbs.sweepFlag */
+ /// @domName SVGPathSegArcAbs.sweepFlag; @docsEditable true
bool sweepFlag;
- /** @domName SVGPathSegArcAbs.x */
+ /// @domName SVGPathSegArcAbs.x; @docsEditable true
num x;
- /** @domName SVGPathSegArcAbs.y */
+ /// @domName SVGPathSegArcAbs.y; @docsEditable true
num y;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3863,28 +3822,28 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGPathSegArcRel
-class SVGPathSegArcRel extends SVGPathSeg native "*SVGPathSegArcRel" {
+/// @domName SVGPathSegArcRel; @docsEditable true
+class PathSegArcRel extends PathSeg native "*SVGPathSegArcRel" {
- /** @domName SVGPathSegArcRel.angle */
+ /// @domName SVGPathSegArcRel.angle; @docsEditable true
num angle;
- /** @domName SVGPathSegArcRel.largeArcFlag */
+ /// @domName SVGPathSegArcRel.largeArcFlag; @docsEditable true
bool largeArcFlag;
- /** @domName SVGPathSegArcRel.r1 */
+ /// @domName SVGPathSegArcRel.r1; @docsEditable true
num r1;
- /** @domName SVGPathSegArcRel.r2 */
+ /// @domName SVGPathSegArcRel.r2; @docsEditable true
num r2;
- /** @domName SVGPathSegArcRel.sweepFlag */
+ /// @domName SVGPathSegArcRel.sweepFlag; @docsEditable true
bool sweepFlag;
- /** @domName SVGPathSegArcRel.x */
+ /// @domName SVGPathSegArcRel.x; @docsEditable true
num x;
- /** @domName SVGPathSegArcRel.y */
+ /// @domName SVGPathSegArcRel.y; @docsEditable true
num y;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3892,33 +3851,33 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGPathSegClosePath
-class SVGPathSegClosePath extends SVGPathSeg native "*SVGPathSegClosePath" {
+/// @domName SVGPathSegClosePath; @docsEditable true
+class PathSegClosePath extends PathSeg native "*SVGPathSegClosePath" {
}
// Copyright (c) 2012, 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.
-/// @domName SVGPathSegCurvetoCubicAbs
-class SVGPathSegCurvetoCubicAbs extends SVGPathSeg native "*SVGPathSegCurvetoCubicAbs" {
+/// @domName SVGPathSegCurvetoCubicAbs; @docsEditable true
+class PathSegCurvetoCubicAbs extends PathSeg native "*SVGPathSegCurvetoCubicAbs" {
- /** @domName SVGPathSegCurvetoCubicAbs.x */
+ /// @domName SVGPathSegCurvetoCubicAbs.x; @docsEditable true
num x;
- /** @domName SVGPathSegCurvetoCubicAbs.x1 */
+ /// @domName SVGPathSegCurvetoCubicAbs.x1; @docsEditable true
num x1;
- /** @domName SVGPathSegCurvetoCubicAbs.x2 */
+ /// @domName SVGPathSegCurvetoCubicAbs.x2; @docsEditable true
num x2;
- /** @domName SVGPathSegCurvetoCubicAbs.y */
+ /// @domName SVGPathSegCurvetoCubicAbs.y; @docsEditable true
num y;
- /** @domName SVGPathSegCurvetoCubicAbs.y1 */
+ /// @domName SVGPathSegCurvetoCubicAbs.y1; @docsEditable true
num y1;
- /** @domName SVGPathSegCurvetoCubicAbs.y2 */
+ /// @domName SVGPathSegCurvetoCubicAbs.y2; @docsEditable true
num y2;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3926,25 +3885,25 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGPathSegCurvetoCubicRel
-class SVGPathSegCurvetoCubicRel extends SVGPathSeg native "*SVGPathSegCurvetoCubicRel" {
+/// @domName SVGPathSegCurvetoCubicRel; @docsEditable true
+class PathSegCurvetoCubicRel extends PathSeg native "*SVGPathSegCurvetoCubicRel" {
- /** @domName SVGPathSegCurvetoCubicRel.x */
+ /// @domName SVGPathSegCurvetoCubicRel.x; @docsEditable true
num x;
- /** @domName SVGPathSegCurvetoCubicRel.x1 */
+ /// @domName SVGPathSegCurvetoCubicRel.x1; @docsEditable true
num x1;
- /** @domName SVGPathSegCurvetoCubicRel.x2 */
+ /// @domName SVGPathSegCurvetoCubicRel.x2; @docsEditable true
num x2;
- /** @domName SVGPathSegCurvetoCubicRel.y */
+ /// @domName SVGPathSegCurvetoCubicRel.y; @docsEditable true
num y;
- /** @domName SVGPathSegCurvetoCubicRel.y1 */
+ /// @domName SVGPathSegCurvetoCubicRel.y1; @docsEditable true
num y1;
- /** @domName SVGPathSegCurvetoCubicRel.y2 */
+ /// @domName SVGPathSegCurvetoCubicRel.y2; @docsEditable true
num y2;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3952,19 +3911,19 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGPathSegCurvetoCubicSmoothAbs
-class SVGPathSegCurvetoCubicSmoothAbs extends SVGPathSeg native "*SVGPathSegCurvetoCubicSmoothAbs" {
+/// @domName SVGPathSegCurvetoCubicSmoothAbs; @docsEditable true
+class PathSegCurvetoCubicSmoothAbs extends PathSeg native "*SVGPathSegCurvetoCubicSmoothAbs" {
- /** @domName SVGPathSegCurvetoCubicSmoothAbs.x */
+ /// @domName SVGPathSegCurvetoCubicSmoothAbs.x; @docsEditable true
num x;
- /** @domName SVGPathSegCurvetoCubicSmoothAbs.x2 */
+ /// @domName SVGPathSegCurvetoCubicSmoothAbs.x2; @docsEditable true
num x2;
- /** @domName SVGPathSegCurvetoCubicSmoothAbs.y */
+ /// @domName SVGPathSegCurvetoCubicSmoothAbs.y; @docsEditable true
num y;
- /** @domName SVGPathSegCurvetoCubicSmoothAbs.y2 */
+ /// @domName SVGPathSegCurvetoCubicSmoothAbs.y2; @docsEditable true
num y2;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3972,19 +3931,19 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGPathSegCurvetoCubicSmoothRel
-class SVGPathSegCurvetoCubicSmoothRel extends SVGPathSeg native "*SVGPathSegCurvetoCubicSmoothRel" {
+/// @domName SVGPathSegCurvetoCubicSmoothRel; @docsEditable true
+class PathSegCurvetoCubicSmoothRel extends PathSeg native "*SVGPathSegCurvetoCubicSmoothRel" {
- /** @domName SVGPathSegCurvetoCubicSmoothRel.x */
+ /// @domName SVGPathSegCurvetoCubicSmoothRel.x; @docsEditable true
num x;
- /** @domName SVGPathSegCurvetoCubicSmoothRel.x2 */
+ /// @domName SVGPathSegCurvetoCubicSmoothRel.x2; @docsEditable true
num x2;
- /** @domName SVGPathSegCurvetoCubicSmoothRel.y */
+ /// @domName SVGPathSegCurvetoCubicSmoothRel.y; @docsEditable true
num y;
- /** @domName SVGPathSegCurvetoCubicSmoothRel.y2 */
+ /// @domName SVGPathSegCurvetoCubicSmoothRel.y2; @docsEditable true
num y2;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3992,19 +3951,19 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGPathSegCurvetoQuadraticAbs
-class SVGPathSegCurvetoQuadraticAbs extends SVGPathSeg native "*SVGPathSegCurvetoQuadraticAbs" {
+/// @domName SVGPathSegCurvetoQuadraticAbs; @docsEditable true
+class PathSegCurvetoQuadraticAbs extends PathSeg native "*SVGPathSegCurvetoQuadraticAbs" {
- /** @domName SVGPathSegCurvetoQuadraticAbs.x */
+ /// @domName SVGPathSegCurvetoQuadraticAbs.x; @docsEditable true
num x;
- /** @domName SVGPathSegCurvetoQuadraticAbs.x1 */
+ /// @domName SVGPathSegCurvetoQuadraticAbs.x1; @docsEditable true
num x1;
- /** @domName SVGPathSegCurvetoQuadraticAbs.y */
+ /// @domName SVGPathSegCurvetoQuadraticAbs.y; @docsEditable true
num y;
- /** @domName SVGPathSegCurvetoQuadraticAbs.y1 */
+ /// @domName SVGPathSegCurvetoQuadraticAbs.y1; @docsEditable true
num y1;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4012,19 +3971,19 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGPathSegCurvetoQuadraticRel
-class SVGPathSegCurvetoQuadraticRel extends SVGPathSeg native "*SVGPathSegCurvetoQuadraticRel" {
+/// @domName SVGPathSegCurvetoQuadraticRel; @docsEditable true
+class PathSegCurvetoQuadraticRel extends PathSeg native "*SVGPathSegCurvetoQuadraticRel" {
- /** @domName SVGPathSegCurvetoQuadraticRel.x */
+ /// @domName SVGPathSegCurvetoQuadraticRel.x; @docsEditable true
num x;
- /** @domName SVGPathSegCurvetoQuadraticRel.x1 */
+ /// @domName SVGPathSegCurvetoQuadraticRel.x1; @docsEditable true
num x1;
- /** @domName SVGPathSegCurvetoQuadraticRel.y */
+ /// @domName SVGPathSegCurvetoQuadraticRel.y; @docsEditable true
num y;
- /** @domName SVGPathSegCurvetoQuadraticRel.y1 */
+ /// @domName SVGPathSegCurvetoQuadraticRel.y1; @docsEditable true
num y1;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4032,13 +3991,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGPathSegCurvetoQuadraticSmoothAbs
-class SVGPathSegCurvetoQuadraticSmoothAbs extends SVGPathSeg native "*SVGPathSegCurvetoQuadraticSmoothAbs" {
+/// @domName SVGPathSegCurvetoQuadraticSmoothAbs; @docsEditable true
+class PathSegCurvetoQuadraticSmoothAbs extends PathSeg native "*SVGPathSegCurvetoQuadraticSmoothAbs" {
- /** @domName SVGPathSegCurvetoQuadraticSmoothAbs.x */
+ /// @domName SVGPathSegCurvetoQuadraticSmoothAbs.x; @docsEditable true
num x;
- /** @domName SVGPathSegCurvetoQuadraticSmoothAbs.y */
+ /// @domName SVGPathSegCurvetoQuadraticSmoothAbs.y; @docsEditable true
num y;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4046,13 +4005,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGPathSegCurvetoQuadraticSmoothRel
-class SVGPathSegCurvetoQuadraticSmoothRel extends SVGPathSeg native "*SVGPathSegCurvetoQuadraticSmoothRel" {
+/// @domName SVGPathSegCurvetoQuadraticSmoothRel; @docsEditable true
+class PathSegCurvetoQuadraticSmoothRel extends PathSeg native "*SVGPathSegCurvetoQuadraticSmoothRel" {
- /** @domName SVGPathSegCurvetoQuadraticSmoothRel.x */
+ /// @domName SVGPathSegCurvetoQuadraticSmoothRel.x; @docsEditable true
num x;
- /** @domName SVGPathSegCurvetoQuadraticSmoothRel.y */
+ /// @domName SVGPathSegCurvetoQuadraticSmoothRel.y; @docsEditable true
num y;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4060,13 +4019,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGPathSegLinetoAbs
-class SVGPathSegLinetoAbs extends SVGPathSeg native "*SVGPathSegLinetoAbs" {
+/// @domName SVGPathSegLinetoAbs; @docsEditable true
+class PathSegLinetoAbs extends PathSeg native "*SVGPathSegLinetoAbs" {
- /** @domName SVGPathSegLinetoAbs.x */
+ /// @domName SVGPathSegLinetoAbs.x; @docsEditable true
num x;
- /** @domName SVGPathSegLinetoAbs.y */
+ /// @domName SVGPathSegLinetoAbs.y; @docsEditable true
num y;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4074,10 +4033,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGPathSegLinetoHorizontalAbs
-class SVGPathSegLinetoHorizontalAbs extends SVGPathSeg native "*SVGPathSegLinetoHorizontalAbs" {
+/// @domName SVGPathSegLinetoHorizontalAbs; @docsEditable true
+class PathSegLinetoHorizontalAbs extends PathSeg native "*SVGPathSegLinetoHorizontalAbs" {
- /** @domName SVGPathSegLinetoHorizontalAbs.x */
+ /// @domName SVGPathSegLinetoHorizontalAbs.x; @docsEditable true
num x;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4085,10 +4044,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGPathSegLinetoHorizontalRel
-class SVGPathSegLinetoHorizontalRel extends SVGPathSeg native "*SVGPathSegLinetoHorizontalRel" {
+/// @domName SVGPathSegLinetoHorizontalRel; @docsEditable true
+class PathSegLinetoHorizontalRel extends PathSeg native "*SVGPathSegLinetoHorizontalRel" {
- /** @domName SVGPathSegLinetoHorizontalRel.x */
+ /// @domName SVGPathSegLinetoHorizontalRel.x; @docsEditable true
num x;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4096,13 +4055,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGPathSegLinetoRel
-class SVGPathSegLinetoRel extends SVGPathSeg native "*SVGPathSegLinetoRel" {
+/// @domName SVGPathSegLinetoRel; @docsEditable true
+class PathSegLinetoRel extends PathSeg native "*SVGPathSegLinetoRel" {
- /** @domName SVGPathSegLinetoRel.x */
+ /// @domName SVGPathSegLinetoRel.x; @docsEditable true
num x;
- /** @domName SVGPathSegLinetoRel.y */
+ /// @domName SVGPathSegLinetoRel.y; @docsEditable true
num y;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4110,10 +4069,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGPathSegLinetoVerticalAbs
-class SVGPathSegLinetoVerticalAbs extends SVGPathSeg native "*SVGPathSegLinetoVerticalAbs" {
+/// @domName SVGPathSegLinetoVerticalAbs; @docsEditable true
+class PathSegLinetoVerticalAbs extends PathSeg native "*SVGPathSegLinetoVerticalAbs" {
- /** @domName SVGPathSegLinetoVerticalAbs.y */
+ /// @domName SVGPathSegLinetoVerticalAbs.y; @docsEditable true
num y;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4121,10 +4080,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGPathSegLinetoVerticalRel
-class SVGPathSegLinetoVerticalRel extends SVGPathSeg native "*SVGPathSegLinetoVerticalRel" {
+/// @domName SVGPathSegLinetoVerticalRel; @docsEditable true
+class PathSegLinetoVerticalRel extends PathSeg native "*SVGPathSegLinetoVerticalRel" {
- /** @domName SVGPathSegLinetoVerticalRel.y */
+ /// @domName SVGPathSegLinetoVerticalRel.y; @docsEditable true
num y;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4132,79 +4091,81 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGPathSegList
-class SVGPathSegList implements JavaScriptIndexingBehavior, List<SVGPathSeg> native "*SVGPathSegList" {
+/// @domName SVGPathSegList; @docsEditable true
+class PathSegList implements JavaScriptIndexingBehavior, List<PathSeg> native "*SVGPathSegList" {
- /** @domName SVGPathSegList.numberOfItems */
+ /// @domName SVGPathSegList.numberOfItems; @docsEditable true
final int numberOfItems;
- SVGPathSeg operator[](int index) => JS("SVGPathSeg", "#[#]", this, index);
+ PathSeg operator[](int index) => JS("PathSeg", "#[#]", this, index);
- void operator[]=(int index, SVGPathSeg value) {
+ void operator[]=(int index, PathSeg value) {
throw new UnsupportedError("Cannot assign element of immutable List.");
}
- // -- start List<SVGPathSeg> mixins.
- // SVGPathSeg is the element type.
+ // -- start List<PathSeg> mixins.
+ // PathSeg is the element type.
- // From Iterable<SVGPathSeg>:
+ // From Iterable<PathSeg>:
- Iterator<SVGPathSeg> iterator() {
+ Iterator<PathSeg> iterator() {
// Note: NodeLists are not fixed size. And most probably length shouldn't
// be cached in both iterator _and_ forEach method. For now caching it
// for consistency.
- return new FixedSizeListIterator<SVGPathSeg>(this);
+ return new FixedSizeListIterator<PathSeg>(this);
}
- // From Collection<SVGPathSeg>:
+ // From Collection<PathSeg>:
- void add(SVGPathSeg value) {
+ void add(PathSeg value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addLast(SVGPathSeg value) {
+ void addLast(PathSeg value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addAll(Collection<SVGPathSeg> collection) {
+ void addAll(Collection<PathSeg> collection) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- bool contains(SVGPathSeg element) => _Collections.contains(this, element);
+ bool contains(PathSeg element) => _Collections.contains(this, element);
- void forEach(void f(SVGPathSeg element)) => _Collections.forEach(this, f);
+ void forEach(void f(PathSeg element)) => _Collections.forEach(this, f);
- Collection map(f(SVGPathSeg element)) => _Collections.map(this, [], f);
+ Collection map(f(PathSeg element)) => _Collections.map(this, [], f);
- Collection<SVGPathSeg> filter(bool f(SVGPathSeg element)) =>
- _Collections.filter(this, <SVGPathSeg>[], f);
+ Collection<PathSeg> filter(bool f(PathSeg element)) =>
+ _Collections.filter(this, <PathSeg>[], f);
- bool every(bool f(SVGPathSeg element)) => _Collections.every(this, f);
+ bool every(bool f(PathSeg element)) => _Collections.every(this, f);
- bool some(bool f(SVGPathSeg element)) => _Collections.some(this, f);
+ bool some(bool f(PathSeg element)) => _Collections.some(this, f);
bool get isEmpty => this.length == 0;
- // From List<SVGPathSeg>:
+ // From List<PathSeg>:
- void sort([Comparator<SVGPathSeg> compare = Comparable.compare]) {
+ void sort([Comparator<PathSeg> compare = Comparable.compare]) {
throw new UnsupportedError("Cannot sort immutable List.");
}
- int indexOf(SVGPathSeg element, [int start = 0]) =>
+ int indexOf(PathSeg element, [int start = 0]) =>
_Lists.indexOf(this, element, start, this.length);
- int lastIndexOf(SVGPathSeg element, [int start]) {
+ int lastIndexOf(PathSeg element, [int start]) {
if (start == null) start = length - 1;
return _Lists.lastIndexOf(this, element, start);
}
- SVGPathSeg get last => this[length - 1];
+ PathSeg get first => this[0];
- SVGPathSeg removeLast() {
+ PathSeg get last => this[length - 1];
+
+ PathSeg removeLast() {
throw new UnsupportedError("Cannot removeLast on immutable List.");
}
- void setRange(int start, int rangeLength, List<SVGPathSeg> from, [int startFrom]) {
+ void setRange(int start, int rangeLength, List<PathSeg> from, [int startFrom]) {
throw new UnsupportedError("Cannot setRange on immutable List.");
}
@@ -4212,48 +4173,48 @@
throw new UnsupportedError("Cannot removeRange on immutable List.");
}
- void insertRange(int start, int rangeLength, [SVGPathSeg initialValue]) {
+ void insertRange(int start, int rangeLength, [PathSeg initialValue]) {
throw new UnsupportedError("Cannot insertRange on immutable List.");
}
- List<SVGPathSeg> getRange(int start, int rangeLength) =>
- _Lists.getRange(this, start, rangeLength, <SVGPathSeg>[]);
+ List<PathSeg> getRange(int start, int rangeLength) =>
+ _Lists.getRange(this, start, rangeLength, <PathSeg>[]);
- // -- end List<SVGPathSeg> mixins.
+ // -- end List<PathSeg> mixins.
- /** @domName SVGPathSegList.appendItem */
- SVGPathSeg appendItem(SVGPathSeg newItem) native;
+ /// @domName SVGPathSegList.appendItem; @docsEditable true
+ PathSeg appendItem(PathSeg newItem) native;
- /** @domName SVGPathSegList.clear */
+ /// @domName SVGPathSegList.clear; @docsEditable true
void clear() native;
- /** @domName SVGPathSegList.getItem */
- SVGPathSeg getItem(int index) native;
+ /// @domName SVGPathSegList.getItem; @docsEditable true
+ PathSeg getItem(int index) native;
- /** @domName SVGPathSegList.initialize */
- SVGPathSeg initialize(SVGPathSeg newItem) native;
+ /// @domName SVGPathSegList.initialize; @docsEditable true
+ PathSeg initialize(PathSeg newItem) native;
- /** @domName SVGPathSegList.insertItemBefore */
- SVGPathSeg insertItemBefore(SVGPathSeg newItem, int index) native;
+ /// @domName SVGPathSegList.insertItemBefore; @docsEditable true
+ PathSeg insertItemBefore(PathSeg newItem, int index) native;
- /** @domName SVGPathSegList.removeItem */
- SVGPathSeg removeItem(int index) native;
+ /// @domName SVGPathSegList.removeItem; @docsEditable true
+ PathSeg removeItem(int index) native;
- /** @domName SVGPathSegList.replaceItem */
- SVGPathSeg replaceItem(SVGPathSeg newItem, int index) native;
+ /// @domName SVGPathSegList.replaceItem; @docsEditable true
+ PathSeg replaceItem(PathSeg newItem, int index) native;
}
// Copyright (c) 2012, 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.
-/// @domName SVGPathSegMovetoAbs
-class SVGPathSegMovetoAbs extends SVGPathSeg native "*SVGPathSegMovetoAbs" {
+/// @domName SVGPathSegMovetoAbs; @docsEditable true
+class PathSegMovetoAbs extends PathSeg native "*SVGPathSegMovetoAbs" {
- /** @domName SVGPathSegMovetoAbs.x */
+ /// @domName SVGPathSegMovetoAbs.x; @docsEditable true
num x;
- /** @domName SVGPathSegMovetoAbs.y */
+ /// @domName SVGPathSegMovetoAbs.y; @docsEditable true
num y;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4261,13 +4222,13 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGPathSegMovetoRel
-class SVGPathSegMovetoRel extends SVGPathSeg native "*SVGPathSegMovetoRel" {
+/// @domName SVGPathSegMovetoRel; @docsEditable true
+class PathSegMovetoRel extends PathSeg native "*SVGPathSegMovetoRel" {
- /** @domName SVGPathSegMovetoRel.x */
+ /// @domName SVGPathSegMovetoRel.x; @docsEditable true
num x;
- /** @domName SVGPathSegMovetoRel.y */
+ /// @domName SVGPathSegMovetoRel.y; @docsEditable true
num y;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4275,291 +4236,300 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGPatternElement
-class SVGPatternElement extends SVGElement implements SVGLangSpace, SVGTests, SVGStylable, SVGURIReference, SVGFitToViewBox, SVGExternalResourcesRequired native "*SVGPatternElement" {
+/// @domName SVGPatternElement; @docsEditable true
+class PatternElement extends SvgElement implements FitToViewBox, Tests, UriReference, Stylable, ExternalResourcesRequired, LangSpace native "*SVGPatternElement" {
- /** @domName SVGPatternElement.height */
- final SVGAnimatedLength height;
+ factory PatternElement() => _SvgElementFactoryProvider.createSvgElement_tag("pattern");
- /** @domName SVGPatternElement.patternContentUnits */
- final SVGAnimatedEnumeration patternContentUnits;
+ /// @domName SVGPatternElement.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGPatternElement.patternTransform */
- final SVGAnimatedTransformList patternTransform;
+ /// @domName SVGPatternElement.patternContentUnits; @docsEditable true
+ final AnimatedEnumeration patternContentUnits;
- /** @domName SVGPatternElement.patternUnits */
- final SVGAnimatedEnumeration patternUnits;
+ /// @domName SVGPatternElement.patternTransform; @docsEditable true
+ final AnimatedTransformList patternTransform;
- /** @domName SVGPatternElement.width */
- final SVGAnimatedLength width;
+ /// @domName SVGPatternElement.patternUnits; @docsEditable true
+ final AnimatedEnumeration patternUnits;
- /** @domName SVGPatternElement.x */
- final SVGAnimatedLength x;
+ /// @domName SVGPatternElement.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGPatternElement.y */
- final SVGAnimatedLength y;
+ /// @domName SVGPatternElement.x; @docsEditable true
+ final AnimatedLength x;
+
+ /// @domName SVGPatternElement.y; @docsEditable true
+ final AnimatedLength y;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGFitToViewBox
- /** @domName SVGFitToViewBox.preserveAspectRatio */
- final SVGAnimatedPreserveAspectRatio preserveAspectRatio;
+ /// @domName SVGFitToViewBox.preserveAspectRatio; @docsEditable true
+ final AnimatedPreserveAspectRatio preserveAspectRatio;
- /** @domName SVGFitToViewBox.viewBox */
- final SVGAnimatedRect viewBox;
+ /// @domName SVGFitToViewBox.viewBox; @docsEditable true
+ final AnimatedRect viewBox;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGTests
- /** @domName SVGTests.requiredExtensions */
- final SVGStringList requiredExtensions;
+ /// @domName SVGTests.requiredExtensions; @docsEditable true
+ final StringList requiredExtensions;
- /** @domName SVGTests.requiredFeatures */
- final SVGStringList requiredFeatures;
+ /// @domName SVGTests.requiredFeatures; @docsEditable true
+ final StringList requiredFeatures;
- /** @domName SVGTests.systemLanguage */
- final SVGStringList systemLanguage;
+ /// @domName SVGTests.systemLanguage; @docsEditable true
+ final StringList systemLanguage;
- /** @domName SVGTests.hasExtension */
+ /// @domName SVGTests.hasExtension; @docsEditable true
bool hasExtension(String extension) native;
// From SVGURIReference
- /** @domName SVGURIReference.href */
- final SVGAnimatedString href;
+ /// @domName SVGURIReference.href; @docsEditable true
+ final AnimatedString href;
}
// Copyright (c) 2012, 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.
+// WARNING: Do not edit - generated code.
-/// @domName SVGPoint
-class SVGPoint native "*SVGPoint" {
- /** @domName SVGPoint.x */
+class Point native "*SVGPoint" {
+ factory Point(num x, num y) => _PointFactoryProvider.createPoint(x, y);
+
+ /// @domName SVGPoint.x; @docsEditable true
num x;
- /** @domName SVGPoint.y */
+ /// @domName SVGPoint.y; @docsEditable true
num y;
- /** @domName SVGPoint.matrixTransform */
- SVGPoint matrixTransform(SVGMatrix matrix) native;
+ /// @domName SVGPoint.matrixTransform; @docsEditable true
+ Point matrixTransform(Matrix matrix) native;
+
}
// Copyright (c) 2012, 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.
-/// @domName SVGPointList
-class SVGPointList native "*SVGPointList" {
+/// @domName SVGPointList; @docsEditable true
+class PointList native "*SVGPointList" {
- /** @domName SVGPointList.numberOfItems */
+ /// @domName SVGPointList.numberOfItems; @docsEditable true
final int numberOfItems;
- /** @domName SVGPointList.appendItem */
- SVGPoint appendItem(SVGPoint item) native;
+ /// @domName SVGPointList.appendItem; @docsEditable true
+ Point appendItem(Point item) native;
- /** @domName SVGPointList.clear */
+ /// @domName SVGPointList.clear; @docsEditable true
void clear() native;
- /** @domName SVGPointList.getItem */
- SVGPoint getItem(int index) native;
+ /// @domName SVGPointList.getItem; @docsEditable true
+ Point getItem(int index) native;
- /** @domName SVGPointList.initialize */
- SVGPoint initialize(SVGPoint item) native;
+ /// @domName SVGPointList.initialize; @docsEditable true
+ Point initialize(Point item) native;
- /** @domName SVGPointList.insertItemBefore */
- SVGPoint insertItemBefore(SVGPoint item, int index) native;
+ /// @domName SVGPointList.insertItemBefore; @docsEditable true
+ Point insertItemBefore(Point item, int index) native;
- /** @domName SVGPointList.removeItem */
- SVGPoint removeItem(int index) native;
+ /// @domName SVGPointList.removeItem; @docsEditable true
+ Point removeItem(int index) native;
- /** @domName SVGPointList.replaceItem */
- SVGPoint replaceItem(SVGPoint item, int index) native;
+ /// @domName SVGPointList.replaceItem; @docsEditable true
+ Point replaceItem(Point item, int index) native;
}
// Copyright (c) 2012, 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.
-/// @domName SVGPolygonElement
-class SVGPolygonElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired native "*SVGPolygonElement" {
+/// @domName SVGPolygonElement; @docsEditable true
+class PolygonElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace native "*SVGPolygonElement" {
- /** @domName SVGPolygonElement.animatedPoints */
- final SVGPointList animatedPoints;
+ factory PolygonElement() => _SvgElementFactoryProvider.createSvgElement_tag("polygon");
- /** @domName SVGPolygonElement.points */
- final SVGPointList points;
+ /// @domName SVGPolygonElement.animatedPoints; @docsEditable true
+ final PointList animatedPoints;
+
+ /// @domName SVGPolygonElement.points; @docsEditable true
+ final PointList points;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGLocatable
- /** @domName SVGLocatable.farthestViewportElement */
- final SVGElement farthestViewportElement;
+ /// @domName SVGLocatable.farthestViewportElement; @docsEditable true
+ final SvgElement farthestViewportElement;
- /** @domName SVGLocatable.nearestViewportElement */
- final SVGElement nearestViewportElement;
+ /// @domName SVGLocatable.nearestViewportElement; @docsEditable true
+ final SvgElement nearestViewportElement;
- /** @domName SVGLocatable.getBBox */
- SVGRect getBBox() native;
+ /// @domName SVGLocatable.getBBox; @docsEditable true
+ Rect getBBox() native;
- /** @domName SVGLocatable.getCTM */
- SVGMatrix getCTM() native;
+ /// @domName SVGLocatable.getCTM; @docsEditable true
+ Matrix getCTM() native;
- /** @domName SVGLocatable.getScreenCTM */
- SVGMatrix getScreenCTM() native;
+ /// @domName SVGLocatable.getScreenCTM; @docsEditable true
+ Matrix getScreenCTM() native;
- /** @domName SVGLocatable.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native;
+ /// @domName SVGLocatable.getTransformToElement; @docsEditable true
+ Matrix getTransformToElement(SvgElement element) native;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGTests
- /** @domName SVGTests.requiredExtensions */
- final SVGStringList requiredExtensions;
+ /// @domName SVGTests.requiredExtensions; @docsEditable true
+ final StringList requiredExtensions;
- /** @domName SVGTests.requiredFeatures */
- final SVGStringList requiredFeatures;
+ /// @domName SVGTests.requiredFeatures; @docsEditable true
+ final StringList requiredFeatures;
- /** @domName SVGTests.systemLanguage */
- final SVGStringList systemLanguage;
+ /// @domName SVGTests.systemLanguage; @docsEditable true
+ final StringList systemLanguage;
- /** @domName SVGTests.hasExtension */
+ /// @domName SVGTests.hasExtension; @docsEditable true
bool hasExtension(String extension) native;
// From SVGTransformable
- /** @domName SVGTransformable.transform */
- final SVGAnimatedTransformList transform;
+ /// @domName SVGTransformable.transform; @docsEditable true
+ final AnimatedTransformList transform;
}
// Copyright (c) 2012, 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.
-/// @domName SVGPolylineElement
-class SVGPolylineElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired native "*SVGPolylineElement" {
+/// @domName SVGPolylineElement; @docsEditable true
+class PolylineElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace native "*SVGPolylineElement" {
- /** @domName SVGPolylineElement.animatedPoints */
- final SVGPointList animatedPoints;
+ factory PolylineElement() => _SvgElementFactoryProvider.createSvgElement_tag("polyline");
- /** @domName SVGPolylineElement.points */
- final SVGPointList points;
+ /// @domName SVGPolylineElement.animatedPoints; @docsEditable true
+ final PointList animatedPoints;
+
+ /// @domName SVGPolylineElement.points; @docsEditable true
+ final PointList points;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGLocatable
- /** @domName SVGLocatable.farthestViewportElement */
- final SVGElement farthestViewportElement;
+ /// @domName SVGLocatable.farthestViewportElement; @docsEditable true
+ final SvgElement farthestViewportElement;
- /** @domName SVGLocatable.nearestViewportElement */
- final SVGElement nearestViewportElement;
+ /// @domName SVGLocatable.nearestViewportElement; @docsEditable true
+ final SvgElement nearestViewportElement;
- /** @domName SVGLocatable.getBBox */
- SVGRect getBBox() native;
+ /// @domName SVGLocatable.getBBox; @docsEditable true
+ Rect getBBox() native;
- /** @domName SVGLocatable.getCTM */
- SVGMatrix getCTM() native;
+ /// @domName SVGLocatable.getCTM; @docsEditable true
+ Matrix getCTM() native;
- /** @domName SVGLocatable.getScreenCTM */
- SVGMatrix getScreenCTM() native;
+ /// @domName SVGLocatable.getScreenCTM; @docsEditable true
+ Matrix getScreenCTM() native;
- /** @domName SVGLocatable.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native;
+ /// @domName SVGLocatable.getTransformToElement; @docsEditable true
+ Matrix getTransformToElement(SvgElement element) native;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGTests
- /** @domName SVGTests.requiredExtensions */
- final SVGStringList requiredExtensions;
+ /// @domName SVGTests.requiredExtensions; @docsEditable true
+ final StringList requiredExtensions;
- /** @domName SVGTests.requiredFeatures */
- final SVGStringList requiredFeatures;
+ /// @domName SVGTests.requiredFeatures; @docsEditable true
+ final StringList requiredFeatures;
- /** @domName SVGTests.systemLanguage */
- final SVGStringList systemLanguage;
+ /// @domName SVGTests.systemLanguage; @docsEditable true
+ final StringList systemLanguage;
- /** @domName SVGTests.hasExtension */
+ /// @domName SVGTests.hasExtension; @docsEditable true
bool hasExtension(String extension) native;
// From SVGTransformable
- /** @domName SVGTransformable.transform */
- final SVGAnimatedTransformList transform;
+ /// @domName SVGTransformable.transform; @docsEditable true
+ final AnimatedTransformList transform;
}
// Copyright (c) 2012, 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.
-/// @domName SVGPreserveAspectRatio
-class SVGPreserveAspectRatio native "*SVGPreserveAspectRatio" {
+/// @domName SVGPreserveAspectRatio; @docsEditable true
+class PreserveAspectRatio native "*SVGPreserveAspectRatio" {
static const int SVG_MEETORSLICE_MEET = 1;
@@ -4589,10 +4559,10 @@
static const int SVG_PRESERVEASPECTRATIO_XMINYMIN = 2;
- /** @domName SVGPreserveAspectRatio.align */
+ /// @domName SVGPreserveAspectRatio.align; @docsEditable true
int align;
- /** @domName SVGPreserveAspectRatio.meetOrSlice */
+ /// @domName SVGPreserveAspectRatio.meetOrSlice; @docsEditable true
int meetOrSlice;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4600,45 +4570,47 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGRadialGradientElement
-class SVGRadialGradientElement extends SVGGradientElement native "*SVGRadialGradientElement" {
+/// @domName SVGRadialGradientElement; @docsEditable true
+class RadialGradientElement extends GradientElement native "*SVGRadialGradientElement" {
- /** @domName SVGRadialGradientElement.cx */
- final SVGAnimatedLength cx;
+ factory RadialGradientElement() => _SvgElementFactoryProvider.createSvgElement_tag("radialGradient");
- /** @domName SVGRadialGradientElement.cy */
- final SVGAnimatedLength cy;
+ /// @domName SVGRadialGradientElement.cx; @docsEditable true
+ final AnimatedLength cx;
- /** @domName SVGRadialGradientElement.fr */
- final SVGAnimatedLength fr;
+ /// @domName SVGRadialGradientElement.cy; @docsEditable true
+ final AnimatedLength cy;
- /** @domName SVGRadialGradientElement.fx */
- final SVGAnimatedLength fx;
+ /// @domName SVGRadialGradientElement.fr; @docsEditable true
+ final AnimatedLength fr;
- /** @domName SVGRadialGradientElement.fy */
- final SVGAnimatedLength fy;
+ /// @domName SVGRadialGradientElement.fx; @docsEditable true
+ final AnimatedLength fx;
- /** @domName SVGRadialGradientElement.r */
- final SVGAnimatedLength r;
+ /// @domName SVGRadialGradientElement.fy; @docsEditable true
+ final AnimatedLength fy;
+
+ /// @domName SVGRadialGradientElement.r; @docsEditable true
+ final AnimatedLength r;
}
// Copyright (c) 2012, 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.
-/// @domName SVGRect
-class SVGRect native "*SVGRect" {
+/// @domName SVGRect; @docsEditable true
+class Rect native "*SVGRect" {
- /** @domName SVGRect.height */
+ /// @domName SVGRect.height; @docsEditable true
num height;
- /** @domName SVGRect.width */
+ /// @domName SVGRect.width; @docsEditable true
num width;
- /** @domName SVGRect.x */
+ /// @domName SVGRect.x; @docsEditable true
num x;
- /** @domName SVGRect.y */
+ /// @domName SVGRect.y; @docsEditable true
num y;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4646,97 +4618,99 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGRectElement
-class SVGRectElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired native "*SVGRectElement" {
+/// @domName SVGRectElement; @docsEditable true
+class RectElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace native "*SVGRectElement" {
- /** @domName SVGRectElement.height */
- final SVGAnimatedLength height;
+ factory RectElement() => _SvgElementFactoryProvider.createSvgElement_tag("rect");
- /** @domName SVGRectElement.rx */
- final SVGAnimatedLength rx;
+ /// @domName SVGRectElement.height; @docsEditable true
+ final AnimatedLength height;
- /** @domName SVGRectElement.ry */
- final SVGAnimatedLength ry;
+ /// @domName SVGRectElement.rx; @docsEditable true
+ final AnimatedLength rx;
- /** @domName SVGRectElement.width */
- final SVGAnimatedLength width;
+ /// @domName SVGRectElement.ry; @docsEditable true
+ final AnimatedLength ry;
- /** @domName SVGRectElement.x */
- final SVGAnimatedLength x;
+ /// @domName SVGRectElement.width; @docsEditable true
+ final AnimatedLength width;
- /** @domName SVGRectElement.y */
- final SVGAnimatedLength y;
+ /// @domName SVGRectElement.x; @docsEditable true
+ final AnimatedLength x;
+
+ /// @domName SVGRectElement.y; @docsEditable true
+ final AnimatedLength y;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGLocatable
- /** @domName SVGLocatable.farthestViewportElement */
- final SVGElement farthestViewportElement;
+ /// @domName SVGLocatable.farthestViewportElement; @docsEditable true
+ final SvgElement farthestViewportElement;
- /** @domName SVGLocatable.nearestViewportElement */
- final SVGElement nearestViewportElement;
+ /// @domName SVGLocatable.nearestViewportElement; @docsEditable true
+ final SvgElement nearestViewportElement;
- /** @domName SVGLocatable.getBBox */
- SVGRect getBBox() native;
+ /// @domName SVGLocatable.getBBox; @docsEditable true
+ Rect getBBox() native;
- /** @domName SVGLocatable.getCTM */
- SVGMatrix getCTM() native;
+ /// @domName SVGLocatable.getCTM; @docsEditable true
+ Matrix getCTM() native;
- /** @domName SVGLocatable.getScreenCTM */
- SVGMatrix getScreenCTM() native;
+ /// @domName SVGLocatable.getScreenCTM; @docsEditable true
+ Matrix getScreenCTM() native;
- /** @domName SVGLocatable.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native;
+ /// @domName SVGLocatable.getTransformToElement; @docsEditable true
+ Matrix getTransformToElement(SvgElement element) native;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGTests
- /** @domName SVGTests.requiredExtensions */
- final SVGStringList requiredExtensions;
+ /// @domName SVGTests.requiredExtensions; @docsEditable true
+ final StringList requiredExtensions;
- /** @domName SVGTests.requiredFeatures */
- final SVGStringList requiredFeatures;
+ /// @domName SVGTests.requiredFeatures; @docsEditable true
+ final StringList requiredFeatures;
- /** @domName SVGTests.systemLanguage */
- final SVGStringList systemLanguage;
+ /// @domName SVGTests.systemLanguage; @docsEditable true
+ final StringList systemLanguage;
- /** @domName SVGTests.hasExtension */
+ /// @domName SVGTests.hasExtension; @docsEditable true
bool hasExtension(String extension) native;
// From SVGTransformable
- /** @domName SVGTransformable.transform */
- final SVGAnimatedTransformList transform;
+ /// @domName SVGTransformable.transform; @docsEditable true
+ final AnimatedTransformList transform;
}
// Copyright (c) 2012, 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.
-/// @domName SVGRenderingIntent
-class SVGRenderingIntent native "*SVGRenderingIntent" {
+/// @domName SVGRenderingIntent; @docsEditable true
+class RenderingIntent native "*SVGRenderingIntent" {
static const int RENDERING_INTENT_ABSOLUTE_COLORIMETRIC = 5;
@@ -4755,245 +4729,56 @@
// BSD-style license that can be found in the LICENSE file.
-class SVGSVGElement extends SVGElement implements SVGZoomAndPan, SVGLocatable, SVGLangSpace, SVGTests, SVGStylable, SVGFitToViewBox, SVGExternalResourcesRequired native "*SVGSVGElement" {
- factory SVGSVGElement() => _SVGSVGElementFactoryProvider.createSVGSVGElement();
+/// @domName SVGScriptElement; @docsEditable true
+class ScriptElement extends SvgElement implements UriReference, ExternalResourcesRequired native "*SVGScriptElement" {
+ factory ScriptElement() => _SvgElementFactoryProvider.createSvgElement_tag("script");
- /** @domName SVGSVGElement.contentScriptType */
- String contentScriptType;
-
- /** @domName SVGSVGElement.contentStyleType */
- String contentStyleType;
-
- /** @domName SVGSVGElement.currentScale */
- num currentScale;
-
- /** @domName SVGSVGElement.currentTranslate */
- final SVGPoint currentTranslate;
-
- /** @domName SVGSVGElement.currentView */
- final SVGViewSpec currentView;
-
- /** @domName SVGSVGElement.height */
- final SVGAnimatedLength height;
-
- /** @domName SVGSVGElement.pixelUnitToMillimeterX */
- final num pixelUnitToMillimeterX;
-
- /** @domName SVGSVGElement.pixelUnitToMillimeterY */
- final num pixelUnitToMillimeterY;
-
- /** @domName SVGSVGElement.screenPixelToMillimeterX */
- final num screenPixelToMillimeterX;
-
- /** @domName SVGSVGElement.screenPixelToMillimeterY */
- final num screenPixelToMillimeterY;
-
- /** @domName SVGSVGElement.useCurrentView */
- final bool useCurrentView;
-
- /** @domName SVGSVGElement.viewport */
- final SVGRect viewport;
-
- /** @domName SVGSVGElement.width */
- final SVGAnimatedLength width;
-
- /** @domName SVGSVGElement.x */
- final SVGAnimatedLength x;
-
- /** @domName SVGSVGElement.y */
- final SVGAnimatedLength y;
-
- /** @domName SVGSVGElement.animationsPaused */
- bool animationsPaused() native;
-
- /** @domName SVGSVGElement.checkEnclosure */
- bool checkEnclosure(SVGElement element, SVGRect rect) native;
-
- /** @domName SVGSVGElement.checkIntersection */
- bool checkIntersection(SVGElement element, SVGRect rect) native;
-
- /** @domName SVGSVGElement.createSVGAngle */
- SVGAngle createSVGAngle() native;
-
- /** @domName SVGSVGElement.createSVGLength */
- SVGLength createSVGLength() native;
-
- /** @domName SVGSVGElement.createSVGMatrix */
- SVGMatrix createSVGMatrix() native;
-
- /** @domName SVGSVGElement.createSVGNumber */
- SVGNumber createSVGNumber() native;
-
- /** @domName SVGSVGElement.createSVGPoint */
- SVGPoint createSVGPoint() native;
-
- /** @domName SVGSVGElement.createSVGRect */
- SVGRect createSVGRect() native;
-
- /** @domName SVGSVGElement.createSVGTransform */
- SVGTransform createSVGTransform() native;
-
- /** @domName SVGSVGElement.createSVGTransformFromMatrix */
- SVGTransform createSVGTransformFromMatrix(SVGMatrix matrix) native;
-
- /** @domName SVGSVGElement.deselectAll */
- void deselectAll() native;
-
- /** @domName SVGSVGElement.forceRedraw */
- void forceRedraw() native;
-
- /** @domName SVGSVGElement.getCurrentTime */
- num getCurrentTime() native;
-
- /** @domName SVGSVGElement.getElementById */
- Element getElementById(String elementId) native;
-
- /** @domName SVGSVGElement.getEnclosureList */
- List<Node> getEnclosureList(SVGRect rect, SVGElement referenceElement) native;
-
- /** @domName SVGSVGElement.getIntersectionList */
- List<Node> getIntersectionList(SVGRect rect, SVGElement referenceElement) native;
-
- /** @domName SVGSVGElement.pauseAnimations */
- void pauseAnimations() native;
-
- /** @domName SVGSVGElement.setCurrentTime */
- void setCurrentTime(num seconds) native;
-
- /** @domName SVGSVGElement.suspendRedraw */
- int suspendRedraw(int maxWaitMilliseconds) native;
-
- /** @domName SVGSVGElement.unpauseAnimations */
- void unpauseAnimations() native;
-
- /** @domName SVGSVGElement.unsuspendRedraw */
- void unsuspendRedraw(int suspendHandleId) native;
-
- /** @domName SVGSVGElement.unsuspendRedrawAll */
- void unsuspendRedrawAll() native;
-
- // From SVGExternalResourcesRequired
-
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
-
- // From SVGFitToViewBox
-
- /** @domName SVGFitToViewBox.preserveAspectRatio */
- final SVGAnimatedPreserveAspectRatio preserveAspectRatio;
-
- /** @domName SVGFitToViewBox.viewBox */
- final SVGAnimatedRect viewBox;
-
- // From SVGLangSpace
-
- /** @domName SVGLangSpace.xmllang */
- String xmllang;
-
- /** @domName SVGLangSpace.xmlspace */
- String xmlspace;
-
- // From SVGLocatable
-
- /** @domName SVGLocatable.farthestViewportElement */
- final SVGElement farthestViewportElement;
-
- /** @domName SVGLocatable.nearestViewportElement */
- final SVGElement nearestViewportElement;
-
- /** @domName SVGLocatable.getBBox */
- SVGRect getBBox() native;
-
- /** @domName SVGLocatable.getCTM */
- SVGMatrix getCTM() native;
-
- /** @domName SVGLocatable.getScreenCTM */
- SVGMatrix getScreenCTM() native;
-
- /** @domName SVGLocatable.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native;
-
- // From SVGStylable
-
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
-
- // Use implementation from Element.
- // final CSSStyleDeclaration style;
-
- /** @domName SVGStylable.getPresentationAttribute */
- CSSValue getPresentationAttribute(String name) native;
-
- // From SVGTests
-
- /** @domName SVGTests.requiredExtensions */
- final SVGStringList requiredExtensions;
-
- /** @domName SVGTests.requiredFeatures */
- final SVGStringList requiredFeatures;
-
- /** @domName SVGTests.systemLanguage */
- final SVGStringList systemLanguage;
-
- /** @domName SVGTests.hasExtension */
- bool hasExtension(String extension) native;
-
- // From SVGZoomAndPan
-
- /** @domName SVGZoomAndPan.zoomAndPan */
- int zoomAndPan;
-
-}
-// Copyright (c) 2012, 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.
-
-
-/// @domName SVGScriptElement
-class SVGScriptElement extends SVGElement implements SVGURIReference, SVGExternalResourcesRequired native "*SVGScriptElement" {
-
- /** @domName SVGScriptElement.type */
+ /// @domName SVGScriptElement.type; @docsEditable true
String type;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGURIReference
- /** @domName SVGURIReference.href */
- final SVGAnimatedString href;
+ /// @domName SVGURIReference.href; @docsEditable true
+ final AnimatedString href;
}
// Copyright (c) 2012, 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.
-/// @domName SVGSetElement
-class SVGSetElement extends SVGAnimationElement native "*SVGSetElement" {
+/// @domName SVGSetElement; @docsEditable true
+class SetElement extends AnimationElement native "*SVGSetElement" {
+
+ factory SetElement() => _SvgElementFactoryProvider.createSvgElement_tag("set");
}
// Copyright (c) 2012, 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.
-/// @domName SVGStopElement
-class SVGStopElement extends SVGElement implements SVGStylable native "*SVGStopElement" {
+/// @domName SVGStopElement; @docsEditable true
+class StopElement extends SvgElement implements Stylable native "*SVGStopElement" {
- /** @domName SVGStopElement.offset */
- final SVGAnimatedNumber offset;
+ factory StopElement() => _SvgElementFactoryProvider.createSvgElement_tag("stop");
+
+ /// @domName SVGStopElement.offset; @docsEditable true
+ final AnimatedNumber offset;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5001,10 +4786,10 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGStringList
-class SVGStringList implements JavaScriptIndexingBehavior, List<String> native "*SVGStringList" {
+/// @domName SVGStringList; @docsEditable true
+class StringList implements JavaScriptIndexingBehavior, List<String> native "*SVGStringList" {
- /** @domName SVGStringList.numberOfItems */
+ /// @domName SVGStringList.numberOfItems; @docsEditable true
final int numberOfItems;
String operator[](int index) => JS("String", "#[#]", this, index);
@@ -5067,6 +4852,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ String get first => this[0];
+
String get last => this[length - 1];
String removeLast() {
@@ -5090,25 +4877,25 @@
// -- end List<String> mixins.
- /** @domName SVGStringList.appendItem */
+ /// @domName SVGStringList.appendItem; @docsEditable true
String appendItem(String item) native;
- /** @domName SVGStringList.clear */
+ /// @domName SVGStringList.clear; @docsEditable true
void clear() native;
- /** @domName SVGStringList.getItem */
+ /// @domName SVGStringList.getItem; @docsEditable true
String getItem(int index) native;
- /** @domName SVGStringList.initialize */
+ /// @domName SVGStringList.initialize; @docsEditable true
String initialize(String item) native;
- /** @domName SVGStringList.insertItemBefore */
+ /// @domName SVGStringList.insertItemBefore; @docsEditable true
String insertItemBefore(String item, int index) native;
- /** @domName SVGStringList.removeItem */
+ /// @domName SVGStringList.removeItem; @docsEditable true
String removeItem(int index) native;
- /** @domName SVGStringList.replaceItem */
+ /// @domName SVGStringList.replaceItem; @docsEditable true
String replaceItem(String item, int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5117,13 +4904,13 @@
/// @domName SVGStylable
-abstract class SVGStylable {
+abstract class Stylable {
- SVGAnimatedString className;
+ AnimatedString className;
CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name);
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5131,33 +4918,35 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGStyleElement
-class SVGStyleElement extends SVGElement implements SVGLangSpace native "*SVGStyleElement" {
+/// @domName SVGStyleElement; @docsEditable true
+class StyleElement extends SvgElement implements LangSpace native "*SVGStyleElement" {
- /** @domName SVGStyleElement.disabled */
+ factory StyleElement() => _SvgElementFactoryProvider.createSvgElement_tag("style");
+
+ /// @domName SVGStyleElement.disabled; @docsEditable true
bool disabled;
- /** @domName SVGStyleElement.media */
+ /// @domName SVGStyleElement.media; @docsEditable true
String media;
// Shadowing definition.
- /** @domName SVGStyleElement.title */
+ /// @domName SVGStyleElement.title; @docsEditable true
String get title => JS("String", "#.title", this);
- /** @domName SVGStyleElement.title */
+ /// @domName SVGStyleElement.title; @docsEditable true
void set title(String value) {
JS("void", "#.title = #", this, value);
}
- /** @domName SVGStyleElement.type */
+ /// @domName SVGStyleElement.type; @docsEditable true
String type;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5165,110 +4954,429 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGSwitchElement
-class SVGSwitchElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired native "*SVGSwitchElement" {
+/// @domName SVGDocument; @docsEditable true
+class SvgDocument extends Document native "*SVGDocument" {
+
+ /// @domName SVGDocument.rootElement; @docsEditable true
+ final SvgSvgElement rootElement;
+
+ /// @domName SVGDocument.createEvent; @docsEditable true
+ Event $dom_createEvent(String eventType) native "createEvent";
+}
+// Copyright (c) 2011, 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.
+
+
+class _AttributeClassSet extends CssClassSet {
+ final Element _element;
+
+ _AttributeClassSet(this._element);
+
+ Set<String> readClasses() {
+ var classname = _element.attributes['class'];
+
+ Set<String> s = new Set<String>();
+ if (classname == null) {
+ return s;
+ }
+ for (String name in classname.split(' ')) {
+ String trimmed = name.trim();
+ if (!trimmed.isEmpty) {
+ s.add(trimmed);
+ }
+ }
+ return s;
+ }
+
+ void writeClasses(Set s) {
+ List list = new List.from(s);
+ _element.attributes['class'] = Strings.join(list, ' ');
+ }
+}
+
+class SvgElement extends Element native "*SVGElement" {
+ factory SvgElement.tag(String tag) =>
+ _SvgElementFactoryProvider.createSvgElement_tag(tag);
+ factory SvgElement.svg(String svg) =>
+ _SvgElementFactoryProvider.createSvgElement_svg(svg);
+
+ _AttributeClassSet _cssClassSet;
+ CssClassSet get classes {
+ if (_cssClassSet == null) {
+ _cssClassSet = new _AttributeClassSet(this);
+ }
+ return _cssClassSet;
+ }
+
+ List<Element> get elements => new FilteredElementList(this);
+
+ void set elements(Collection<Element> value) {
+ final elements = this.elements;
+ elements.clear();
+ elements.addAll(value);
+ }
+
+ List<Element> get children => new FilteredElementList(this);
+
+ void set children(Collection<Element> value) {
+ final children = this.children;
+ children.clear();
+ children.addAll(value);
+ }
+
+ String get outerHTML {
+ final container = new Element.tag("div");
+ final SvgElement cloned = this.clone(true);
+ container.children.add(cloned);
+ return container.innerHTML;
+ }
+
+ String get innerHTML {
+ final container = new Element.tag("div");
+ final SvgElement cloned = this.clone(true);
+ container.children.addAll(cloned.children);
+ return container.innerHTML;
+ }
+
+ void set innerHTML(String svg) {
+ final container = new Element.tag("div");
+ // Wrap the SVG string in <svg> so that SvgElements are created, rather than
+ // HTMLElements.
+ container.innerHTML = '<svg version="1.1">$svg</svg>';
+ this.children = container.children[0].children;
+ }
+
+
+ // Shadowing definition.
+ /// @domName SVGElement.id; @docsEditable true
+ String get id => JS("String", "#.id", this);
+
+ /// @domName SVGElement.id; @docsEditable true
+ void set id(String value) {
+ JS("void", "#.id = #", this, value);
+ }
+
+ /// @domName SVGElement.ownerSVGElement; @docsEditable true
+ final SvgSvgElement ownerSVGElement;
+
+ /// @domName SVGElement.viewportElement; @docsEditable true
+ final SvgElement viewportElement;
+
+ /// @domName SVGElement.xmlbase; @docsEditable true
+ String xmlbase;
+
+}
+// Copyright (c) 2012, 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.
+
+
+class SvgSvgElement extends SvgElement implements FitToViewBox, Tests, Stylable, Locatable, ExternalResourcesRequired, ZoomAndPan, LangSpace native "*SVGSVGElement" {
+ factory SvgSvgElement() => _SvgSvgElementFactoryProvider.createSvgSvgElement();
+
+
+ /// @domName SVGSVGElement.contentScriptType; @docsEditable true
+ String contentScriptType;
+
+ /// @domName SVGSVGElement.contentStyleType; @docsEditable true
+ String contentStyleType;
+
+ /// @domName SVGSVGElement.currentScale; @docsEditable true
+ num currentScale;
+
+ /// @domName SVGSVGElement.currentTranslate; @docsEditable true
+ final Point currentTranslate;
+
+ /// @domName SVGSVGElement.currentView; @docsEditable true
+ final ViewSpec currentView;
+
+ /// @domName SVGSVGElement.height; @docsEditable true
+ final AnimatedLength height;
+
+ /// @domName SVGSVGElement.pixelUnitToMillimeterX; @docsEditable true
+ final num pixelUnitToMillimeterX;
+
+ /// @domName SVGSVGElement.pixelUnitToMillimeterY; @docsEditable true
+ final num pixelUnitToMillimeterY;
+
+ /// @domName SVGSVGElement.screenPixelToMillimeterX; @docsEditable true
+ final num screenPixelToMillimeterX;
+
+ /// @domName SVGSVGElement.screenPixelToMillimeterY; @docsEditable true
+ final num screenPixelToMillimeterY;
+
+ /// @domName SVGSVGElement.useCurrentView; @docsEditable true
+ final bool useCurrentView;
+
+ /// @domName SVGSVGElement.viewport; @docsEditable true
+ final Rect viewport;
+
+ /// @domName SVGSVGElement.width; @docsEditable true
+ final AnimatedLength width;
+
+ /// @domName SVGSVGElement.x; @docsEditable true
+ final AnimatedLength x;
+
+ /// @domName SVGSVGElement.y; @docsEditable true
+ final AnimatedLength y;
+
+ /// @domName SVGSVGElement.animationsPaused; @docsEditable true
+ bool animationsPaused() native;
+
+ /// @domName SVGSVGElement.checkEnclosure; @docsEditable true
+ bool checkEnclosure(SvgElement element, Rect rect) native;
+
+ /// @domName SVGSVGElement.checkIntersection; @docsEditable true
+ bool checkIntersection(SvgElement element, Rect rect) native;
+
+ /// @domName SVGSVGElement.createSVGAngle; @docsEditable true
+ Angle createSVGAngle() native;
+
+ /// @domName SVGSVGElement.createSVGLength; @docsEditable true
+ Length createSVGLength() native;
+
+ /// @domName SVGSVGElement.createSVGMatrix; @docsEditable true
+ Matrix createSVGMatrix() native;
+
+ /// @domName SVGSVGElement.createSVGNumber; @docsEditable true
+ Number createSVGNumber() native;
+
+ /// @domName SVGSVGElement.createSVGPoint; @docsEditable true
+ Point createSVGPoint() native;
+
+ /// @domName SVGSVGElement.createSVGRect; @docsEditable true
+ Rect createSVGRect() native;
+
+ /// @domName SVGSVGElement.createSVGTransform; @docsEditable true
+ Transform createSVGTransform() native;
+
+ /// @domName SVGSVGElement.createSVGTransformFromMatrix; @docsEditable true
+ Transform createSVGTransformFromMatrix(Matrix matrix) native;
+
+ /// @domName SVGSVGElement.deselectAll; @docsEditable true
+ void deselectAll() native;
+
+ /// @domName SVGSVGElement.forceRedraw; @docsEditable true
+ void forceRedraw() native;
+
+ /// @domName SVGSVGElement.getCurrentTime; @docsEditable true
+ num getCurrentTime() native;
+
+ /// @domName SVGSVGElement.getElementById; @docsEditable true
+ Element getElementById(String elementId) native;
+
+ /// @domName SVGSVGElement.getEnclosureList; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
+ List<Node> getEnclosureList(Rect rect, SvgElement referenceElement) native;
+
+ /// @domName SVGSVGElement.getIntersectionList; @docsEditable true
+ @Returns('_NodeList') @Creates('_NodeList')
+ List<Node> getIntersectionList(Rect rect, SvgElement referenceElement) native;
+
+ /// @domName SVGSVGElement.pauseAnimations; @docsEditable true
+ void pauseAnimations() native;
+
+ /// @domName SVGSVGElement.setCurrentTime; @docsEditable true
+ void setCurrentTime(num seconds) native;
+
+ /// @domName SVGSVGElement.suspendRedraw; @docsEditable true
+ int suspendRedraw(int maxWaitMilliseconds) native;
+
+ /// @domName SVGSVGElement.unpauseAnimations; @docsEditable true
+ void unpauseAnimations() native;
+
+ /// @domName SVGSVGElement.unsuspendRedraw; @docsEditable true
+ void unsuspendRedraw(int suspendHandleId) native;
+
+ /// @domName SVGSVGElement.unsuspendRedrawAll; @docsEditable true
+ void unsuspendRedrawAll() native;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
+
+ // From SVGFitToViewBox
+
+ /// @domName SVGFitToViewBox.preserveAspectRatio; @docsEditable true
+ final AnimatedPreserveAspectRatio preserveAspectRatio;
+
+ /// @domName SVGFitToViewBox.viewBox; @docsEditable true
+ final AnimatedRect viewBox;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGLocatable
- /** @domName SVGLocatable.farthestViewportElement */
- final SVGElement farthestViewportElement;
+ /// @domName SVGLocatable.farthestViewportElement; @docsEditable true
+ final SvgElement farthestViewportElement;
- /** @domName SVGLocatable.nearestViewportElement */
- final SVGElement nearestViewportElement;
+ /// @domName SVGLocatable.nearestViewportElement; @docsEditable true
+ final SvgElement nearestViewportElement;
- /** @domName SVGLocatable.getBBox */
- SVGRect getBBox() native;
+ /// @domName SVGLocatable.getBBox; @docsEditable true
+ Rect getBBox() native;
- /** @domName SVGLocatable.getCTM */
- SVGMatrix getCTM() native;
+ /// @domName SVGLocatable.getCTM; @docsEditable true
+ Matrix getCTM() native;
- /** @domName SVGLocatable.getScreenCTM */
- SVGMatrix getScreenCTM() native;
+ /// @domName SVGLocatable.getScreenCTM; @docsEditable true
+ Matrix getScreenCTM() native;
- /** @domName SVGLocatable.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native;
+ /// @domName SVGLocatable.getTransformToElement; @docsEditable true
+ Matrix getTransformToElement(SvgElement element) native;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGTests
- /** @domName SVGTests.requiredExtensions */
- final SVGStringList requiredExtensions;
+ /// @domName SVGTests.requiredExtensions; @docsEditable true
+ final StringList requiredExtensions;
- /** @domName SVGTests.requiredFeatures */
- final SVGStringList requiredFeatures;
+ /// @domName SVGTests.requiredFeatures; @docsEditable true
+ final StringList requiredFeatures;
- /** @domName SVGTests.systemLanguage */
- final SVGStringList systemLanguage;
+ /// @domName SVGTests.systemLanguage; @docsEditable true
+ final StringList systemLanguage;
- /** @domName SVGTests.hasExtension */
+ /// @domName SVGTests.hasExtension; @docsEditable true
bool hasExtension(String extension) native;
- // From SVGTransformable
+ // From SVGZoomAndPan
- /** @domName SVGTransformable.transform */
- final SVGAnimatedTransformList transform;
+ /// @domName SVGZoomAndPan.zoomAndPan; @docsEditable true
+ int zoomAndPan;
+
}
// Copyright (c) 2012, 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.
-/// @domName SVGSymbolElement
-class SVGSymbolElement extends SVGElement implements SVGLangSpace, SVGFitToViewBox, SVGExternalResourcesRequired, SVGStylable native "*SVGSymbolElement" {
+/// @domName SVGSwitchElement; @docsEditable true
+class SwitchElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace native "*SVGSwitchElement" {
+
+ factory SwitchElement() => _SvgElementFactoryProvider.createSvgElement_tag("switch");
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
-
- // From SVGFitToViewBox
-
- /** @domName SVGFitToViewBox.preserveAspectRatio */
- final SVGAnimatedPreserveAspectRatio preserveAspectRatio;
-
- /** @domName SVGFitToViewBox.viewBox */
- final SVGAnimatedRect viewBox;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
+ // From SVGLocatable
+
+ /// @domName SVGLocatable.farthestViewportElement; @docsEditable true
+ final SvgElement farthestViewportElement;
+
+ /// @domName SVGLocatable.nearestViewportElement; @docsEditable true
+ final SvgElement nearestViewportElement;
+
+ /// @domName SVGLocatable.getBBox; @docsEditable true
+ Rect getBBox() native;
+
+ /// @domName SVGLocatable.getCTM; @docsEditable true
+ Matrix getCTM() native;
+
+ /// @domName SVGLocatable.getScreenCTM; @docsEditable true
+ Matrix getScreenCTM() native;
+
+ /// @domName SVGLocatable.getTransformToElement; @docsEditable true
+ Matrix getTransformToElement(SvgElement element) native;
+
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
+ CSSValue getPresentationAttribute(String name) native;
+
+ // From SVGTests
+
+ /// @domName SVGTests.requiredExtensions; @docsEditable true
+ final StringList requiredExtensions;
+
+ /// @domName SVGTests.requiredFeatures; @docsEditable true
+ final StringList requiredFeatures;
+
+ /// @domName SVGTests.systemLanguage; @docsEditable true
+ final StringList systemLanguage;
+
+ /// @domName SVGTests.hasExtension; @docsEditable true
+ bool hasExtension(String extension) native;
+
+ // From SVGTransformable
+
+ /// @domName SVGTransformable.transform; @docsEditable true
+ final AnimatedTransformList transform;
+}
+// Copyright (c) 2012, 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.
+
+
+/// @domName SVGSymbolElement; @docsEditable true
+class SymbolElement extends SvgElement implements FitToViewBox, ExternalResourcesRequired, Stylable, LangSpace native "*SVGSymbolElement" {
+
+ factory SymbolElement() => _SvgElementFactoryProvider.createSvgElement_tag("symbol");
+
+ // From SVGExternalResourcesRequired
+
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
+
+ // From SVGFitToViewBox
+
+ /// @domName SVGFitToViewBox.preserveAspectRatio; @docsEditable true
+ final AnimatedPreserveAspectRatio preserveAspectRatio;
+
+ /// @domName SVGFitToViewBox.viewBox; @docsEditable true
+ final AnimatedRect viewBox;
+
+ // From SVGLangSpace
+
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
+ String xmllang;
+
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
+ String xmlspace;
+
+ // From SVGStylable
+
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
+
+ // Use implementation from Element.
+ // final CSSStyleDeclaration style;
+
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5276,21 +5384,25 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGTRefElement
-class SVGTRefElement extends SVGTextPositioningElement implements SVGURIReference native "*SVGTRefElement" {
+/// @domName SVGTRefElement; @docsEditable true
+class TRefElement extends TextPositioningElement implements UriReference native "*SVGTRefElement" {
+
+ factory TRefElement() => _SvgElementFactoryProvider.createSvgElement_tag("tref");
// From SVGURIReference
- /** @domName SVGURIReference.href */
- final SVGAnimatedString href;
+ /// @domName SVGURIReference.href; @docsEditable true
+ final AnimatedString href;
}
// Copyright (c) 2012, 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.
-/// @domName SVGTSpanElement
-class SVGTSpanElement extends SVGTextPositioningElement native "*SVGTSpanElement" {
+/// @domName SVGTSpanElement; @docsEditable true
+class TSpanElement extends TextPositioningElement native "*SVGTSpanElement" {
+
+ factory TSpanElement() => _SvgElementFactoryProvider.createSvgElement_tag("tspan");
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
@@ -5298,15 +5410,15 @@
/// @domName SVGTests
-abstract class SVGTests {
+abstract class Tests {
- SVGStringList requiredExtensions;
+ StringList requiredExtensions;
- SVGStringList requiredFeatures;
+ StringList requiredFeatures;
- SVGStringList systemLanguage;
+ StringList systemLanguage;
- /** @domName SVGTests.hasExtension */
+ /// @domName SVGTests.hasExtension; @docsEditable true
bool hasExtension(String extension);
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5314,8 +5426,8 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGTextContentElement
-class SVGTextContentElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGExternalResourcesRequired native "*SVGTextContentElement" {
+/// @domName SVGTextContentElement; @docsEditable true
+class TextContentElement extends SvgElement implements Tests, Stylable, ExternalResourcesRequired, LangSpace native "*SVGTextContentElement" {
static const int LENGTHADJUST_SPACING = 1;
@@ -5323,75 +5435,75 @@
static const int LENGTHADJUST_UNKNOWN = 0;
- /** @domName SVGTextContentElement.lengthAdjust */
- final SVGAnimatedEnumeration lengthAdjust;
+ /// @domName SVGTextContentElement.lengthAdjust; @docsEditable true
+ final AnimatedEnumeration lengthAdjust;
- /** @domName SVGTextContentElement.textLength */
- final SVGAnimatedLength textLength;
+ /// @domName SVGTextContentElement.textLength; @docsEditable true
+ final AnimatedLength textLength;
- /** @domName SVGTextContentElement.getCharNumAtPosition */
- int getCharNumAtPosition(SVGPoint point) native;
+ /// @domName SVGTextContentElement.getCharNumAtPosition; @docsEditable true
+ int getCharNumAtPosition(Point point) native;
- /** @domName SVGTextContentElement.getComputedTextLength */
+ /// @domName SVGTextContentElement.getComputedTextLength; @docsEditable true
num getComputedTextLength() native;
- /** @domName SVGTextContentElement.getEndPositionOfChar */
- SVGPoint getEndPositionOfChar(int offset) native;
+ /// @domName SVGTextContentElement.getEndPositionOfChar; @docsEditable true
+ Point getEndPositionOfChar(int offset) native;
- /** @domName SVGTextContentElement.getExtentOfChar */
- SVGRect getExtentOfChar(int offset) native;
+ /// @domName SVGTextContentElement.getExtentOfChar; @docsEditable true
+ Rect getExtentOfChar(int offset) native;
- /** @domName SVGTextContentElement.getNumberOfChars */
+ /// @domName SVGTextContentElement.getNumberOfChars; @docsEditable true
int getNumberOfChars() native;
- /** @domName SVGTextContentElement.getRotationOfChar */
+ /// @domName SVGTextContentElement.getRotationOfChar; @docsEditable true
num getRotationOfChar(int offset) native;
- /** @domName SVGTextContentElement.getStartPositionOfChar */
- SVGPoint getStartPositionOfChar(int offset) native;
+ /// @domName SVGTextContentElement.getStartPositionOfChar; @docsEditable true
+ Point getStartPositionOfChar(int offset) native;
- /** @domName SVGTextContentElement.getSubStringLength */
+ /// @domName SVGTextContentElement.getSubStringLength; @docsEditable true
num getSubStringLength(int offset, int length) native;
- /** @domName SVGTextContentElement.selectSubString */
+ /// @domName SVGTextContentElement.selectSubString; @docsEditable true
void selectSubString(int offset, int length) native;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGTests
- /** @domName SVGTests.requiredExtensions */
- final SVGStringList requiredExtensions;
+ /// @domName SVGTests.requiredExtensions; @docsEditable true
+ final StringList requiredExtensions;
- /** @domName SVGTests.requiredFeatures */
- final SVGStringList requiredFeatures;
+ /// @domName SVGTests.requiredFeatures; @docsEditable true
+ final StringList requiredFeatures;
- /** @domName SVGTests.systemLanguage */
- final SVGStringList systemLanguage;
+ /// @domName SVGTests.systemLanguage; @docsEditable true
+ final StringList systemLanguage;
- /** @domName SVGTests.hasExtension */
+ /// @domName SVGTests.hasExtension; @docsEditable true
bool hasExtension(String extension) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5399,41 +5511,43 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGTextElement
-class SVGTextElement extends SVGTextPositioningElement implements SVGTransformable native "*SVGTextElement" {
+/// @domName SVGTextElement; @docsEditable true
+class TextElement extends TextPositioningElement implements Transformable native "*SVGTextElement" {
+
+ factory TextElement() => _SvgElementFactoryProvider.createSvgElement_tag("text");
// From SVGLocatable
- /** @domName SVGLocatable.farthestViewportElement */
- final SVGElement farthestViewportElement;
+ /// @domName SVGLocatable.farthestViewportElement; @docsEditable true
+ final SvgElement farthestViewportElement;
- /** @domName SVGLocatable.nearestViewportElement */
- final SVGElement nearestViewportElement;
+ /// @domName SVGLocatable.nearestViewportElement; @docsEditable true
+ final SvgElement nearestViewportElement;
- /** @domName SVGLocatable.getBBox */
- SVGRect getBBox() native;
+ /// @domName SVGLocatable.getBBox; @docsEditable true
+ Rect getBBox() native;
- /** @domName SVGLocatable.getCTM */
- SVGMatrix getCTM() native;
+ /// @domName SVGLocatable.getCTM; @docsEditable true
+ Matrix getCTM() native;
- /** @domName SVGLocatable.getScreenCTM */
- SVGMatrix getScreenCTM() native;
+ /// @domName SVGLocatable.getScreenCTM; @docsEditable true
+ Matrix getScreenCTM() native;
- /** @domName SVGLocatable.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native;
+ /// @domName SVGLocatable.getTransformToElement; @docsEditable true
+ Matrix getTransformToElement(SvgElement element) native;
// From SVGTransformable
- /** @domName SVGTransformable.transform */
- final SVGAnimatedTransformList transform;
+ /// @domName SVGTransformable.transform; @docsEditable true
+ final AnimatedTransformList transform;
}
// Copyright (c) 2012, 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.
-/// @domName SVGTextPathElement
-class SVGTextPathElement extends SVGTextContentElement implements SVGURIReference native "*SVGTextPathElement" {
+/// @domName SVGTextPathElement; @docsEditable true
+class TextPathElement extends TextContentElement implements UriReference native "*SVGTextPathElement" {
static const int TEXTPATH_METHODTYPE_ALIGN = 1;
@@ -5447,68 +5561,70 @@
static const int TEXTPATH_SPACINGTYPE_UNKNOWN = 0;
- /** @domName SVGTextPathElement.method */
- final SVGAnimatedEnumeration method;
+ /// @domName SVGTextPathElement.method; @docsEditable true
+ final AnimatedEnumeration method;
- /** @domName SVGTextPathElement.spacing */
- final SVGAnimatedEnumeration spacing;
+ /// @domName SVGTextPathElement.spacing; @docsEditable true
+ final AnimatedEnumeration spacing;
- /** @domName SVGTextPathElement.startOffset */
- final SVGAnimatedLength startOffset;
+ /// @domName SVGTextPathElement.startOffset; @docsEditable true
+ final AnimatedLength startOffset;
// From SVGURIReference
- /** @domName SVGURIReference.href */
- final SVGAnimatedString href;
+ /// @domName SVGURIReference.href; @docsEditable true
+ final AnimatedString href;
}
// Copyright (c) 2012, 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.
-/// @domName SVGTextPositioningElement
-class SVGTextPositioningElement extends SVGTextContentElement native "*SVGTextPositioningElement" {
+/// @domName SVGTextPositioningElement; @docsEditable true
+class TextPositioningElement extends TextContentElement native "*SVGTextPositioningElement" {
- /** @domName SVGTextPositioningElement.dx */
- final SVGAnimatedLengthList dx;
+ /// @domName SVGTextPositioningElement.dx; @docsEditable true
+ final AnimatedLengthList dx;
- /** @domName SVGTextPositioningElement.dy */
- final SVGAnimatedLengthList dy;
+ /// @domName SVGTextPositioningElement.dy; @docsEditable true
+ final AnimatedLengthList dy;
- /** @domName SVGTextPositioningElement.rotate */
- final SVGAnimatedNumberList rotate;
+ /// @domName SVGTextPositioningElement.rotate; @docsEditable true
+ final AnimatedNumberList rotate;
- /** @domName SVGTextPositioningElement.x */
- final SVGAnimatedLengthList x;
+ /// @domName SVGTextPositioningElement.x; @docsEditable true
+ final AnimatedLengthList x;
- /** @domName SVGTextPositioningElement.y */
- final SVGAnimatedLengthList y;
+ /// @domName SVGTextPositioningElement.y; @docsEditable true
+ final AnimatedLengthList y;
}
// Copyright (c) 2012, 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.
-/// @domName SVGTitleElement
-class SVGTitleElement extends SVGElement implements SVGLangSpace, SVGStylable native "*SVGTitleElement" {
+/// @domName SVGTitleElement; @docsEditable true
+class TitleElement extends SvgElement implements Stylable, LangSpace native "*SVGTitleElement" {
+
+ factory TitleElement() => _SvgElementFactoryProvider.createSvgElement_tag("title");
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5516,8 +5632,8 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGTransform
-class SVGTransform native "*SVGTransform" {
+/// @domName SVGTransform; @docsEditable true
+class Transform native "*SVGTransform" {
static const int SVG_TRANSFORM_MATRIX = 1;
@@ -5533,31 +5649,31 @@
static const int SVG_TRANSFORM_UNKNOWN = 0;
- /** @domName SVGTransform.angle */
+ /// @domName SVGTransform.angle; @docsEditable true
final num angle;
- /** @domName SVGTransform.matrix */
- final SVGMatrix matrix;
+ /// @domName SVGTransform.matrix; @docsEditable true
+ final Matrix matrix;
- /** @domName SVGTransform.type */
+ /// @domName SVGTransform.type; @docsEditable true
final int type;
- /** @domName SVGTransform.setMatrix */
- void setMatrix(SVGMatrix matrix) native;
+ /// @domName SVGTransform.setMatrix; @docsEditable true
+ void setMatrix(Matrix matrix) native;
- /** @domName SVGTransform.setRotate */
+ /// @domName SVGTransform.setRotate; @docsEditable true
void setRotate(num angle, num cx, num cy) native;
- /** @domName SVGTransform.setScale */
+ /// @domName SVGTransform.setScale; @docsEditable true
void setScale(num sx, num sy) native;
- /** @domName SVGTransform.setSkewX */
+ /// @domName SVGTransform.setSkewX; @docsEditable true
void setSkewX(num angle) native;
- /** @domName SVGTransform.setSkewY */
+ /// @domName SVGTransform.setSkewY; @docsEditable true
void setSkewY(num angle) native;
- /** @domName SVGTransform.setTranslate */
+ /// @domName SVGTransform.setTranslate; @docsEditable true
void setTranslate(num tx, num ty) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5565,79 +5681,81 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGTransformList
-class SVGTransformList implements JavaScriptIndexingBehavior, List<SVGTransform> native "*SVGTransformList" {
+/// @domName SVGTransformList; @docsEditable true
+class TransformList implements List<Transform>, JavaScriptIndexingBehavior native "*SVGTransformList" {
- /** @domName SVGTransformList.numberOfItems */
+ /// @domName SVGTransformList.numberOfItems; @docsEditable true
final int numberOfItems;
- SVGTransform operator[](int index) => JS("SVGTransform", "#[#]", this, index);
+ Transform operator[](int index) => JS("Transform", "#[#]", this, index);
- void operator[]=(int index, SVGTransform value) {
+ void operator[]=(int index, Transform value) {
throw new UnsupportedError("Cannot assign element of immutable List.");
}
- // -- start List<SVGTransform> mixins.
- // SVGTransform is the element type.
+ // -- start List<Transform> mixins.
+ // Transform is the element type.
- // From Iterable<SVGTransform>:
+ // From Iterable<Transform>:
- Iterator<SVGTransform> iterator() {
+ Iterator<Transform> iterator() {
// Note: NodeLists are not fixed size. And most probably length shouldn't
// be cached in both iterator _and_ forEach method. For now caching it
// for consistency.
- return new FixedSizeListIterator<SVGTransform>(this);
+ return new FixedSizeListIterator<Transform>(this);
}
- // From Collection<SVGTransform>:
+ // From Collection<Transform>:
- void add(SVGTransform value) {
+ void add(Transform value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addLast(SVGTransform value) {
+ void addLast(Transform value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addAll(Collection<SVGTransform> collection) {
+ void addAll(Collection<Transform> collection) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- bool contains(SVGTransform element) => _Collections.contains(this, element);
+ bool contains(Transform element) => _Collections.contains(this, element);
- void forEach(void f(SVGTransform element)) => _Collections.forEach(this, f);
+ void forEach(void f(Transform element)) => _Collections.forEach(this, f);
- Collection map(f(SVGTransform element)) => _Collections.map(this, [], f);
+ Collection map(f(Transform element)) => _Collections.map(this, [], f);
- Collection<SVGTransform> filter(bool f(SVGTransform element)) =>
- _Collections.filter(this, <SVGTransform>[], f);
+ Collection<Transform> filter(bool f(Transform element)) =>
+ _Collections.filter(this, <Transform>[], f);
- bool every(bool f(SVGTransform element)) => _Collections.every(this, f);
+ bool every(bool f(Transform element)) => _Collections.every(this, f);
- bool some(bool f(SVGTransform element)) => _Collections.some(this, f);
+ bool some(bool f(Transform element)) => _Collections.some(this, f);
bool get isEmpty => this.length == 0;
- // From List<SVGTransform>:
+ // From List<Transform>:
- void sort([Comparator<SVGTransform> compare = Comparable.compare]) {
+ void sort([Comparator<Transform> compare = Comparable.compare]) {
throw new UnsupportedError("Cannot sort immutable List.");
}
- int indexOf(SVGTransform element, [int start = 0]) =>
+ int indexOf(Transform element, [int start = 0]) =>
_Lists.indexOf(this, element, start, this.length);
- int lastIndexOf(SVGTransform element, [int start]) {
+ int lastIndexOf(Transform element, [int start]) {
if (start == null) start = length - 1;
return _Lists.lastIndexOf(this, element, start);
}
- SVGTransform get last => this[length - 1];
+ Transform get first => this[0];
- SVGTransform removeLast() {
+ Transform get last => this[length - 1];
+
+ Transform removeLast() {
throw new UnsupportedError("Cannot removeLast on immutable List.");
}
- void setRange(int start, int rangeLength, List<SVGTransform> from, [int startFrom]) {
+ void setRange(int start, int rangeLength, List<Transform> from, [int startFrom]) {
throw new UnsupportedError("Cannot setRange on immutable List.");
}
@@ -5645,41 +5763,41 @@
throw new UnsupportedError("Cannot removeRange on immutable List.");
}
- void insertRange(int start, int rangeLength, [SVGTransform initialValue]) {
+ void insertRange(int start, int rangeLength, [Transform initialValue]) {
throw new UnsupportedError("Cannot insertRange on immutable List.");
}
- List<SVGTransform> getRange(int start, int rangeLength) =>
- _Lists.getRange(this, start, rangeLength, <SVGTransform>[]);
+ List<Transform> getRange(int start, int rangeLength) =>
+ _Lists.getRange(this, start, rangeLength, <Transform>[]);
- // -- end List<SVGTransform> mixins.
+ // -- end List<Transform> mixins.
- /** @domName SVGTransformList.appendItem */
- SVGTransform appendItem(SVGTransform item) native;
+ /// @domName SVGTransformList.appendItem; @docsEditable true
+ Transform appendItem(Transform item) native;
- /** @domName SVGTransformList.clear */
+ /// @domName SVGTransformList.clear; @docsEditable true
void clear() native;
- /** @domName SVGTransformList.consolidate */
- SVGTransform consolidate() native;
+ /// @domName SVGTransformList.consolidate; @docsEditable true
+ Transform consolidate() native;
- /** @domName SVGTransformList.createSVGTransformFromMatrix */
- SVGTransform createSVGTransformFromMatrix(SVGMatrix matrix) native;
+ /// @domName SVGTransformList.createSVGTransformFromMatrix; @docsEditable true
+ Transform createSVGTransformFromMatrix(Matrix matrix) native;
- /** @domName SVGTransformList.getItem */
- SVGTransform getItem(int index) native;
+ /// @domName SVGTransformList.getItem; @docsEditable true
+ Transform getItem(int index) native;
- /** @domName SVGTransformList.initialize */
- SVGTransform initialize(SVGTransform item) native;
+ /// @domName SVGTransformList.initialize; @docsEditable true
+ Transform initialize(Transform item) native;
- /** @domName SVGTransformList.insertItemBefore */
- SVGTransform insertItemBefore(SVGTransform item, int index) native;
+ /// @domName SVGTransformList.insertItemBefore; @docsEditable true
+ Transform insertItemBefore(Transform item, int index) native;
- /** @domName SVGTransformList.removeItem */
- SVGTransform removeItem(int index) native;
+ /// @domName SVGTransformList.removeItem; @docsEditable true
+ Transform removeItem(int index) native;
- /** @domName SVGTransformList.replaceItem */
- SVGTransform replaceItem(SVGTransform item, int index) native;
+ /// @domName SVGTransformList.replaceItem; @docsEditable true
+ Transform replaceItem(Transform item, int index) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
@@ -5687,45 +5805,35 @@
/// @domName SVGTransformable
-abstract class SVGTransformable implements SVGLocatable {
+abstract class Transformable implements Locatable {
- SVGAnimatedTransformList transform;
+ AnimatedTransformList transform;
// From SVGLocatable
- SVGElement farthestViewportElement;
+ SvgElement farthestViewportElement;
- SVGElement nearestViewportElement;
+ SvgElement nearestViewportElement;
- /** @domName SVGLocatable.getBBox */
- SVGRect getBBox();
+ /// @domName SVGLocatable.getBBox; @docsEditable true
+ Rect getBBox();
- /** @domName SVGLocatable.getCTM */
- SVGMatrix getCTM();
+ /// @domName SVGLocatable.getCTM; @docsEditable true
+ Matrix getCTM();
- /** @domName SVGLocatable.getScreenCTM */
- SVGMatrix getScreenCTM();
+ /// @domName SVGLocatable.getScreenCTM; @docsEditable true
+ Matrix getScreenCTM();
- /** @domName SVGLocatable.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element);
+ /// @domName SVGLocatable.getTransformToElement; @docsEditable true
+ Matrix getTransformToElement(SvgElement element);
}
// Copyright (c) 2012, 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.
-/// @domName SVGURIReference
-abstract class SVGURIReference {
-
- SVGAnimatedString href;
-}
-// Copyright (c) 2012, 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.
-
-
-/// @domName SVGUnitTypes
-class SVGUnitTypes native "*SVGUnitTypes" {
+/// @domName SVGUnitTypes; @docsEditable true
+class UnitTypes native "*SVGUnitTypes" {
static const int SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2;
@@ -5738,130 +5846,146 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGUseElement
-class SVGUseElement extends SVGElement implements SVGLangSpace, SVGTests, SVGStylable, SVGURIReference, SVGExternalResourcesRequired, SVGTransformable native "*SVGUseElement" {
+/// @domName SVGURIReference
+abstract class UriReference {
- /** @domName SVGUseElement.animatedInstanceRoot */
- final SVGElementInstance animatedInstanceRoot;
+ AnimatedString href;
+}
+// Copyright (c) 2012, 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.
- /** @domName SVGUseElement.height */
- final SVGAnimatedLength height;
- /** @domName SVGUseElement.instanceRoot */
- final SVGElementInstance instanceRoot;
+/// @domName SVGUseElement; @docsEditable true
+class UseElement extends SvgElement implements Transformable, Tests, UriReference, Stylable, ExternalResourcesRequired, LangSpace native "*SVGUseElement" {
- /** @domName SVGUseElement.width */
- final SVGAnimatedLength width;
+ factory UseElement() => _SvgElementFactoryProvider.createSvgElement_tag("use");
- /** @domName SVGUseElement.x */
- final SVGAnimatedLength x;
+ /// @domName SVGUseElement.animatedInstanceRoot; @docsEditable true
+ final ElementInstance animatedInstanceRoot;
- /** @domName SVGUseElement.y */
- final SVGAnimatedLength y;
+ /// @domName SVGUseElement.height; @docsEditable true
+ final AnimatedLength height;
+
+ /// @domName SVGUseElement.instanceRoot; @docsEditable true
+ final ElementInstance instanceRoot;
+
+ /// @domName SVGUseElement.width; @docsEditable true
+ final AnimatedLength width;
+
+ /// @domName SVGUseElement.x; @docsEditable true
+ final AnimatedLength x;
+
+ /// @domName SVGUseElement.y; @docsEditable true
+ final AnimatedLength y;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGLangSpace
- /** @domName SVGLangSpace.xmllang */
+ /// @domName SVGLangSpace.xmllang; @docsEditable true
String xmllang;
- /** @domName SVGLangSpace.xmlspace */
+ /// @domName SVGLangSpace.xmlspace; @docsEditable true
String xmlspace;
// From SVGLocatable
- /** @domName SVGLocatable.farthestViewportElement */
- final SVGElement farthestViewportElement;
+ /// @domName SVGLocatable.farthestViewportElement; @docsEditable true
+ final SvgElement farthestViewportElement;
- /** @domName SVGLocatable.nearestViewportElement */
- final SVGElement nearestViewportElement;
+ /// @domName SVGLocatable.nearestViewportElement; @docsEditable true
+ final SvgElement nearestViewportElement;
- /** @domName SVGLocatable.getBBox */
- SVGRect getBBox() native;
+ /// @domName SVGLocatable.getBBox; @docsEditable true
+ Rect getBBox() native;
- /** @domName SVGLocatable.getCTM */
- SVGMatrix getCTM() native;
+ /// @domName SVGLocatable.getCTM; @docsEditable true
+ Matrix getCTM() native;
- /** @domName SVGLocatable.getScreenCTM */
- SVGMatrix getScreenCTM() native;
+ /// @domName SVGLocatable.getScreenCTM; @docsEditable true
+ Matrix getScreenCTM() native;
- /** @domName SVGLocatable.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native;
+ /// @domName SVGLocatable.getTransformToElement; @docsEditable true
+ Matrix getTransformToElement(SvgElement element) native;
// From SVGStylable
- /** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName => JS("SVGAnimatedString", "#.className", this);
+ /// @domName SVGStylable.className; @docsEditable true
+ AnimatedString get $dom_svgClassName => JS("AnimatedString", "#.className", this);
// Use implementation from Element.
// final CSSStyleDeclaration style;
- /** @domName SVGStylable.getPresentationAttribute */
+ /// @domName SVGStylable.getPresentationAttribute; @docsEditable true
CSSValue getPresentationAttribute(String name) native;
// From SVGTests
- /** @domName SVGTests.requiredExtensions */
- final SVGStringList requiredExtensions;
+ /// @domName SVGTests.requiredExtensions; @docsEditable true
+ final StringList requiredExtensions;
- /** @domName SVGTests.requiredFeatures */
- final SVGStringList requiredFeatures;
+ /// @domName SVGTests.requiredFeatures; @docsEditable true
+ final StringList requiredFeatures;
- /** @domName SVGTests.systemLanguage */
- final SVGStringList systemLanguage;
+ /// @domName SVGTests.systemLanguage; @docsEditable true
+ final StringList systemLanguage;
- /** @domName SVGTests.hasExtension */
+ /// @domName SVGTests.hasExtension; @docsEditable true
bool hasExtension(String extension) native;
// From SVGTransformable
- /** @domName SVGTransformable.transform */
- final SVGAnimatedTransformList transform;
+ /// @domName SVGTransformable.transform; @docsEditable true
+ final AnimatedTransformList transform;
// From SVGURIReference
- /** @domName SVGURIReference.href */
- final SVGAnimatedString href;
+ /// @domName SVGURIReference.href; @docsEditable true
+ final AnimatedString href;
}
// Copyright (c) 2012, 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.
-/// @domName SVGVKernElement
-class SVGVKernElement extends SVGElement native "*SVGVKernElement" {
+/// @domName SVGVKernElement; @docsEditable true
+class VKernElement extends SvgElement native "*SVGVKernElement" {
+
+ factory VKernElement() => _SvgElementFactoryProvider.createSvgElement_tag("vkern");
}
// Copyright (c) 2012, 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.
-/// @domName SVGViewElement
-class SVGViewElement extends SVGElement implements SVGFitToViewBox, SVGZoomAndPan, SVGExternalResourcesRequired native "*SVGViewElement" {
+/// @domName SVGViewElement; @docsEditable true
+class ViewElement extends SvgElement implements FitToViewBox, ExternalResourcesRequired, ZoomAndPan native "*SVGViewElement" {
- /** @domName SVGViewElement.viewTarget */
- final SVGStringList viewTarget;
+ factory ViewElement() => _SvgElementFactoryProvider.createSvgElement_tag("view");
+
+ /// @domName SVGViewElement.viewTarget; @docsEditable true
+ final StringList viewTarget;
// From SVGExternalResourcesRequired
- /** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- final SVGAnimatedBoolean externalResourcesRequired;
+ /// @domName SVGExternalResourcesRequired.externalResourcesRequired; @docsEditable true
+ final AnimatedBoolean externalResourcesRequired;
// From SVGFitToViewBox
- /** @domName SVGFitToViewBox.preserveAspectRatio */
- final SVGAnimatedPreserveAspectRatio preserveAspectRatio;
+ /// @domName SVGFitToViewBox.preserveAspectRatio; @docsEditable true
+ final AnimatedPreserveAspectRatio preserveAspectRatio;
- /** @domName SVGFitToViewBox.viewBox */
- final SVGAnimatedRect viewBox;
+ /// @domName SVGFitToViewBox.viewBox; @docsEditable true
+ final AnimatedRect viewBox;
// From SVGZoomAndPan
- /** @domName SVGZoomAndPan.zoomAndPan */
+ /// @domName SVGZoomAndPan.zoomAndPan; @docsEditable true
int zoomAndPan;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5869,34 +5993,34 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGViewSpec
-class SVGViewSpec native "*SVGViewSpec" {
+/// @domName SVGViewSpec; @docsEditable true
+class ViewSpec native "*SVGViewSpec" {
- /** @domName SVGViewSpec.preserveAspectRatio */
- final SVGAnimatedPreserveAspectRatio preserveAspectRatio;
+ /// @domName SVGViewSpec.preserveAspectRatio; @docsEditable true
+ final AnimatedPreserveAspectRatio preserveAspectRatio;
- /** @domName SVGViewSpec.preserveAspectRatioString */
+ /// @domName SVGViewSpec.preserveAspectRatioString; @docsEditable true
final String preserveAspectRatioString;
- /** @domName SVGViewSpec.transform */
- final SVGTransformList transform;
+ /// @domName SVGViewSpec.transform; @docsEditable true
+ final TransformList transform;
- /** @domName SVGViewSpec.transformString */
+ /// @domName SVGViewSpec.transformString; @docsEditable true
final String transformString;
- /** @domName SVGViewSpec.viewBox */
- final SVGAnimatedRect viewBox;
+ /// @domName SVGViewSpec.viewBox; @docsEditable true
+ final AnimatedRect viewBox;
- /** @domName SVGViewSpec.viewBoxString */
+ /// @domName SVGViewSpec.viewBoxString; @docsEditable true
final String viewBoxString;
- /** @domName SVGViewSpec.viewTarget */
- final SVGElement viewTarget;
+ /// @domName SVGViewSpec.viewTarget; @docsEditable true
+ final SvgElement viewTarget;
- /** @domName SVGViewSpec.viewTargetString */
+ /// @domName SVGViewSpec.viewTargetString; @docsEditable true
final String viewTargetString;
- /** @domName SVGViewSpec.zoomAndPan */
+ /// @domName SVGViewSpec.zoomAndPan; @docsEditable true
int zoomAndPan;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5905,7 +6029,7 @@
/// @domName SVGZoomAndPan
-abstract class SVGZoomAndPan {
+abstract class ZoomAndPan {
static const int SVG_ZOOMANDPAN_DISABLE = 1;
@@ -5920,102 +6044,104 @@
// BSD-style license that can be found in the LICENSE file.
-/// @domName SVGZoomEvent
-class SVGZoomEvent extends UIEvent native "*SVGZoomEvent" {
+/// @domName SVGZoomEvent; @docsEditable true
+class ZoomEvent extends UIEvent native "*SVGZoomEvent" {
- /** @domName SVGZoomEvent.newScale */
+ /// @domName SVGZoomEvent.newScale; @docsEditable true
final num newScale;
- /** @domName SVGZoomEvent.newTranslate */
- final SVGPoint newTranslate;
+ /// @domName SVGZoomEvent.newTranslate; @docsEditable true
+ final Point newTranslate;
- /** @domName SVGZoomEvent.previousScale */
+ /// @domName SVGZoomEvent.previousScale; @docsEditable true
final num previousScale;
- /** @domName SVGZoomEvent.previousTranslate */
- final SVGPoint previousTranslate;
+ /// @domName SVGZoomEvent.previousTranslate; @docsEditable true
+ final Point previousTranslate;
- /** @domName SVGZoomEvent.zoomRectScreen */
- final SVGRect zoomRectScreen;
+ /// @domName SVGZoomEvent.zoomRectScreen; @docsEditable true
+ final Rect zoomRectScreen;
}
// Copyright (c) 2012, 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.
-/// @domName SVGElementInstanceList
-class _SVGElementInstanceList implements JavaScriptIndexingBehavior, List<SVGElementInstance> native "*SVGElementInstanceList" {
+/// @domName SVGElementInstanceList; @docsEditable true
+class _ElementInstanceList implements JavaScriptIndexingBehavior, List<ElementInstance> native "*SVGElementInstanceList" {
- /** @domName SVGElementInstanceList.length */
+ /// @domName SVGElementInstanceList.length; @docsEditable true
final int length;
- SVGElementInstance operator[](int index) => JS("SVGElementInstance", "#[#]", this, index);
+ ElementInstance operator[](int index) => JS("ElementInstance", "#[#]", this, index);
- void operator[]=(int index, SVGElementInstance value) {
+ void operator[]=(int index, ElementInstance value) {
throw new UnsupportedError("Cannot assign element of immutable List.");
}
- // -- start List<SVGElementInstance> mixins.
- // SVGElementInstance is the element type.
+ // -- start List<ElementInstance> mixins.
+ // ElementInstance is the element type.
- // From Iterable<SVGElementInstance>:
+ // From Iterable<ElementInstance>:
- Iterator<SVGElementInstance> iterator() {
+ Iterator<ElementInstance> iterator() {
// Note: NodeLists are not fixed size. And most probably length shouldn't
// be cached in both iterator _and_ forEach method. For now caching it
// for consistency.
- return new FixedSizeListIterator<SVGElementInstance>(this);
+ return new FixedSizeListIterator<ElementInstance>(this);
}
- // From Collection<SVGElementInstance>:
+ // From Collection<ElementInstance>:
- void add(SVGElementInstance value) {
+ void add(ElementInstance value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addLast(SVGElementInstance value) {
+ void addLast(ElementInstance value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addAll(Collection<SVGElementInstance> collection) {
+ void addAll(Collection<ElementInstance> collection) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- bool contains(SVGElementInstance element) => _Collections.contains(this, element);
+ bool contains(ElementInstance element) => _Collections.contains(this, element);
- void forEach(void f(SVGElementInstance element)) => _Collections.forEach(this, f);
+ void forEach(void f(ElementInstance element)) => _Collections.forEach(this, f);
- Collection map(f(SVGElementInstance element)) => _Collections.map(this, [], f);
+ Collection map(f(ElementInstance element)) => _Collections.map(this, [], f);
- Collection<SVGElementInstance> filter(bool f(SVGElementInstance element)) =>
- _Collections.filter(this, <SVGElementInstance>[], f);
+ Collection<ElementInstance> filter(bool f(ElementInstance element)) =>
+ _Collections.filter(this, <ElementInstance>[], f);
- bool every(bool f(SVGElementInstance element)) => _Collections.every(this, f);
+ bool every(bool f(ElementInstance element)) => _Collections.every(this, f);
- bool some(bool f(SVGElementInstance element)) => _Collections.some(this, f);
+ bool some(bool f(ElementInstance element)) => _Collections.some(this, f);
bool get isEmpty => this.length == 0;
- // From List<SVGElementInstance>:
+ // From List<ElementInstance>:
- void sort([Comparator<SVGElementInstance> compare = Comparable.compare]) {
+ void sort([Comparator<ElementInstance> compare = Comparable.compare]) {
throw new UnsupportedError("Cannot sort immutable List.");
}
- int indexOf(SVGElementInstance element, [int start = 0]) =>
+ int indexOf(ElementInstance element, [int start = 0]) =>
_Lists.indexOf(this, element, start, this.length);
- int lastIndexOf(SVGElementInstance element, [int start]) {
+ int lastIndexOf(ElementInstance element, [int start]) {
if (start == null) start = length - 1;
return _Lists.lastIndexOf(this, element, start);
}
- SVGElementInstance get last => this[length - 1];
+ ElementInstance get first => this[0];
- SVGElementInstance removeLast() {
+ ElementInstance get last => this[length - 1];
+
+ ElementInstance removeLast() {
throw new UnsupportedError("Cannot removeLast on immutable List.");
}
- void setRange(int start, int rangeLength, List<SVGElementInstance> from, [int startFrom]) {
+ void setRange(int start, int rangeLength, List<ElementInstance> from, [int startFrom]) {
throw new UnsupportedError("Cannot setRange on immutable List.");
}
@@ -6023,15 +6149,15 @@
throw new UnsupportedError("Cannot removeRange on immutable List.");
}
- void insertRange(int start, int rangeLength, [SVGElementInstance initialValue]) {
+ void insertRange(int start, int rangeLength, [ElementInstance initialValue]) {
throw new UnsupportedError("Cannot insertRange on immutable List.");
}
- List<SVGElementInstance> getRange(int start, int rangeLength) =>
- _Lists.getRange(this, start, rangeLength, <SVGElementInstance>[]);
+ List<ElementInstance> getRange(int start, int rangeLength) =>
+ _Lists.getRange(this, start, rangeLength, <ElementInstance>[]);
- // -- end List<SVGElementInstance> mixins.
+ // -- end List<ElementInstance> mixins.
- /** @domName SVGElementInstanceList.item */
- SVGElementInstance item(int index) native;
+ /// @domName SVGElementInstanceList.item; @docsEditable true
+ ElementInstance item(int index) native;
}
diff --git a/sdk/lib/svg/dartium/svg_dartium.dart b/sdk/lib/svg/dartium/svg_dartium.dart
index f372945..9a60401 100644
--- a/sdk/lib/svg/dartium/svg_dartium.dart
+++ b/sdk/lib/svg/dartium/svg_dartium.dart
@@ -16,20 +16,20 @@
final _START_TAG_REGEXP = new RegExp('<(\\w+)');
-class _SVGElementFactoryProvider {
- static SVGElement createSVGElement_tag(String tag) {
+class _SvgElementFactoryProvider {
+ static SvgElement createSvgElement_tag(String tag) {
final Element temp =
document.$dom_createElementNS("http://www.w3.org/2000/svg", tag);
return temp;
}
- static SVGElement createSVGElement_svg(String svg) {
+ static SvgElement createSvgElement_svg(String svg) {
Element parentTag;
final match = _START_TAG_REGEXP.firstMatch(svg);
if (match != null && match.group(1).toLowerCase() == 'svg') {
parentTag = new Element.tag('div');
} else {
- parentTag = new SVGSVGElement();
+ parentTag = new SvgSvgElement();
}
parentTag.innerHTML = svg;
@@ -41,9 +41,9 @@
}
}
-class _SVGSVGElementFactoryProvider {
- static SVGSVGElement createSVGSVGElement() {
- final el = new SVGElement.tag("svg");
+class _SvgSvgElementFactoryProvider {
+ static SvgSvgElement createSvgSvgElement() {
+ final el = new SvgElement.tag("svg");
// The SVG spec requires the version attribute to match the spec version
el.attributes['version'] = "1.1";
return el;
@@ -57,16 +57,18 @@
/// @domName SVGAElement
-class SVGAElement extends SVGElement implements SVGLangSpace, SVGTests, SVGStylable, SVGURIReference, SVGExternalResourcesRequired, SVGTransformable {
- SVGAElement.internal(): super.internal();
+class AElement extends SvgElement implements Transformable, Tests, UriReference, Stylable, ExternalResourcesRequired, LangSpace {
+
+ factory AElement() => _SvgElementFactoryProvider.createSvgElement_tag("a");
+ AElement.internal(): super.internal();
/** @domName SVGAElement.target */
- SVGAnimatedString get target native "SVGAElement_target_Getter";
+ AnimatedString get target native "SVGAElement_target_Getter";
/** @domName SVGAElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGAElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGAElement_externalResourcesRequired_Getter";
/** @domName SVGAElement.xmllang */
@@ -86,31 +88,31 @@
/** @domName SVGAElement.farthestViewportElement */
- SVGElement get farthestViewportElement native "SVGAElement_farthestViewportElement_Getter";
+ SvgElement get farthestViewportElement native "SVGAElement_farthestViewportElement_Getter";
/** @domName SVGAElement.nearestViewportElement */
- SVGElement get nearestViewportElement native "SVGAElement_nearestViewportElement_Getter";
+ SvgElement get nearestViewportElement native "SVGAElement_nearestViewportElement_Getter";
/** @domName SVGAElement.getBBox */
- SVGRect getBBox() native "SVGAElement_getBBox_Callback";
+ Rect getBBox() native "SVGAElement_getBBox_Callback";
/** @domName SVGAElement.getCTM */
- SVGMatrix getCTM() native "SVGAElement_getCTM_Callback";
+ Matrix getCTM() native "SVGAElement_getCTM_Callback";
/** @domName SVGAElement.getScreenCTM */
- SVGMatrix getScreenCTM() native "SVGAElement_getScreenCTM_Callback";
+ Matrix getScreenCTM() native "SVGAElement_getScreenCTM_Callback";
/** @domName SVGAElement.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native "SVGAElement_getTransformToElement_Callback";
+ Matrix getTransformToElement(SvgElement element) native "SVGAElement_getTransformToElement_Callback";
/** @domName SVGAElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGAElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGAElement_className_Getter";
/** @domName SVGAElement.style */
@@ -122,15 +124,15 @@
/** @domName SVGAElement.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGAElement_requiredExtensions_Getter";
+ StringList get requiredExtensions native "SVGAElement_requiredExtensions_Getter";
/** @domName SVGAElement.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGAElement_requiredFeatures_Getter";
+ StringList get requiredFeatures native "SVGAElement_requiredFeatures_Getter";
/** @domName SVGAElement.systemLanguage */
- SVGStringList get systemLanguage native "SVGAElement_systemLanguage_Getter";
+ StringList get systemLanguage native "SVGAElement_systemLanguage_Getter";
/** @domName SVGAElement.hasExtension */
@@ -138,11 +140,11 @@
/** @domName SVGAElement.transform */
- SVGAnimatedTransformList get transform native "SVGAElement_transform_Getter";
+ AnimatedTransformList get transform native "SVGAElement_transform_Getter";
/** @domName SVGAElement.href */
- SVGAnimatedString get href native "SVGAElement_href_Getter";
+ AnimatedString get href native "SVGAElement_href_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -153,8 +155,8 @@
/// @domName SVGAltGlyphDefElement
-class SVGAltGlyphDefElement extends SVGElement {
- SVGAltGlyphDefElement.internal(): super.internal();
+class AltGlyphDefElement extends SvgElement {
+ AltGlyphDefElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -165,8 +167,8 @@
/// @domName SVGAltGlyphElement
-class SVGAltGlyphElement extends SVGTextPositioningElement implements SVGURIReference {
- SVGAltGlyphElement.internal(): super.internal();
+class AltGlyphElement extends TextPositioningElement implements UriReference {
+ AltGlyphElement.internal(): super.internal();
/** @domName SVGAltGlyphElement.format */
@@ -186,7 +188,7 @@
/** @domName SVGAltGlyphElement.href */
- SVGAnimatedString get href native "SVGAltGlyphElement_href_Getter";
+ AnimatedString get href native "SVGAltGlyphElement_href_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -197,8 +199,8 @@
/// @domName SVGAltGlyphItemElement
-class SVGAltGlyphItemElement extends SVGElement {
- SVGAltGlyphItemElement.internal(): super.internal();
+class AltGlyphItemElement extends SvgElement {
+ AltGlyphItemElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -209,8 +211,8 @@
/// @domName SVGAngle
-class SVGAngle extends NativeFieldWrapperClass1 {
- SVGAngle.internal();
+class Angle extends NativeFieldWrapperClass1 {
+ Angle.internal();
static const int SVG_ANGLETYPE_DEG = 2;
@@ -267,8 +269,10 @@
/// @domName SVGAnimateColorElement
-class SVGAnimateColorElement extends SVGAnimationElement {
- SVGAnimateColorElement.internal(): super.internal();
+class AnimateColorElement extends AnimationElement {
+
+ factory AnimateColorElement() => _SvgElementFactoryProvider.createSvgElement_tag("animateColor");
+ AnimateColorElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -279,8 +283,10 @@
/// @domName SVGAnimateElement
-class SVGAnimateElement extends SVGAnimationElement {
- SVGAnimateElement.internal(): super.internal();
+class AnimateElement extends AnimationElement {
+
+ factory AnimateElement() => _SvgElementFactoryProvider.createSvgElement_tag("animate");
+ AnimateElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -291,8 +297,10 @@
/// @domName SVGAnimateMotionElement
-class SVGAnimateMotionElement extends SVGAnimationElement {
- SVGAnimateMotionElement.internal(): super.internal();
+class AnimateMotionElement extends AnimationElement {
+
+ factory AnimateMotionElement() => _SvgElementFactoryProvider.createSvgElement_tag("animateMotion");
+ AnimateMotionElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -303,8 +311,10 @@
/// @domName SVGAnimateTransformElement
-class SVGAnimateTransformElement extends SVGAnimationElement {
- SVGAnimateTransformElement.internal(): super.internal();
+class AnimateTransformElement extends AnimationElement {
+
+ factory AnimateTransformElement() => _SvgElementFactoryProvider.createSvgElement_tag("animateTransform");
+ AnimateTransformElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -315,16 +325,16 @@
/// @domName SVGAnimatedAngle
-class SVGAnimatedAngle extends NativeFieldWrapperClass1 {
- SVGAnimatedAngle.internal();
+class AnimatedAngle extends NativeFieldWrapperClass1 {
+ AnimatedAngle.internal();
/** @domName SVGAnimatedAngle.animVal */
- SVGAngle get animVal native "SVGAnimatedAngle_animVal_Getter";
+ Angle get animVal native "SVGAnimatedAngle_animVal_Getter";
/** @domName SVGAnimatedAngle.baseVal */
- SVGAngle get baseVal native "SVGAnimatedAngle_baseVal_Getter";
+ Angle get baseVal native "SVGAnimatedAngle_baseVal_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -335,8 +345,8 @@
/// @domName SVGAnimatedBoolean
-class SVGAnimatedBoolean extends NativeFieldWrapperClass1 {
- SVGAnimatedBoolean.internal();
+class AnimatedBoolean extends NativeFieldWrapperClass1 {
+ AnimatedBoolean.internal();
/** @domName SVGAnimatedBoolean.animVal */
@@ -359,8 +369,8 @@
/// @domName SVGAnimatedEnumeration
-class SVGAnimatedEnumeration extends NativeFieldWrapperClass1 {
- SVGAnimatedEnumeration.internal();
+class AnimatedEnumeration extends NativeFieldWrapperClass1 {
+ AnimatedEnumeration.internal();
/** @domName SVGAnimatedEnumeration.animVal */
@@ -383,8 +393,8 @@
/// @domName SVGAnimatedInteger
-class SVGAnimatedInteger extends NativeFieldWrapperClass1 {
- SVGAnimatedInteger.internal();
+class AnimatedInteger extends NativeFieldWrapperClass1 {
+ AnimatedInteger.internal();
/** @domName SVGAnimatedInteger.animVal */
@@ -407,16 +417,16 @@
/// @domName SVGAnimatedLength
-class SVGAnimatedLength extends NativeFieldWrapperClass1 {
- SVGAnimatedLength.internal();
+class AnimatedLength extends NativeFieldWrapperClass1 {
+ AnimatedLength.internal();
/** @domName SVGAnimatedLength.animVal */
- SVGLength get animVal native "SVGAnimatedLength_animVal_Getter";
+ Length get animVal native "SVGAnimatedLength_animVal_Getter";
/** @domName SVGAnimatedLength.baseVal */
- SVGLength get baseVal native "SVGAnimatedLength_baseVal_Getter";
+ Length get baseVal native "SVGAnimatedLength_baseVal_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -427,84 +437,86 @@
/// @domName SVGAnimatedLengthList
-class SVGAnimatedLengthList extends NativeFieldWrapperClass1 implements List<SVGAnimatedLength> {
- SVGAnimatedLengthList.internal();
+class AnimatedLengthList extends NativeFieldWrapperClass1 implements List<AnimatedLength> {
+ AnimatedLengthList.internal();
/** @domName SVGAnimatedLengthList.animVal */
- SVGLengthList get animVal native "SVGAnimatedLengthList_animVal_Getter";
+ LengthList get animVal native "SVGAnimatedLengthList_animVal_Getter";
/** @domName SVGAnimatedLengthList.baseVal */
- SVGLengthList get baseVal native "SVGAnimatedLengthList_baseVal_Getter";
+ LengthList get baseVal native "SVGAnimatedLengthList_baseVal_Getter";
- SVGAnimatedLength operator[](int index) native "SVGAnimatedLengthList_item_Callback";
+ AnimatedLength operator[](int index) native "SVGAnimatedLengthList_item_Callback";
- void operator[]=(int index, SVGAnimatedLength value) {
+ void operator[]=(int index, AnimatedLength value) {
throw new UnsupportedError("Cannot assign element of immutable List.");
}
- // -- start List<SVGAnimatedLength> mixins.
- // SVGAnimatedLength is the element type.
+ // -- start List<AnimatedLength> mixins.
+ // AnimatedLength is the element type.
- // From Iterable<SVGAnimatedLength>:
+ // From Iterable<AnimatedLength>:
- Iterator<SVGAnimatedLength> iterator() {
+ Iterator<AnimatedLength> iterator() {
// Note: NodeLists are not fixed size. And most probably length shouldn't
// be cached in both iterator _and_ forEach method. For now caching it
// for consistency.
- return new FixedSizeListIterator<SVGAnimatedLength>(this);
+ return new FixedSizeListIterator<AnimatedLength>(this);
}
- // From Collection<SVGAnimatedLength>:
+ // From Collection<AnimatedLength>:
- void add(SVGAnimatedLength value) {
+ void add(AnimatedLength value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addLast(SVGAnimatedLength value) {
+ void addLast(AnimatedLength value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addAll(Collection<SVGAnimatedLength> collection) {
+ void addAll(Collection<AnimatedLength> collection) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- bool contains(SVGAnimatedLength element) => _Collections.contains(this, element);
+ bool contains(AnimatedLength element) => _Collections.contains(this, element);
- void forEach(void f(SVGAnimatedLength element)) => _Collections.forEach(this, f);
+ void forEach(void f(AnimatedLength element)) => _Collections.forEach(this, f);
- Collection map(f(SVGAnimatedLength element)) => _Collections.map(this, [], f);
+ Collection map(f(AnimatedLength element)) => _Collections.map(this, [], f);
- Collection<SVGAnimatedLength> filter(bool f(SVGAnimatedLength element)) =>
- _Collections.filter(this, <SVGAnimatedLength>[], f);
+ Collection<AnimatedLength> filter(bool f(AnimatedLength element)) =>
+ _Collections.filter(this, <AnimatedLength>[], f);
- bool every(bool f(SVGAnimatedLength element)) => _Collections.every(this, f);
+ bool every(bool f(AnimatedLength element)) => _Collections.every(this, f);
- bool some(bool f(SVGAnimatedLength element)) => _Collections.some(this, f);
+ bool some(bool f(AnimatedLength element)) => _Collections.some(this, f);
bool get isEmpty => this.length == 0;
- // From List<SVGAnimatedLength>:
+ // From List<AnimatedLength>:
- void sort([Comparator<SVGAnimatedLength> compare = Comparable.compare]) {
+ void sort([Comparator<AnimatedLength> compare = Comparable.compare]) {
throw new UnsupportedError("Cannot sort immutable List.");
}
- int indexOf(SVGAnimatedLength element, [int start = 0]) =>
+ int indexOf(AnimatedLength element, [int start = 0]) =>
_Lists.indexOf(this, element, start, this.length);
- int lastIndexOf(SVGAnimatedLength element, [int start]) {
+ int lastIndexOf(AnimatedLength element, [int start]) {
if (start == null) start = length - 1;
return _Lists.lastIndexOf(this, element, start);
}
- SVGAnimatedLength get last => this[length - 1];
+ AnimatedLength get first => this[0];
- SVGAnimatedLength removeLast() {
+ AnimatedLength get last => this[length - 1];
+
+ AnimatedLength removeLast() {
throw new UnsupportedError("Cannot removeLast on immutable List.");
}
- void setRange(int start, int rangeLength, List<SVGAnimatedLength> from, [int startFrom]) {
+ void setRange(int start, int rangeLength, List<AnimatedLength> from, [int startFrom]) {
throw new UnsupportedError("Cannot setRange on immutable List.");
}
@@ -512,14 +524,14 @@
throw new UnsupportedError("Cannot removeRange on immutable List.");
}
- void insertRange(int start, int rangeLength, [SVGAnimatedLength initialValue]) {
+ void insertRange(int start, int rangeLength, [AnimatedLength initialValue]) {
throw new UnsupportedError("Cannot insertRange on immutable List.");
}
- List<SVGAnimatedLength> getRange(int start, int rangeLength) =>
- _Lists.getRange(this, start, rangeLength, <SVGAnimatedLength>[]);
+ List<AnimatedLength> getRange(int start, int rangeLength) =>
+ _Lists.getRange(this, start, rangeLength, <AnimatedLength>[]);
- // -- end List<SVGAnimatedLength> mixins.
+ // -- end List<AnimatedLength> mixins.
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -530,8 +542,8 @@
/// @domName SVGAnimatedNumber
-class SVGAnimatedNumber extends NativeFieldWrapperClass1 {
- SVGAnimatedNumber.internal();
+class AnimatedNumber extends NativeFieldWrapperClass1 {
+ AnimatedNumber.internal();
/** @domName SVGAnimatedNumber.animVal */
@@ -554,84 +566,86 @@
/// @domName SVGAnimatedNumberList
-class SVGAnimatedNumberList extends NativeFieldWrapperClass1 implements List<SVGAnimatedNumber> {
- SVGAnimatedNumberList.internal();
+class AnimatedNumberList extends NativeFieldWrapperClass1 implements List<AnimatedNumber> {
+ AnimatedNumberList.internal();
/** @domName SVGAnimatedNumberList.animVal */
- SVGNumberList get animVal native "SVGAnimatedNumberList_animVal_Getter";
+ NumberList get animVal native "SVGAnimatedNumberList_animVal_Getter";
/** @domName SVGAnimatedNumberList.baseVal */
- SVGNumberList get baseVal native "SVGAnimatedNumberList_baseVal_Getter";
+ NumberList get baseVal native "SVGAnimatedNumberList_baseVal_Getter";
- SVGAnimatedNumber operator[](int index) native "SVGAnimatedNumberList_item_Callback";
+ AnimatedNumber operator[](int index) native "SVGAnimatedNumberList_item_Callback";
- void operator[]=(int index, SVGAnimatedNumber value) {
+ void operator[]=(int index, AnimatedNumber value) {
throw new UnsupportedError("Cannot assign element of immutable List.");
}
- // -- start List<SVGAnimatedNumber> mixins.
- // SVGAnimatedNumber is the element type.
+ // -- start List<AnimatedNumber> mixins.
+ // AnimatedNumber is the element type.
- // From Iterable<SVGAnimatedNumber>:
+ // From Iterable<AnimatedNumber>:
- Iterator<SVGAnimatedNumber> iterator() {
+ Iterator<AnimatedNumber> iterator() {
// Note: NodeLists are not fixed size. And most probably length shouldn't
// be cached in both iterator _and_ forEach method. For now caching it
// for consistency.
- return new FixedSizeListIterator<SVGAnimatedNumber>(this);
+ return new FixedSizeListIterator<AnimatedNumber>(this);
}
- // From Collection<SVGAnimatedNumber>:
+ // From Collection<AnimatedNumber>:
- void add(SVGAnimatedNumber value) {
+ void add(AnimatedNumber value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addLast(SVGAnimatedNumber value) {
+ void addLast(AnimatedNumber value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addAll(Collection<SVGAnimatedNumber> collection) {
+ void addAll(Collection<AnimatedNumber> collection) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- bool contains(SVGAnimatedNumber element) => _Collections.contains(this, element);
+ bool contains(AnimatedNumber element) => _Collections.contains(this, element);
- void forEach(void f(SVGAnimatedNumber element)) => _Collections.forEach(this, f);
+ void forEach(void f(AnimatedNumber element)) => _Collections.forEach(this, f);
- Collection map(f(SVGAnimatedNumber element)) => _Collections.map(this, [], f);
+ Collection map(f(AnimatedNumber element)) => _Collections.map(this, [], f);
- Collection<SVGAnimatedNumber> filter(bool f(SVGAnimatedNumber element)) =>
- _Collections.filter(this, <SVGAnimatedNumber>[], f);
+ Collection<AnimatedNumber> filter(bool f(AnimatedNumber element)) =>
+ _Collections.filter(this, <AnimatedNumber>[], f);
- bool every(bool f(SVGAnimatedNumber element)) => _Collections.every(this, f);
+ bool every(bool f(AnimatedNumber element)) => _Collections.every(this, f);
- bool some(bool f(SVGAnimatedNumber element)) => _Collections.some(this, f);
+ bool some(bool f(AnimatedNumber element)) => _Collections.some(this, f);
bool get isEmpty => this.length == 0;
- // From List<SVGAnimatedNumber>:
+ // From List<AnimatedNumber>:
- void sort([Comparator<SVGAnimatedNumber> compare = Comparable.compare]) {
+ void sort([Comparator<AnimatedNumber> compare = Comparable.compare]) {
throw new UnsupportedError("Cannot sort immutable List.");
}
- int indexOf(SVGAnimatedNumber element, [int start = 0]) =>
+ int indexOf(AnimatedNumber element, [int start = 0]) =>
_Lists.indexOf(this, element, start, this.length);
- int lastIndexOf(SVGAnimatedNumber element, [int start]) {
+ int lastIndexOf(AnimatedNumber element, [int start]) {
if (start == null) start = length - 1;
return _Lists.lastIndexOf(this, element, start);
}
- SVGAnimatedNumber get last => this[length - 1];
+ AnimatedNumber get first => this[0];
- SVGAnimatedNumber removeLast() {
+ AnimatedNumber get last => this[length - 1];
+
+ AnimatedNumber removeLast() {
throw new UnsupportedError("Cannot removeLast on immutable List.");
}
- void setRange(int start, int rangeLength, List<SVGAnimatedNumber> from, [int startFrom]) {
+ void setRange(int start, int rangeLength, List<AnimatedNumber> from, [int startFrom]) {
throw new UnsupportedError("Cannot setRange on immutable List.");
}
@@ -639,14 +653,14 @@
throw new UnsupportedError("Cannot removeRange on immutable List.");
}
- void insertRange(int start, int rangeLength, [SVGAnimatedNumber initialValue]) {
+ void insertRange(int start, int rangeLength, [AnimatedNumber initialValue]) {
throw new UnsupportedError("Cannot insertRange on immutable List.");
}
- List<SVGAnimatedNumber> getRange(int start, int rangeLength) =>
- _Lists.getRange(this, start, rangeLength, <SVGAnimatedNumber>[]);
+ List<AnimatedNumber> getRange(int start, int rangeLength) =>
+ _Lists.getRange(this, start, rangeLength, <AnimatedNumber>[]);
- // -- end List<SVGAnimatedNumber> mixins.
+ // -- end List<AnimatedNumber> mixins.
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -657,16 +671,16 @@
/// @domName SVGAnimatedPreserveAspectRatio
-class SVGAnimatedPreserveAspectRatio extends NativeFieldWrapperClass1 {
- SVGAnimatedPreserveAspectRatio.internal();
+class AnimatedPreserveAspectRatio extends NativeFieldWrapperClass1 {
+ AnimatedPreserveAspectRatio.internal();
/** @domName SVGAnimatedPreserveAspectRatio.animVal */
- SVGPreserveAspectRatio get animVal native "SVGAnimatedPreserveAspectRatio_animVal_Getter";
+ PreserveAspectRatio get animVal native "SVGAnimatedPreserveAspectRatio_animVal_Getter";
/** @domName SVGAnimatedPreserveAspectRatio.baseVal */
- SVGPreserveAspectRatio get baseVal native "SVGAnimatedPreserveAspectRatio_baseVal_Getter";
+ PreserveAspectRatio get baseVal native "SVGAnimatedPreserveAspectRatio_baseVal_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -677,16 +691,16 @@
/// @domName SVGAnimatedRect
-class SVGAnimatedRect extends NativeFieldWrapperClass1 {
- SVGAnimatedRect.internal();
+class AnimatedRect extends NativeFieldWrapperClass1 {
+ AnimatedRect.internal();
/** @domName SVGAnimatedRect.animVal */
- SVGRect get animVal native "SVGAnimatedRect_animVal_Getter";
+ Rect get animVal native "SVGAnimatedRect_animVal_Getter";
/** @domName SVGAnimatedRect.baseVal */
- SVGRect get baseVal native "SVGAnimatedRect_baseVal_Getter";
+ Rect get baseVal native "SVGAnimatedRect_baseVal_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -697,8 +711,8 @@
/// @domName SVGAnimatedString
-class SVGAnimatedString extends NativeFieldWrapperClass1 {
- SVGAnimatedString.internal();
+class AnimatedString extends NativeFieldWrapperClass1 {
+ AnimatedString.internal();
/** @domName SVGAnimatedString.animVal */
@@ -721,84 +735,86 @@
/// @domName SVGAnimatedTransformList
-class SVGAnimatedTransformList extends NativeFieldWrapperClass1 implements List<SVGAnimateTransformElement> {
- SVGAnimatedTransformList.internal();
+class AnimatedTransformList extends NativeFieldWrapperClass1 implements List<AnimateTransformElement> {
+ AnimatedTransformList.internal();
/** @domName SVGAnimatedTransformList.animVal */
- SVGTransformList get animVal native "SVGAnimatedTransformList_animVal_Getter";
+ TransformList get animVal native "SVGAnimatedTransformList_animVal_Getter";
/** @domName SVGAnimatedTransformList.baseVal */
- SVGTransformList get baseVal native "SVGAnimatedTransformList_baseVal_Getter";
+ TransformList get baseVal native "SVGAnimatedTransformList_baseVal_Getter";
- SVGAnimateTransformElement operator[](int index) native "SVGAnimatedTransformList_item_Callback";
+ AnimateTransformElement operator[](int index) native "SVGAnimatedTransformList_item_Callback";
- void operator[]=(int index, SVGAnimateTransformElement value) {
+ void operator[]=(int index, AnimateTransformElement value) {
throw new UnsupportedError("Cannot assign element of immutable List.");
}
- // -- start List<SVGAnimateTransformElement> mixins.
- // SVGAnimateTransformElement is the element type.
+ // -- start List<AnimateTransformElement> mixins.
+ // AnimateTransformElement is the element type.
- // From Iterable<SVGAnimateTransformElement>:
+ // From Iterable<AnimateTransformElement>:
- Iterator<SVGAnimateTransformElement> iterator() {
+ Iterator<AnimateTransformElement> iterator() {
// Note: NodeLists are not fixed size. And most probably length shouldn't
// be cached in both iterator _and_ forEach method. For now caching it
// for consistency.
- return new FixedSizeListIterator<SVGAnimateTransformElement>(this);
+ return new FixedSizeListIterator<AnimateTransformElement>(this);
}
- // From Collection<SVGAnimateTransformElement>:
+ // From Collection<AnimateTransformElement>:
- void add(SVGAnimateTransformElement value) {
+ void add(AnimateTransformElement value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addLast(SVGAnimateTransformElement value) {
+ void addLast(AnimateTransformElement value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addAll(Collection<SVGAnimateTransformElement> collection) {
+ void addAll(Collection<AnimateTransformElement> collection) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- bool contains(SVGAnimateTransformElement element) => _Collections.contains(this, element);
+ bool contains(AnimateTransformElement element) => _Collections.contains(this, element);
- void forEach(void f(SVGAnimateTransformElement element)) => _Collections.forEach(this, f);
+ void forEach(void f(AnimateTransformElement element)) => _Collections.forEach(this, f);
- Collection map(f(SVGAnimateTransformElement element)) => _Collections.map(this, [], f);
+ Collection map(f(AnimateTransformElement element)) => _Collections.map(this, [], f);
- Collection<SVGAnimateTransformElement> filter(bool f(SVGAnimateTransformElement element)) =>
- _Collections.filter(this, <SVGAnimateTransformElement>[], f);
+ Collection<AnimateTransformElement> filter(bool f(AnimateTransformElement element)) =>
+ _Collections.filter(this, <AnimateTransformElement>[], f);
- bool every(bool f(SVGAnimateTransformElement element)) => _Collections.every(this, f);
+ bool every(bool f(AnimateTransformElement element)) => _Collections.every(this, f);
- bool some(bool f(SVGAnimateTransformElement element)) => _Collections.some(this, f);
+ bool some(bool f(AnimateTransformElement element)) => _Collections.some(this, f);
bool get isEmpty => this.length == 0;
- // From List<SVGAnimateTransformElement>:
+ // From List<AnimateTransformElement>:
- void sort([Comparator<SVGAnimateTransformElement> compare = Comparable.compare]) {
+ void sort([Comparator<AnimateTransformElement> compare = Comparable.compare]) {
throw new UnsupportedError("Cannot sort immutable List.");
}
- int indexOf(SVGAnimateTransformElement element, [int start = 0]) =>
+ int indexOf(AnimateTransformElement element, [int start = 0]) =>
_Lists.indexOf(this, element, start, this.length);
- int lastIndexOf(SVGAnimateTransformElement element, [int start]) {
+ int lastIndexOf(AnimateTransformElement element, [int start]) {
if (start == null) start = length - 1;
return _Lists.lastIndexOf(this, element, start);
}
- SVGAnimateTransformElement get last => this[length - 1];
+ AnimateTransformElement get first => this[0];
- SVGAnimateTransformElement removeLast() {
+ AnimateTransformElement get last => this[length - 1];
+
+ AnimateTransformElement removeLast() {
throw new UnsupportedError("Cannot removeLast on immutable List.");
}
- void setRange(int start, int rangeLength, List<SVGAnimateTransformElement> from, [int startFrom]) {
+ void setRange(int start, int rangeLength, List<AnimateTransformElement> from, [int startFrom]) {
throw new UnsupportedError("Cannot setRange on immutable List.");
}
@@ -806,14 +822,14 @@
throw new UnsupportedError("Cannot removeRange on immutable List.");
}
- void insertRange(int start, int rangeLength, [SVGAnimateTransformElement initialValue]) {
+ void insertRange(int start, int rangeLength, [AnimateTransformElement initialValue]) {
throw new UnsupportedError("Cannot insertRange on immutable List.");
}
- List<SVGAnimateTransformElement> getRange(int start, int rangeLength) =>
- _Lists.getRange(this, start, rangeLength, <SVGAnimateTransformElement>[]);
+ List<AnimateTransformElement> getRange(int start, int rangeLength) =>
+ _Lists.getRange(this, start, rangeLength, <AnimateTransformElement>[]);
- // -- end List<SVGAnimateTransformElement> mixins.
+ // -- end List<AnimateTransformElement> mixins.
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -824,12 +840,14 @@
/// @domName SVGAnimationElement
-class SVGAnimationElement extends SVGElement implements ElementTimeControl, SVGTests, SVGExternalResourcesRequired {
- SVGAnimationElement.internal(): super.internal();
+class AnimationElement extends SvgElement implements Tests, ElementTimeControl, ExternalResourcesRequired {
+
+ factory AnimationElement() => _SvgElementFactoryProvider.createSvgElement_tag("animation");
+ AnimationElement.internal(): super.internal();
/** @domName SVGAnimationElement.targetElement */
- SVGElement get targetElement native "SVGAnimationElement_targetElement_Getter";
+ SvgElement get targetElement native "SVGAnimationElement_targetElement_Getter";
/** @domName SVGAnimationElement.getCurrentTime */
@@ -861,19 +879,19 @@
/** @domName SVGAnimationElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGAnimationElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGAnimationElement_externalResourcesRequired_Getter";
/** @domName SVGAnimationElement.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGAnimationElement_requiredExtensions_Getter";
+ StringList get requiredExtensions native "SVGAnimationElement_requiredExtensions_Getter";
/** @domName SVGAnimationElement.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGAnimationElement_requiredFeatures_Getter";
+ StringList get requiredFeatures native "SVGAnimationElement_requiredFeatures_Getter";
/** @domName SVGAnimationElement.systemLanguage */
- SVGStringList get systemLanguage native "SVGAnimationElement_systemLanguage_Getter";
+ StringList get systemLanguage native "SVGAnimationElement_systemLanguage_Getter";
/** @domName SVGAnimationElement.hasExtension */
@@ -888,24 +906,26 @@
/// @domName SVGCircleElement
-class SVGCircleElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired {
- SVGCircleElement.internal(): super.internal();
+class CircleElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace {
+
+ factory CircleElement() => _SvgElementFactoryProvider.createSvgElement_tag("circle");
+ CircleElement.internal(): super.internal();
/** @domName SVGCircleElement.cx */
- SVGAnimatedLength get cx native "SVGCircleElement_cx_Getter";
+ AnimatedLength get cx native "SVGCircleElement_cx_Getter";
/** @domName SVGCircleElement.cy */
- SVGAnimatedLength get cy native "SVGCircleElement_cy_Getter";
+ AnimatedLength get cy native "SVGCircleElement_cy_Getter";
/** @domName SVGCircleElement.r */
- SVGAnimatedLength get r native "SVGCircleElement_r_Getter";
+ AnimatedLength get r native "SVGCircleElement_r_Getter";
/** @domName SVGCircleElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGCircleElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGCircleElement_externalResourcesRequired_Getter";
/** @domName SVGCircleElement.xmllang */
@@ -925,31 +945,31 @@
/** @domName SVGCircleElement.farthestViewportElement */
- SVGElement get farthestViewportElement native "SVGCircleElement_farthestViewportElement_Getter";
+ SvgElement get farthestViewportElement native "SVGCircleElement_farthestViewportElement_Getter";
/** @domName SVGCircleElement.nearestViewportElement */
- SVGElement get nearestViewportElement native "SVGCircleElement_nearestViewportElement_Getter";
+ SvgElement get nearestViewportElement native "SVGCircleElement_nearestViewportElement_Getter";
/** @domName SVGCircleElement.getBBox */
- SVGRect getBBox() native "SVGCircleElement_getBBox_Callback";
+ Rect getBBox() native "SVGCircleElement_getBBox_Callback";
/** @domName SVGCircleElement.getCTM */
- SVGMatrix getCTM() native "SVGCircleElement_getCTM_Callback";
+ Matrix getCTM() native "SVGCircleElement_getCTM_Callback";
/** @domName SVGCircleElement.getScreenCTM */
- SVGMatrix getScreenCTM() native "SVGCircleElement_getScreenCTM_Callback";
+ Matrix getScreenCTM() native "SVGCircleElement_getScreenCTM_Callback";
/** @domName SVGCircleElement.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native "SVGCircleElement_getTransformToElement_Callback";
+ Matrix getTransformToElement(SvgElement element) native "SVGCircleElement_getTransformToElement_Callback";
/** @domName SVGCircleElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGCircleElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGCircleElement_className_Getter";
/** @domName SVGCircleElement.style */
@@ -961,15 +981,15 @@
/** @domName SVGCircleElement.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGCircleElement_requiredExtensions_Getter";
+ StringList get requiredExtensions native "SVGCircleElement_requiredExtensions_Getter";
/** @domName SVGCircleElement.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGCircleElement_requiredFeatures_Getter";
+ StringList get requiredFeatures native "SVGCircleElement_requiredFeatures_Getter";
/** @domName SVGCircleElement.systemLanguage */
- SVGStringList get systemLanguage native "SVGCircleElement_systemLanguage_Getter";
+ StringList get systemLanguage native "SVGCircleElement_systemLanguage_Getter";
/** @domName SVGCircleElement.hasExtension */
@@ -977,7 +997,7 @@
/** @domName SVGCircleElement.transform */
- SVGAnimatedTransformList get transform native "SVGCircleElement_transform_Getter";
+ AnimatedTransformList get transform native "SVGCircleElement_transform_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -988,16 +1008,18 @@
/// @domName SVGClipPathElement
-class SVGClipPathElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired {
- SVGClipPathElement.internal(): super.internal();
+class ClipPathElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace {
+
+ factory ClipPathElement() => _SvgElementFactoryProvider.createSvgElement_tag("clipPath");
+ ClipPathElement.internal(): super.internal();
/** @domName SVGClipPathElement.clipPathUnits */
- SVGAnimatedEnumeration get clipPathUnits native "SVGClipPathElement_clipPathUnits_Getter";
+ AnimatedEnumeration get clipPathUnits native "SVGClipPathElement_clipPathUnits_Getter";
/** @domName SVGClipPathElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGClipPathElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGClipPathElement_externalResourcesRequired_Getter";
/** @domName SVGClipPathElement.xmllang */
@@ -1017,31 +1039,31 @@
/** @domName SVGClipPathElement.farthestViewportElement */
- SVGElement get farthestViewportElement native "SVGClipPathElement_farthestViewportElement_Getter";
+ SvgElement get farthestViewportElement native "SVGClipPathElement_farthestViewportElement_Getter";
/** @domName SVGClipPathElement.nearestViewportElement */
- SVGElement get nearestViewportElement native "SVGClipPathElement_nearestViewportElement_Getter";
+ SvgElement get nearestViewportElement native "SVGClipPathElement_nearestViewportElement_Getter";
/** @domName SVGClipPathElement.getBBox */
- SVGRect getBBox() native "SVGClipPathElement_getBBox_Callback";
+ Rect getBBox() native "SVGClipPathElement_getBBox_Callback";
/** @domName SVGClipPathElement.getCTM */
- SVGMatrix getCTM() native "SVGClipPathElement_getCTM_Callback";
+ Matrix getCTM() native "SVGClipPathElement_getCTM_Callback";
/** @domName SVGClipPathElement.getScreenCTM */
- SVGMatrix getScreenCTM() native "SVGClipPathElement_getScreenCTM_Callback";
+ Matrix getScreenCTM() native "SVGClipPathElement_getScreenCTM_Callback";
/** @domName SVGClipPathElement.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native "SVGClipPathElement_getTransformToElement_Callback";
+ Matrix getTransformToElement(SvgElement element) native "SVGClipPathElement_getTransformToElement_Callback";
/** @domName SVGClipPathElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGClipPathElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGClipPathElement_className_Getter";
/** @domName SVGClipPathElement.style */
@@ -1053,15 +1075,15 @@
/** @domName SVGClipPathElement.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGClipPathElement_requiredExtensions_Getter";
+ StringList get requiredExtensions native "SVGClipPathElement_requiredExtensions_Getter";
/** @domName SVGClipPathElement.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGClipPathElement_requiredFeatures_Getter";
+ StringList get requiredFeatures native "SVGClipPathElement_requiredFeatures_Getter";
/** @domName SVGClipPathElement.systemLanguage */
- SVGStringList get systemLanguage native "SVGClipPathElement_systemLanguage_Getter";
+ StringList get systemLanguage native "SVGClipPathElement_systemLanguage_Getter";
/** @domName SVGClipPathElement.hasExtension */
@@ -1069,7 +1091,7 @@
/** @domName SVGClipPathElement.transform */
- SVGAnimatedTransformList get transform native "SVGClipPathElement_transform_Getter";
+ AnimatedTransformList get transform native "SVGClipPathElement_transform_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1080,8 +1102,8 @@
/// @domName SVGColor
-class SVGColor extends CSSValue {
- SVGColor.internal(): super.internal();
+class Color extends CSSValue {
+ Color.internal(): super.internal();
static const int SVG_COLORTYPE_CURRENTCOLOR = 3;
@@ -1120,8 +1142,8 @@
/// @domName SVGComponentTransferFunctionElement
-class SVGComponentTransferFunctionElement extends SVGElement {
- SVGComponentTransferFunctionElement.internal(): super.internal();
+class ComponentTransferFunctionElement extends SvgElement {
+ ComponentTransferFunctionElement.internal(): super.internal();
static const int SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3;
@@ -1137,31 +1159,31 @@
/** @domName SVGComponentTransferFunctionElement.amplitude */
- SVGAnimatedNumber get amplitude native "SVGComponentTransferFunctionElement_amplitude_Getter";
+ AnimatedNumber get amplitude native "SVGComponentTransferFunctionElement_amplitude_Getter";
/** @domName SVGComponentTransferFunctionElement.exponent */
- SVGAnimatedNumber get exponent native "SVGComponentTransferFunctionElement_exponent_Getter";
+ AnimatedNumber get exponent native "SVGComponentTransferFunctionElement_exponent_Getter";
/** @domName SVGComponentTransferFunctionElement.intercept */
- SVGAnimatedNumber get intercept native "SVGComponentTransferFunctionElement_intercept_Getter";
+ AnimatedNumber get intercept native "SVGComponentTransferFunctionElement_intercept_Getter";
/** @domName SVGComponentTransferFunctionElement.offset */
- SVGAnimatedNumber get offset native "SVGComponentTransferFunctionElement_offset_Getter";
+ AnimatedNumber get offset native "SVGComponentTransferFunctionElement_offset_Getter";
/** @domName SVGComponentTransferFunctionElement.slope */
- SVGAnimatedNumber get slope native "SVGComponentTransferFunctionElement_slope_Getter";
+ AnimatedNumber get slope native "SVGComponentTransferFunctionElement_slope_Getter";
/** @domName SVGComponentTransferFunctionElement.tableValues */
- SVGAnimatedNumberList get tableValues native "SVGComponentTransferFunctionElement_tableValues_Getter";
+ AnimatedNumberList get tableValues native "SVGComponentTransferFunctionElement_tableValues_Getter";
/** @domName SVGComponentTransferFunctionElement.type */
- SVGAnimatedEnumeration get type native "SVGComponentTransferFunctionElement_type_Getter";
+ AnimatedEnumeration get type native "SVGComponentTransferFunctionElement_type_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1172,32 +1194,34 @@
/// @domName SVGCursorElement
-class SVGCursorElement extends SVGElement implements SVGURIReference, SVGTests, SVGExternalResourcesRequired {
- SVGCursorElement.internal(): super.internal();
+class CursorElement extends SvgElement implements UriReference, Tests, ExternalResourcesRequired {
+
+ factory CursorElement() => _SvgElementFactoryProvider.createSvgElement_tag("cursor");
+ CursorElement.internal(): super.internal();
/** @domName SVGCursorElement.x */
- SVGAnimatedLength get x native "SVGCursorElement_x_Getter";
+ AnimatedLength get x native "SVGCursorElement_x_Getter";
/** @domName SVGCursorElement.y */
- SVGAnimatedLength get y native "SVGCursorElement_y_Getter";
+ AnimatedLength get y native "SVGCursorElement_y_Getter";
/** @domName SVGCursorElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGCursorElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGCursorElement_externalResourcesRequired_Getter";
/** @domName SVGCursorElement.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGCursorElement_requiredExtensions_Getter";
+ StringList get requiredExtensions native "SVGCursorElement_requiredExtensions_Getter";
/** @domName SVGCursorElement.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGCursorElement_requiredFeatures_Getter";
+ StringList get requiredFeatures native "SVGCursorElement_requiredFeatures_Getter";
/** @domName SVGCursorElement.systemLanguage */
- SVGStringList get systemLanguage native "SVGCursorElement_systemLanguage_Getter";
+ StringList get systemLanguage native "SVGCursorElement_systemLanguage_Getter";
/** @domName SVGCursorElement.hasExtension */
@@ -1205,7 +1229,7 @@
/** @domName SVGCursorElement.href */
- SVGAnimatedString get href native "SVGCursorElement_href_Getter";
+ AnimatedString get href native "SVGCursorElement_href_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1216,12 +1240,14 @@
/// @domName SVGDefsElement
-class SVGDefsElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired {
- SVGDefsElement.internal(): super.internal();
+class DefsElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace {
+
+ factory DefsElement() => _SvgElementFactoryProvider.createSvgElement_tag("defs");
+ DefsElement.internal(): super.internal();
/** @domName SVGDefsElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGDefsElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGDefsElement_externalResourcesRequired_Getter";
/** @domName SVGDefsElement.xmllang */
@@ -1241,31 +1267,31 @@
/** @domName SVGDefsElement.farthestViewportElement */
- SVGElement get farthestViewportElement native "SVGDefsElement_farthestViewportElement_Getter";
+ SvgElement get farthestViewportElement native "SVGDefsElement_farthestViewportElement_Getter";
/** @domName SVGDefsElement.nearestViewportElement */
- SVGElement get nearestViewportElement native "SVGDefsElement_nearestViewportElement_Getter";
+ SvgElement get nearestViewportElement native "SVGDefsElement_nearestViewportElement_Getter";
/** @domName SVGDefsElement.getBBox */
- SVGRect getBBox() native "SVGDefsElement_getBBox_Callback";
+ Rect getBBox() native "SVGDefsElement_getBBox_Callback";
/** @domName SVGDefsElement.getCTM */
- SVGMatrix getCTM() native "SVGDefsElement_getCTM_Callback";
+ Matrix getCTM() native "SVGDefsElement_getCTM_Callback";
/** @domName SVGDefsElement.getScreenCTM */
- SVGMatrix getScreenCTM() native "SVGDefsElement_getScreenCTM_Callback";
+ Matrix getScreenCTM() native "SVGDefsElement_getScreenCTM_Callback";
/** @domName SVGDefsElement.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native "SVGDefsElement_getTransformToElement_Callback";
+ Matrix getTransformToElement(SvgElement element) native "SVGDefsElement_getTransformToElement_Callback";
/** @domName SVGDefsElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGDefsElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGDefsElement_className_Getter";
/** @domName SVGDefsElement.style */
@@ -1277,15 +1303,15 @@
/** @domName SVGDefsElement.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGDefsElement_requiredExtensions_Getter";
+ StringList get requiredExtensions native "SVGDefsElement_requiredExtensions_Getter";
/** @domName SVGDefsElement.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGDefsElement_requiredFeatures_Getter";
+ StringList get requiredFeatures native "SVGDefsElement_requiredFeatures_Getter";
/** @domName SVGDefsElement.systemLanguage */
- SVGStringList get systemLanguage native "SVGDefsElement_systemLanguage_Getter";
+ StringList get systemLanguage native "SVGDefsElement_systemLanguage_Getter";
/** @domName SVGDefsElement.hasExtension */
@@ -1293,7 +1319,7 @@
/** @domName SVGDefsElement.transform */
- SVGAnimatedTransformList get transform native "SVGDefsElement_transform_Getter";
+ AnimatedTransformList get transform native "SVGDefsElement_transform_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1304,8 +1330,10 @@
/// @domName SVGDescElement
-class SVGDescElement extends SVGElement implements SVGLangSpace, SVGStylable {
- SVGDescElement.internal(): super.internal();
+class DescElement extends SvgElement implements Stylable, LangSpace {
+
+ factory DescElement() => _SvgElementFactoryProvider.createSvgElement_tag("desc");
+ DescElement.internal(): super.internal();
/** @domName SVGDescElement.xmllang */
@@ -1325,7 +1353,7 @@
/** @domName SVGDescElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGDescElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGDescElement_className_Getter";
/** @domName SVGDescElement.style */
@@ -1343,175 +1371,50 @@
// WARNING: Do not edit - generated code.
-/// @domName SVGDocument
-class SVGDocument extends Document {
- SVGDocument.internal(): super.internal();
-
-
- /** @domName SVGDocument.rootElement */
- SVGSVGElement get rootElement native "SVGDocument_rootElement_Getter";
-
-
- /** @domName SVGDocument.createEvent */
- Event $dom_createEvent(String eventType) native "SVGDocument_createEvent_Callback";
-
-}
-// Copyright (c) 2011, 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.
-
-
-class _AttributeClassSet extends CssClassSet {
- final Element _element;
-
- _AttributeClassSet(this._element);
-
- Set<String> readClasses() {
- var classname = _element.attributes['class'];
-
- Set<String> s = new Set<String>();
- if (classname == null) {
- return s;
- }
- for (String name in classname.split(' ')) {
- String trimmed = name.trim();
- if (!trimmed.isEmpty) {
- s.add(trimmed);
- }
- }
- return s;
- }
-
- void writeClasses(Set s) {
- List list = new List.from(s);
- _element.attributes['class'] = Strings.join(list, ' ');
- }
-}
-
-class SVGElement extends Element {
- factory SVGElement.tag(String tag) =>
- _SVGElementFactoryProvider.createSVGElement_tag(tag);
- factory SVGElement.svg(String svg) =>
- _SVGElementFactoryProvider.createSVGElement_svg(svg);
-
- _AttributeClassSet _cssClassSet;
- CssClassSet get classes {
- if (_cssClassSet == null) {
- _cssClassSet = new _AttributeClassSet(this);
- }
- return _cssClassSet;
- }
-
- List<Element> get elements => new FilteredElementList(this);
-
- void set elements(Collection<Element> value) {
- final elements = this.elements;
- elements.clear();
- elements.addAll(value);
- }
-
- String get outerHTML {
- final container = new Element.tag("div");
- final SVGElement cloned = this.clone(true);
- container.elements.add(cloned);
- return container.innerHTML;
- }
-
- String get innerHTML {
- final container = new Element.tag("div");
- final SVGElement cloned = this.clone(true);
- container.elements.addAll(cloned.elements);
- return container.innerHTML;
- }
-
- void set innerHTML(String svg) {
- final container = new Element.tag("div");
- // Wrap the SVG string in <svg> so that SVGElements are created, rather than
- // HTMLElements.
- container.innerHTML = '<svg version="1.1">$svg</svg>';
- this.elements = container.elements[0].elements;
- }
-
- SVGElement.internal(): super.internal();
-
-
- /** @domName SVGElement.id */
- String get id native "SVGElement_id_Getter";
-
-
- /** @domName SVGElement.id */
- void set id(String value) native "SVGElement_id_Setter";
-
-
- /** @domName SVGElement.ownerSVGElement */
- SVGSVGElement get ownerSVGElement native "SVGElement_ownerSVGElement_Getter";
-
-
- /** @domName SVGElement.viewportElement */
- SVGElement get viewportElement native "SVGElement_viewportElement_Getter";
-
-
- /** @domName SVGElement.xmlbase */
- String get xmlbase native "SVGElement_xmlbase_Getter";
-
-
- /** @domName SVGElement.xmlbase */
- void set xmlbase(String value) native "SVGElement_xmlbase_Setter";
-
-}
-// Copyright (c) 2012, 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.
-
-// WARNING: Do not edit - generated code.
-
-
/// @domName SVGElementInstance
-class SVGElementInstance extends EventTarget {
- SVGElementInstance.internal(): super.internal();
+class ElementInstance extends EventTarget {
+ ElementInstance.internal(): super.internal();
- /**
- * @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent
- */
- SVGElementInstanceEvents get on =>
- new SVGElementInstanceEvents(this);
+ /// @domName EventTarget.addEventListener, EventTarget.removeEventListener, EventTarget.dispatchEvent; @docsEditable true
+ ElementInstanceEvents get on =>
+ new ElementInstanceEvents(this);
/** @domName SVGElementInstance.childNodes */
- List<SVGElementInstance> get childNodes native "SVGElementInstance_childNodes_Getter";
+ List<ElementInstance> get childNodes native "SVGElementInstance_childNodes_Getter";
/** @domName SVGElementInstance.correspondingElement */
- SVGElement get correspondingElement native "SVGElementInstance_correspondingElement_Getter";
+ SvgElement get correspondingElement native "SVGElementInstance_correspondingElement_Getter";
/** @domName SVGElementInstance.correspondingUseElement */
- SVGUseElement get correspondingUseElement native "SVGElementInstance_correspondingUseElement_Getter";
+ UseElement get correspondingUseElement native "SVGElementInstance_correspondingUseElement_Getter";
/** @domName SVGElementInstance.firstChild */
- SVGElementInstance get firstChild native "SVGElementInstance_firstChild_Getter";
+ ElementInstance get firstChild native "SVGElementInstance_firstChild_Getter";
/** @domName SVGElementInstance.lastChild */
- SVGElementInstance get lastChild native "SVGElementInstance_lastChild_Getter";
+ ElementInstance get lastChild native "SVGElementInstance_lastChild_Getter";
/** @domName SVGElementInstance.nextSibling */
- SVGElementInstance get nextSibling native "SVGElementInstance_nextSibling_Getter";
+ ElementInstance get nextSibling native "SVGElementInstance_nextSibling_Getter";
/** @domName SVGElementInstance.parentNode */
- SVGElementInstance get parentNode native "SVGElementInstance_parentNode_Getter";
+ ElementInstance get parentNode native "SVGElementInstance_parentNode_Getter";
/** @domName SVGElementInstance.previousSibling */
- SVGElementInstance get previousSibling native "SVGElementInstance_previousSibling_Getter";
+ ElementInstance get previousSibling native "SVGElementInstance_previousSibling_Getter";
}
-class SVGElementInstanceEvents extends Events {
- SVGElementInstanceEvents(EventTarget _ptr) : super(_ptr);
+class ElementInstanceEvents extends Events {
+ ElementInstanceEvents(EventTarget _ptr) : super(_ptr);
EventListenerList get abort => this['abort'];
@@ -1601,28 +1504,30 @@
/// @domName SVGEllipseElement
-class SVGEllipseElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired {
- SVGEllipseElement.internal(): super.internal();
+class EllipseElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace {
+
+ factory EllipseElement() => _SvgElementFactoryProvider.createSvgElement_tag("ellipse");
+ EllipseElement.internal(): super.internal();
/** @domName SVGEllipseElement.cx */
- SVGAnimatedLength get cx native "SVGEllipseElement_cx_Getter";
+ AnimatedLength get cx native "SVGEllipseElement_cx_Getter";
/** @domName SVGEllipseElement.cy */
- SVGAnimatedLength get cy native "SVGEllipseElement_cy_Getter";
+ AnimatedLength get cy native "SVGEllipseElement_cy_Getter";
/** @domName SVGEllipseElement.rx */
- SVGAnimatedLength get rx native "SVGEllipseElement_rx_Getter";
+ AnimatedLength get rx native "SVGEllipseElement_rx_Getter";
/** @domName SVGEllipseElement.ry */
- SVGAnimatedLength get ry native "SVGEllipseElement_ry_Getter";
+ AnimatedLength get ry native "SVGEllipseElement_ry_Getter";
/** @domName SVGEllipseElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGEllipseElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGEllipseElement_externalResourcesRequired_Getter";
/** @domName SVGEllipseElement.xmllang */
@@ -1642,31 +1547,31 @@
/** @domName SVGEllipseElement.farthestViewportElement */
- SVGElement get farthestViewportElement native "SVGEllipseElement_farthestViewportElement_Getter";
+ SvgElement get farthestViewportElement native "SVGEllipseElement_farthestViewportElement_Getter";
/** @domName SVGEllipseElement.nearestViewportElement */
- SVGElement get nearestViewportElement native "SVGEllipseElement_nearestViewportElement_Getter";
+ SvgElement get nearestViewportElement native "SVGEllipseElement_nearestViewportElement_Getter";
/** @domName SVGEllipseElement.getBBox */
- SVGRect getBBox() native "SVGEllipseElement_getBBox_Callback";
+ Rect getBBox() native "SVGEllipseElement_getBBox_Callback";
/** @domName SVGEllipseElement.getCTM */
- SVGMatrix getCTM() native "SVGEllipseElement_getCTM_Callback";
+ Matrix getCTM() native "SVGEllipseElement_getCTM_Callback";
/** @domName SVGEllipseElement.getScreenCTM */
- SVGMatrix getScreenCTM() native "SVGEllipseElement_getScreenCTM_Callback";
+ Matrix getScreenCTM() native "SVGEllipseElement_getScreenCTM_Callback";
/** @domName SVGEllipseElement.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native "SVGEllipseElement_getTransformToElement_Callback";
+ Matrix getTransformToElement(SvgElement element) native "SVGEllipseElement_getTransformToElement_Callback";
/** @domName SVGEllipseElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGEllipseElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGEllipseElement_className_Getter";
/** @domName SVGEllipseElement.style */
@@ -1678,15 +1583,15 @@
/** @domName SVGEllipseElement.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGEllipseElement_requiredExtensions_Getter";
+ StringList get requiredExtensions native "SVGEllipseElement_requiredExtensions_Getter";
/** @domName SVGEllipseElement.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGEllipseElement_requiredFeatures_Getter";
+ StringList get requiredFeatures native "SVGEllipseElement_requiredFeatures_Getter";
/** @domName SVGEllipseElement.systemLanguage */
- SVGStringList get systemLanguage native "SVGEllipseElement_systemLanguage_Getter";
+ StringList get systemLanguage native "SVGEllipseElement_systemLanguage_Getter";
/** @domName SVGEllipseElement.hasExtension */
@@ -1694,7 +1599,7 @@
/** @domName SVGEllipseElement.transform */
- SVGAnimatedTransformList get transform native "SVGEllipseElement_transform_Getter";
+ AnimatedTransformList get transform native "SVGEllipseElement_transform_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1705,8 +1610,8 @@
/// @domName SVGException
-class SVGException extends NativeFieldWrapperClass1 {
- SVGException.internal();
+class Exception extends NativeFieldWrapperClass1 {
+ Exception.internal();
static const int SVG_INVALID_VALUE_ERR = 1;
@@ -1739,12 +1644,12 @@
/// @domName SVGExternalResourcesRequired
-class SVGExternalResourcesRequired extends NativeFieldWrapperClass1 {
- SVGExternalResourcesRequired.internal();
+class ExternalResourcesRequired extends NativeFieldWrapperClass1 {
+ ExternalResourcesRequired.internal();
/** @domName SVGExternalResourcesRequired.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGExternalResourcesRequired_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGExternalResourcesRequired_externalResourcesRequired_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -1755,8 +1660,8 @@
/// @domName SVGFEBlendElement
-class SVGFEBlendElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes {
- SVGFEBlendElement.internal(): super.internal();
+class FEBlendElement extends SvgElement implements FilterPrimitiveStandardAttributes {
+ FEBlendElement.internal(): super.internal();
static const int SVG_FEBLEND_MODE_DARKEN = 4;
@@ -1772,39 +1677,39 @@
/** @domName SVGFEBlendElement.in1 */
- SVGAnimatedString get in1 native "SVGFEBlendElement_in1_Getter";
+ AnimatedString get in1 native "SVGFEBlendElement_in1_Getter";
/** @domName SVGFEBlendElement.in2 */
- SVGAnimatedString get in2 native "SVGFEBlendElement_in2_Getter";
+ AnimatedString get in2 native "SVGFEBlendElement_in2_Getter";
/** @domName SVGFEBlendElement.mode */
- SVGAnimatedEnumeration get mode native "SVGFEBlendElement_mode_Getter";
+ AnimatedEnumeration get mode native "SVGFEBlendElement_mode_Getter";
/** @domName SVGFEBlendElement.height */
- SVGAnimatedLength get height native "SVGFEBlendElement_height_Getter";
+ AnimatedLength get height native "SVGFEBlendElement_height_Getter";
/** @domName SVGFEBlendElement.result */
- SVGAnimatedString get result native "SVGFEBlendElement_result_Getter";
+ AnimatedString get result native "SVGFEBlendElement_result_Getter";
/** @domName SVGFEBlendElement.width */
- SVGAnimatedLength get width native "SVGFEBlendElement_width_Getter";
+ AnimatedLength get width native "SVGFEBlendElement_width_Getter";
/** @domName SVGFEBlendElement.x */
- SVGAnimatedLength get x native "SVGFEBlendElement_x_Getter";
+ AnimatedLength get x native "SVGFEBlendElement_x_Getter";
/** @domName SVGFEBlendElement.y */
- SVGAnimatedLength get y native "SVGFEBlendElement_y_Getter";
+ AnimatedLength get y native "SVGFEBlendElement_y_Getter";
/** @domName SVGFEBlendElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGFEBlendElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGFEBlendElement_className_Getter";
/** @domName SVGFEBlendElement.style */
@@ -1823,8 +1728,8 @@
/// @domName SVGFEColorMatrixElement
-class SVGFEColorMatrixElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes {
- SVGFEColorMatrixElement.internal(): super.internal();
+class FEColorMatrixElement extends SvgElement implements FilterPrimitiveStandardAttributes {
+ FEColorMatrixElement.internal(): super.internal();
static const int SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3;
@@ -1838,39 +1743,39 @@
/** @domName SVGFEColorMatrixElement.in1 */
- SVGAnimatedString get in1 native "SVGFEColorMatrixElement_in1_Getter";
+ AnimatedString get in1 native "SVGFEColorMatrixElement_in1_Getter";
/** @domName SVGFEColorMatrixElement.type */
- SVGAnimatedEnumeration get type native "SVGFEColorMatrixElement_type_Getter";
+ AnimatedEnumeration get type native "SVGFEColorMatrixElement_type_Getter";
/** @domName SVGFEColorMatrixElement.values */
- SVGAnimatedNumberList get values native "SVGFEColorMatrixElement_values_Getter";
+ AnimatedNumberList get values native "SVGFEColorMatrixElement_values_Getter";
/** @domName SVGFEColorMatrixElement.height */
- SVGAnimatedLength get height native "SVGFEColorMatrixElement_height_Getter";
+ AnimatedLength get height native "SVGFEColorMatrixElement_height_Getter";
/** @domName SVGFEColorMatrixElement.result */
- SVGAnimatedString get result native "SVGFEColorMatrixElement_result_Getter";
+ AnimatedString get result native "SVGFEColorMatrixElement_result_Getter";
/** @domName SVGFEColorMatrixElement.width */
- SVGAnimatedLength get width native "SVGFEColorMatrixElement_width_Getter";
+ AnimatedLength get width native "SVGFEColorMatrixElement_width_Getter";
/** @domName SVGFEColorMatrixElement.x */
- SVGAnimatedLength get x native "SVGFEColorMatrixElement_x_Getter";
+ AnimatedLength get x native "SVGFEColorMatrixElement_x_Getter";
/** @domName SVGFEColorMatrixElement.y */
- SVGAnimatedLength get y native "SVGFEColorMatrixElement_y_Getter";
+ AnimatedLength get y native "SVGFEColorMatrixElement_y_Getter";
/** @domName SVGFEColorMatrixElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGFEColorMatrixElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGFEColorMatrixElement_className_Getter";
/** @domName SVGFEColorMatrixElement.style */
@@ -1889,36 +1794,36 @@
/// @domName SVGFEComponentTransferElement
-class SVGFEComponentTransferElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes {
- SVGFEComponentTransferElement.internal(): super.internal();
+class FEComponentTransferElement extends SvgElement implements FilterPrimitiveStandardAttributes {
+ FEComponentTransferElement.internal(): super.internal();
/** @domName SVGFEComponentTransferElement.in1 */
- SVGAnimatedString get in1 native "SVGFEComponentTransferElement_in1_Getter";
+ AnimatedString get in1 native "SVGFEComponentTransferElement_in1_Getter";
/** @domName SVGFEComponentTransferElement.height */
- SVGAnimatedLength get height native "SVGFEComponentTransferElement_height_Getter";
+ AnimatedLength get height native "SVGFEComponentTransferElement_height_Getter";
/** @domName SVGFEComponentTransferElement.result */
- SVGAnimatedString get result native "SVGFEComponentTransferElement_result_Getter";
+ AnimatedString get result native "SVGFEComponentTransferElement_result_Getter";
/** @domName SVGFEComponentTransferElement.width */
- SVGAnimatedLength get width native "SVGFEComponentTransferElement_width_Getter";
+ AnimatedLength get width native "SVGFEComponentTransferElement_width_Getter";
/** @domName SVGFEComponentTransferElement.x */
- SVGAnimatedLength get x native "SVGFEComponentTransferElement_x_Getter";
+ AnimatedLength get x native "SVGFEComponentTransferElement_x_Getter";
/** @domName SVGFEComponentTransferElement.y */
- SVGAnimatedLength get y native "SVGFEComponentTransferElement_y_Getter";
+ AnimatedLength get y native "SVGFEComponentTransferElement_y_Getter";
/** @domName SVGFEComponentTransferElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGFEComponentTransferElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGFEComponentTransferElement_className_Getter";
/** @domName SVGFEComponentTransferElement.style */
@@ -1937,8 +1842,8 @@
/// @domName SVGFECompositeElement
-class SVGFECompositeElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes {
- SVGFECompositeElement.internal(): super.internal();
+class FECompositeElement extends SvgElement implements FilterPrimitiveStandardAttributes {
+ FECompositeElement.internal(): super.internal();
static const int SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6;
@@ -1956,55 +1861,55 @@
/** @domName SVGFECompositeElement.in1 */
- SVGAnimatedString get in1 native "SVGFECompositeElement_in1_Getter";
+ AnimatedString get in1 native "SVGFECompositeElement_in1_Getter";
/** @domName SVGFECompositeElement.in2 */
- SVGAnimatedString get in2 native "SVGFECompositeElement_in2_Getter";
+ AnimatedString get in2 native "SVGFECompositeElement_in2_Getter";
/** @domName SVGFECompositeElement.k1 */
- SVGAnimatedNumber get k1 native "SVGFECompositeElement_k1_Getter";
+ AnimatedNumber get k1 native "SVGFECompositeElement_k1_Getter";
/** @domName SVGFECompositeElement.k2 */
- SVGAnimatedNumber get k2 native "SVGFECompositeElement_k2_Getter";
+ AnimatedNumber get k2 native "SVGFECompositeElement_k2_Getter";
/** @domName SVGFECompositeElement.k3 */
- SVGAnimatedNumber get k3 native "SVGFECompositeElement_k3_Getter";
+ AnimatedNumber get k3 native "SVGFECompositeElement_k3_Getter";
/** @domName SVGFECompositeElement.k4 */
- SVGAnimatedNumber get k4 native "SVGFECompositeElement_k4_Getter";
+ AnimatedNumber get k4 native "SVGFECompositeElement_k4_Getter";
/** @domName SVGFECompositeElement.operator */
- SVGAnimatedEnumeration get operator native "SVGFECompositeElement_operator_Getter";
+ AnimatedEnumeration get operator native "SVGFECompositeElement_operator_Getter";
/** @domName SVGFECompositeElement.height */
- SVGAnimatedLength get height native "SVGFECompositeElement_height_Getter";
+ AnimatedLength get height native "SVGFECompositeElement_height_Getter";
/** @domName SVGFECompositeElement.result */
- SVGAnimatedString get result native "SVGFECompositeElement_result_Getter";
+ AnimatedString get result native "SVGFECompositeElement_result_Getter";
/** @domName SVGFECompositeElement.width */
- SVGAnimatedLength get width native "SVGFECompositeElement_width_Getter";
+ AnimatedLength get width native "SVGFECompositeElement_width_Getter";
/** @domName SVGFECompositeElement.x */
- SVGAnimatedLength get x native "SVGFECompositeElement_x_Getter";
+ AnimatedLength get x native "SVGFECompositeElement_x_Getter";
/** @domName SVGFECompositeElement.y */
- SVGAnimatedLength get y native "SVGFECompositeElement_y_Getter";
+ AnimatedLength get y native "SVGFECompositeElement_y_Getter";
/** @domName SVGFECompositeElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGFECompositeElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGFECompositeElement_className_Getter";
/** @domName SVGFECompositeElement.style */
@@ -2023,8 +1928,8 @@
/// @domName SVGFEConvolveMatrixElement
-class SVGFEConvolveMatrixElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes {
- SVGFEConvolveMatrixElement.internal(): super.internal();
+class FEConvolveMatrixElement extends SvgElement implements FilterPrimitiveStandardAttributes {
+ FEConvolveMatrixElement.internal(): super.internal();
static const int SVG_EDGEMODE_DUPLICATE = 1;
@@ -2036,75 +1941,75 @@
/** @domName SVGFEConvolveMatrixElement.bias */
- SVGAnimatedNumber get bias native "SVGFEConvolveMatrixElement_bias_Getter";
+ AnimatedNumber get bias native "SVGFEConvolveMatrixElement_bias_Getter";
/** @domName SVGFEConvolveMatrixElement.divisor */
- SVGAnimatedNumber get divisor native "SVGFEConvolveMatrixElement_divisor_Getter";
+ AnimatedNumber get divisor native "SVGFEConvolveMatrixElement_divisor_Getter";
/** @domName SVGFEConvolveMatrixElement.edgeMode */
- SVGAnimatedEnumeration get edgeMode native "SVGFEConvolveMatrixElement_edgeMode_Getter";
+ AnimatedEnumeration get edgeMode native "SVGFEConvolveMatrixElement_edgeMode_Getter";
/** @domName SVGFEConvolveMatrixElement.in1 */
- SVGAnimatedString get in1 native "SVGFEConvolveMatrixElement_in1_Getter";
+ AnimatedString get in1 native "SVGFEConvolveMatrixElement_in1_Getter";
/** @domName SVGFEConvolveMatrixElement.kernelMatrix */
- SVGAnimatedNumberList get kernelMatrix native "SVGFEConvolveMatrixElement_kernelMatrix_Getter";
+ AnimatedNumberList get kernelMatrix native "SVGFEConvolveMatrixElement_kernelMatrix_Getter";
/** @domName SVGFEConvolveMatrixElement.kernelUnitLengthX */
- SVGAnimatedNumber get kernelUnitLengthX native "SVGFEConvolveMatrixElement_kernelUnitLengthX_Getter";
+ AnimatedNumber get kernelUnitLengthX native "SVGFEConvolveMatrixElement_kernelUnitLengthX_Getter";
/** @domName SVGFEConvolveMatrixElement.kernelUnitLengthY */
- SVGAnimatedNumber get kernelUnitLengthY native "SVGFEConvolveMatrixElement_kernelUnitLengthY_Getter";
+ AnimatedNumber get kernelUnitLengthY native "SVGFEConvolveMatrixElement_kernelUnitLengthY_Getter";
/** @domName SVGFEConvolveMatrixElement.orderX */
- SVGAnimatedInteger get orderX native "SVGFEConvolveMatrixElement_orderX_Getter";
+ AnimatedInteger get orderX native "SVGFEConvolveMatrixElement_orderX_Getter";
/** @domName SVGFEConvolveMatrixElement.orderY */
- SVGAnimatedInteger get orderY native "SVGFEConvolveMatrixElement_orderY_Getter";
+ AnimatedInteger get orderY native "SVGFEConvolveMatrixElement_orderY_Getter";
/** @domName SVGFEConvolveMatrixElement.preserveAlpha */
- SVGAnimatedBoolean get preserveAlpha native "SVGFEConvolveMatrixElement_preserveAlpha_Getter";
+ AnimatedBoolean get preserveAlpha native "SVGFEConvolveMatrixElement_preserveAlpha_Getter";
/** @domName SVGFEConvolveMatrixElement.targetX */
- SVGAnimatedInteger get targetX native "SVGFEConvolveMatrixElement_targetX_Getter";
+ AnimatedInteger get targetX native "SVGFEConvolveMatrixElement_targetX_Getter";
/** @domName SVGFEConvolveMatrixElement.targetY */
- SVGAnimatedInteger get targetY native "SVGFEConvolveMatrixElement_targetY_Getter";
+ AnimatedInteger get targetY native "SVGFEConvolveMatrixElement_targetY_Getter";
/** @domName SVGFEConvolveMatrixElement.height */
- SVGAnimatedLength get height native "SVGFEConvolveMatrixElement_height_Getter";
+ AnimatedLength get height native "SVGFEConvolveMatrixElement_height_Getter";
/** @domName SVGFEConvolveMatrixElement.result */
- SVGAnimatedString get result native "SVGFEConvolveMatrixElement_result_Getter";
+ AnimatedString get result native "SVGFEConvolveMatrixElement_result_Getter";
/** @domName SVGFEConvolveMatrixElement.width */
- SVGAnimatedLength get width native "SVGFEConvolveMatrixElement_width_Getter";
+ AnimatedLength get width native "SVGFEConvolveMatrixElement_width_Getter";
/** @domName SVGFEConvolveMatrixElement.x */
- SVGAnimatedLength get x native "SVGFEConvolveMatrixElement_x_Getter";
+ AnimatedLength get x native "SVGFEConvolveMatrixElement_x_Getter";
/** @domName SVGFEConvolveMatrixElement.y */
- SVGAnimatedLength get y native "SVGFEConvolveMatrixElement_y_Getter";
+ AnimatedLength get y native "SVGFEConvolveMatrixElement_y_Getter";
/** @domName SVGFEConvolveMatrixElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGFEConvolveMatrixElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGFEConvolveMatrixElement_className_Getter";
/** @domName SVGFEConvolveMatrixElement.style */
@@ -2123,52 +2028,52 @@
/// @domName SVGFEDiffuseLightingElement
-class SVGFEDiffuseLightingElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes {
- SVGFEDiffuseLightingElement.internal(): super.internal();
+class FEDiffuseLightingElement extends SvgElement implements FilterPrimitiveStandardAttributes {
+ FEDiffuseLightingElement.internal(): super.internal();
/** @domName SVGFEDiffuseLightingElement.diffuseConstant */
- SVGAnimatedNumber get diffuseConstant native "SVGFEDiffuseLightingElement_diffuseConstant_Getter";
+ AnimatedNumber get diffuseConstant native "SVGFEDiffuseLightingElement_diffuseConstant_Getter";
/** @domName SVGFEDiffuseLightingElement.in1 */
- SVGAnimatedString get in1 native "SVGFEDiffuseLightingElement_in1_Getter";
+ AnimatedString get in1 native "SVGFEDiffuseLightingElement_in1_Getter";
/** @domName SVGFEDiffuseLightingElement.kernelUnitLengthX */
- SVGAnimatedNumber get kernelUnitLengthX native "SVGFEDiffuseLightingElement_kernelUnitLengthX_Getter";
+ AnimatedNumber get kernelUnitLengthX native "SVGFEDiffuseLightingElement_kernelUnitLengthX_Getter";
/** @domName SVGFEDiffuseLightingElement.kernelUnitLengthY */
- SVGAnimatedNumber get kernelUnitLengthY native "SVGFEDiffuseLightingElement_kernelUnitLengthY_Getter";
+ AnimatedNumber get kernelUnitLengthY native "SVGFEDiffuseLightingElement_kernelUnitLengthY_Getter";
/** @domName SVGFEDiffuseLightingElement.surfaceScale */
- SVGAnimatedNumber get surfaceScale native "SVGFEDiffuseLightingElement_surfaceScale_Getter";
+ AnimatedNumber get surfaceScale native "SVGFEDiffuseLightingElement_surfaceScale_Getter";
/** @domName SVGFEDiffuseLightingElement.height */
- SVGAnimatedLength get height native "SVGFEDiffuseLightingElement_height_Getter";
+ AnimatedLength get height native "SVGFEDiffuseLightingElement_height_Getter";
/** @domName SVGFEDiffuseLightingElement.result */
- SVGAnimatedString get result native "SVGFEDiffuseLightingElement_result_Getter";
+ AnimatedString get result native "SVGFEDiffuseLightingElement_result_Getter";
/** @domName SVGFEDiffuseLightingElement.width */
- SVGAnimatedLength get width native "SVGFEDiffuseLightingElement_width_Getter";
+ AnimatedLength get width native "SVGFEDiffuseLightingElement_width_Getter";
/** @domName SVGFEDiffuseLightingElement.x */
- SVGAnimatedLength get x native "SVGFEDiffuseLightingElement_x_Getter";
+ AnimatedLength get x native "SVGFEDiffuseLightingElement_x_Getter";
/** @domName SVGFEDiffuseLightingElement.y */
- SVGAnimatedLength get y native "SVGFEDiffuseLightingElement_y_Getter";
+ AnimatedLength get y native "SVGFEDiffuseLightingElement_y_Getter";
/** @domName SVGFEDiffuseLightingElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGFEDiffuseLightingElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGFEDiffuseLightingElement_className_Getter";
/** @domName SVGFEDiffuseLightingElement.style */
@@ -2187,8 +2092,8 @@
/// @domName SVGFEDisplacementMapElement
-class SVGFEDisplacementMapElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes {
- SVGFEDisplacementMapElement.internal(): super.internal();
+class FEDisplacementMapElement extends SvgElement implements FilterPrimitiveStandardAttributes {
+ FEDisplacementMapElement.internal(): super.internal();
static const int SVG_CHANNEL_A = 4;
@@ -2202,47 +2107,47 @@
/** @domName SVGFEDisplacementMapElement.in1 */
- SVGAnimatedString get in1 native "SVGFEDisplacementMapElement_in1_Getter";
+ AnimatedString get in1 native "SVGFEDisplacementMapElement_in1_Getter";
/** @domName SVGFEDisplacementMapElement.in2 */
- SVGAnimatedString get in2 native "SVGFEDisplacementMapElement_in2_Getter";
+ AnimatedString get in2 native "SVGFEDisplacementMapElement_in2_Getter";
/** @domName SVGFEDisplacementMapElement.scale */
- SVGAnimatedNumber get scale native "SVGFEDisplacementMapElement_scale_Getter";
+ AnimatedNumber get scale native "SVGFEDisplacementMapElement_scale_Getter";
/** @domName SVGFEDisplacementMapElement.xChannelSelector */
- SVGAnimatedEnumeration get xChannelSelector native "SVGFEDisplacementMapElement_xChannelSelector_Getter";
+ AnimatedEnumeration get xChannelSelector native "SVGFEDisplacementMapElement_xChannelSelector_Getter";
/** @domName SVGFEDisplacementMapElement.yChannelSelector */
- SVGAnimatedEnumeration get yChannelSelector native "SVGFEDisplacementMapElement_yChannelSelector_Getter";
+ AnimatedEnumeration get yChannelSelector native "SVGFEDisplacementMapElement_yChannelSelector_Getter";
/** @domName SVGFEDisplacementMapElement.height */
- SVGAnimatedLength get height native "SVGFEDisplacementMapElement_height_Getter";
+ AnimatedLength get height native "SVGFEDisplacementMapElement_height_Getter";
/** @domName SVGFEDisplacementMapElement.result */
- SVGAnimatedString get result native "SVGFEDisplacementMapElement_result_Getter";
+ AnimatedString get result native "SVGFEDisplacementMapElement_result_Getter";
/** @domName SVGFEDisplacementMapElement.width */
- SVGAnimatedLength get width native "SVGFEDisplacementMapElement_width_Getter";
+ AnimatedLength get width native "SVGFEDisplacementMapElement_width_Getter";
/** @domName SVGFEDisplacementMapElement.x */
- SVGAnimatedLength get x native "SVGFEDisplacementMapElement_x_Getter";
+ AnimatedLength get x native "SVGFEDisplacementMapElement_x_Getter";
/** @domName SVGFEDisplacementMapElement.y */
- SVGAnimatedLength get y native "SVGFEDisplacementMapElement_y_Getter";
+ AnimatedLength get y native "SVGFEDisplacementMapElement_y_Getter";
/** @domName SVGFEDisplacementMapElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGFEDisplacementMapElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGFEDisplacementMapElement_className_Getter";
/** @domName SVGFEDisplacementMapElement.style */
@@ -2261,16 +2166,16 @@
/// @domName SVGFEDistantLightElement
-class SVGFEDistantLightElement extends SVGElement {
- SVGFEDistantLightElement.internal(): super.internal();
+class FEDistantLightElement extends SvgElement {
+ FEDistantLightElement.internal(): super.internal();
/** @domName SVGFEDistantLightElement.azimuth */
- SVGAnimatedNumber get azimuth native "SVGFEDistantLightElement_azimuth_Getter";
+ AnimatedNumber get azimuth native "SVGFEDistantLightElement_azimuth_Getter";
/** @domName SVGFEDistantLightElement.elevation */
- SVGAnimatedNumber get elevation native "SVGFEDistantLightElement_elevation_Getter";
+ AnimatedNumber get elevation native "SVGFEDistantLightElement_elevation_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -2281,28 +2186,28 @@
/// @domName SVGFEDropShadowElement
-class SVGFEDropShadowElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes {
- SVGFEDropShadowElement.internal(): super.internal();
+class FEDropShadowElement extends SvgElement implements FilterPrimitiveStandardAttributes {
+ FEDropShadowElement.internal(): super.internal();
/** @domName SVGFEDropShadowElement.dx */
- SVGAnimatedNumber get dx native "SVGFEDropShadowElement_dx_Getter";
+ AnimatedNumber get dx native "SVGFEDropShadowElement_dx_Getter";
/** @domName SVGFEDropShadowElement.dy */
- SVGAnimatedNumber get dy native "SVGFEDropShadowElement_dy_Getter";
+ AnimatedNumber get dy native "SVGFEDropShadowElement_dy_Getter";
/** @domName SVGFEDropShadowElement.in1 */
- SVGAnimatedString get in1 native "SVGFEDropShadowElement_in1_Getter";
+ AnimatedString get in1 native "SVGFEDropShadowElement_in1_Getter";
/** @domName SVGFEDropShadowElement.stdDeviationX */
- SVGAnimatedNumber get stdDeviationX native "SVGFEDropShadowElement_stdDeviationX_Getter";
+ AnimatedNumber get stdDeviationX native "SVGFEDropShadowElement_stdDeviationX_Getter";
/** @domName SVGFEDropShadowElement.stdDeviationY */
- SVGAnimatedNumber get stdDeviationY native "SVGFEDropShadowElement_stdDeviationY_Getter";
+ AnimatedNumber get stdDeviationY native "SVGFEDropShadowElement_stdDeviationY_Getter";
/** @domName SVGFEDropShadowElement.setStdDeviation */
@@ -2310,27 +2215,27 @@
/** @domName SVGFEDropShadowElement.height */
- SVGAnimatedLength get height native "SVGFEDropShadowElement_height_Getter";
+ AnimatedLength get height native "SVGFEDropShadowElement_height_Getter";
/** @domName SVGFEDropShadowElement.result */
- SVGAnimatedString get result native "SVGFEDropShadowElement_result_Getter";
+ AnimatedString get result native "SVGFEDropShadowElement_result_Getter";
/** @domName SVGFEDropShadowElement.width */
- SVGAnimatedLength get width native "SVGFEDropShadowElement_width_Getter";
+ AnimatedLength get width native "SVGFEDropShadowElement_width_Getter";
/** @domName SVGFEDropShadowElement.x */
- SVGAnimatedLength get x native "SVGFEDropShadowElement_x_Getter";
+ AnimatedLength get x native "SVGFEDropShadowElement_x_Getter";
/** @domName SVGFEDropShadowElement.y */
- SVGAnimatedLength get y native "SVGFEDropShadowElement_y_Getter";
+ AnimatedLength get y native "SVGFEDropShadowElement_y_Getter";
/** @domName SVGFEDropShadowElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGFEDropShadowElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGFEDropShadowElement_className_Getter";
/** @domName SVGFEDropShadowElement.style */
@@ -2349,32 +2254,32 @@
/// @domName SVGFEFloodElement
-class SVGFEFloodElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes {
- SVGFEFloodElement.internal(): super.internal();
+class FEFloodElement extends SvgElement implements FilterPrimitiveStandardAttributes {
+ FEFloodElement.internal(): super.internal();
/** @domName SVGFEFloodElement.height */
- SVGAnimatedLength get height native "SVGFEFloodElement_height_Getter";
+ AnimatedLength get height native "SVGFEFloodElement_height_Getter";
/** @domName SVGFEFloodElement.result */
- SVGAnimatedString get result native "SVGFEFloodElement_result_Getter";
+ AnimatedString get result native "SVGFEFloodElement_result_Getter";
/** @domName SVGFEFloodElement.width */
- SVGAnimatedLength get width native "SVGFEFloodElement_width_Getter";
+ AnimatedLength get width native "SVGFEFloodElement_width_Getter";
/** @domName SVGFEFloodElement.x */
- SVGAnimatedLength get x native "SVGFEFloodElement_x_Getter";
+ AnimatedLength get x native "SVGFEFloodElement_x_Getter";
/** @domName SVGFEFloodElement.y */
- SVGAnimatedLength get y native "SVGFEFloodElement_y_Getter";
+ AnimatedLength get y native "SVGFEFloodElement_y_Getter";
/** @domName SVGFEFloodElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGFEFloodElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGFEFloodElement_className_Getter";
/** @domName SVGFEFloodElement.style */
@@ -2393,8 +2298,8 @@
/// @domName SVGFEFuncAElement
-class SVGFEFuncAElement extends SVGComponentTransferFunctionElement {
- SVGFEFuncAElement.internal(): super.internal();
+class FEFuncAElement extends ComponentTransferFunctionElement {
+ FEFuncAElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -2405,8 +2310,8 @@
/// @domName SVGFEFuncBElement
-class SVGFEFuncBElement extends SVGComponentTransferFunctionElement {
- SVGFEFuncBElement.internal(): super.internal();
+class FEFuncBElement extends ComponentTransferFunctionElement {
+ FEFuncBElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -2417,8 +2322,8 @@
/// @domName SVGFEFuncGElement
-class SVGFEFuncGElement extends SVGComponentTransferFunctionElement {
- SVGFEFuncGElement.internal(): super.internal();
+class FEFuncGElement extends ComponentTransferFunctionElement {
+ FEFuncGElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -2429,8 +2334,8 @@
/// @domName SVGFEFuncRElement
-class SVGFEFuncRElement extends SVGComponentTransferFunctionElement {
- SVGFEFuncRElement.internal(): super.internal();
+class FEFuncRElement extends ComponentTransferFunctionElement {
+ FEFuncRElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -2441,20 +2346,20 @@
/// @domName SVGFEGaussianBlurElement
-class SVGFEGaussianBlurElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes {
- SVGFEGaussianBlurElement.internal(): super.internal();
+class FEGaussianBlurElement extends SvgElement implements FilterPrimitiveStandardAttributes {
+ FEGaussianBlurElement.internal(): super.internal();
/** @domName SVGFEGaussianBlurElement.in1 */
- SVGAnimatedString get in1 native "SVGFEGaussianBlurElement_in1_Getter";
+ AnimatedString get in1 native "SVGFEGaussianBlurElement_in1_Getter";
/** @domName SVGFEGaussianBlurElement.stdDeviationX */
- SVGAnimatedNumber get stdDeviationX native "SVGFEGaussianBlurElement_stdDeviationX_Getter";
+ AnimatedNumber get stdDeviationX native "SVGFEGaussianBlurElement_stdDeviationX_Getter";
/** @domName SVGFEGaussianBlurElement.stdDeviationY */
- SVGAnimatedNumber get stdDeviationY native "SVGFEGaussianBlurElement_stdDeviationY_Getter";
+ AnimatedNumber get stdDeviationY native "SVGFEGaussianBlurElement_stdDeviationY_Getter";
/** @domName SVGFEGaussianBlurElement.setStdDeviation */
@@ -2462,27 +2367,27 @@
/** @domName SVGFEGaussianBlurElement.height */
- SVGAnimatedLength get height native "SVGFEGaussianBlurElement_height_Getter";
+ AnimatedLength get height native "SVGFEGaussianBlurElement_height_Getter";
/** @domName SVGFEGaussianBlurElement.result */
- SVGAnimatedString get result native "SVGFEGaussianBlurElement_result_Getter";
+ AnimatedString get result native "SVGFEGaussianBlurElement_result_Getter";
/** @domName SVGFEGaussianBlurElement.width */
- SVGAnimatedLength get width native "SVGFEGaussianBlurElement_width_Getter";
+ AnimatedLength get width native "SVGFEGaussianBlurElement_width_Getter";
/** @domName SVGFEGaussianBlurElement.x */
- SVGAnimatedLength get x native "SVGFEGaussianBlurElement_x_Getter";
+ AnimatedLength get x native "SVGFEGaussianBlurElement_x_Getter";
/** @domName SVGFEGaussianBlurElement.y */
- SVGAnimatedLength get y native "SVGFEGaussianBlurElement_y_Getter";
+ AnimatedLength get y native "SVGFEGaussianBlurElement_y_Getter";
/** @domName SVGFEGaussianBlurElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGFEGaussianBlurElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGFEGaussianBlurElement_className_Getter";
/** @domName SVGFEGaussianBlurElement.style */
@@ -2501,36 +2406,36 @@
/// @domName SVGFEImageElement
-class SVGFEImageElement extends SVGElement implements SVGURIReference, SVGLangSpace, SVGFilterPrimitiveStandardAttributes, SVGExternalResourcesRequired {
- SVGFEImageElement.internal(): super.internal();
+class FEImageElement extends SvgElement implements FilterPrimitiveStandardAttributes, UriReference, ExternalResourcesRequired, LangSpace {
+ FEImageElement.internal(): super.internal();
/** @domName SVGFEImageElement.preserveAspectRatio */
- SVGAnimatedPreserveAspectRatio get preserveAspectRatio native "SVGFEImageElement_preserveAspectRatio_Getter";
+ AnimatedPreserveAspectRatio get preserveAspectRatio native "SVGFEImageElement_preserveAspectRatio_Getter";
/** @domName SVGFEImageElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGFEImageElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGFEImageElement_externalResourcesRequired_Getter";
/** @domName SVGFEImageElement.height */
- SVGAnimatedLength get height native "SVGFEImageElement_height_Getter";
+ AnimatedLength get height native "SVGFEImageElement_height_Getter";
/** @domName SVGFEImageElement.result */
- SVGAnimatedString get result native "SVGFEImageElement_result_Getter";
+ AnimatedString get result native "SVGFEImageElement_result_Getter";
/** @domName SVGFEImageElement.width */
- SVGAnimatedLength get width native "SVGFEImageElement_width_Getter";
+ AnimatedLength get width native "SVGFEImageElement_width_Getter";
/** @domName SVGFEImageElement.x */
- SVGAnimatedLength get x native "SVGFEImageElement_x_Getter";
+ AnimatedLength get x native "SVGFEImageElement_x_Getter";
/** @domName SVGFEImageElement.y */
- SVGAnimatedLength get y native "SVGFEImageElement_y_Getter";
+ AnimatedLength get y native "SVGFEImageElement_y_Getter";
/** @domName SVGFEImageElement.xmllang */
@@ -2550,7 +2455,7 @@
/** @domName SVGFEImageElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGFEImageElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGFEImageElement_className_Getter";
/** @domName SVGFEImageElement.style */
@@ -2562,7 +2467,7 @@
/** @domName SVGFEImageElement.href */
- SVGAnimatedString get href native "SVGFEImageElement_href_Getter";
+ AnimatedString get href native "SVGFEImageElement_href_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -2573,32 +2478,32 @@
/// @domName SVGFEMergeElement
-class SVGFEMergeElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes {
- SVGFEMergeElement.internal(): super.internal();
+class FEMergeElement extends SvgElement implements FilterPrimitiveStandardAttributes {
+ FEMergeElement.internal(): super.internal();
/** @domName SVGFEMergeElement.height */
- SVGAnimatedLength get height native "SVGFEMergeElement_height_Getter";
+ AnimatedLength get height native "SVGFEMergeElement_height_Getter";
/** @domName SVGFEMergeElement.result */
- SVGAnimatedString get result native "SVGFEMergeElement_result_Getter";
+ AnimatedString get result native "SVGFEMergeElement_result_Getter";
/** @domName SVGFEMergeElement.width */
- SVGAnimatedLength get width native "SVGFEMergeElement_width_Getter";
+ AnimatedLength get width native "SVGFEMergeElement_width_Getter";
/** @domName SVGFEMergeElement.x */
- SVGAnimatedLength get x native "SVGFEMergeElement_x_Getter";
+ AnimatedLength get x native "SVGFEMergeElement_x_Getter";
/** @domName SVGFEMergeElement.y */
- SVGAnimatedLength get y native "SVGFEMergeElement_y_Getter";
+ AnimatedLength get y native "SVGFEMergeElement_y_Getter";
/** @domName SVGFEMergeElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGFEMergeElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGFEMergeElement_className_Getter";
/** @domName SVGFEMergeElement.style */
@@ -2617,12 +2522,12 @@
/// @domName SVGFEMergeNodeElement
-class SVGFEMergeNodeElement extends SVGElement {
- SVGFEMergeNodeElement.internal(): super.internal();
+class FEMergeNodeElement extends SvgElement {
+ FEMergeNodeElement.internal(): super.internal();
/** @domName SVGFEMergeNodeElement.in1 */
- SVGAnimatedString get in1 native "SVGFEMergeNodeElement_in1_Getter";
+ AnimatedString get in1 native "SVGFEMergeNodeElement_in1_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -2633,8 +2538,8 @@
/// @domName SVGFEMorphologyElement
-class SVGFEMorphologyElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes {
- SVGFEMorphologyElement.internal(): super.internal();
+class FEMorphologyElement extends SvgElement implements FilterPrimitiveStandardAttributes {
+ FEMorphologyElement.internal(): super.internal();
static const int SVG_MORPHOLOGY_OPERATOR_DILATE = 2;
@@ -2644,19 +2549,19 @@
/** @domName SVGFEMorphologyElement.in1 */
- SVGAnimatedString get in1 native "SVGFEMorphologyElement_in1_Getter";
+ AnimatedString get in1 native "SVGFEMorphologyElement_in1_Getter";
/** @domName SVGFEMorphologyElement.operator */
- SVGAnimatedEnumeration get operator native "SVGFEMorphologyElement_operator_Getter";
+ AnimatedEnumeration get operator native "SVGFEMorphologyElement_operator_Getter";
/** @domName SVGFEMorphologyElement.radiusX */
- SVGAnimatedNumber get radiusX native "SVGFEMorphologyElement_radiusX_Getter";
+ AnimatedNumber get radiusX native "SVGFEMorphologyElement_radiusX_Getter";
/** @domName SVGFEMorphologyElement.radiusY */
- SVGAnimatedNumber get radiusY native "SVGFEMorphologyElement_radiusY_Getter";
+ AnimatedNumber get radiusY native "SVGFEMorphologyElement_radiusY_Getter";
/** @domName SVGFEMorphologyElement.setRadius */
@@ -2664,27 +2569,27 @@
/** @domName SVGFEMorphologyElement.height */
- SVGAnimatedLength get height native "SVGFEMorphologyElement_height_Getter";
+ AnimatedLength get height native "SVGFEMorphologyElement_height_Getter";
/** @domName SVGFEMorphologyElement.result */
- SVGAnimatedString get result native "SVGFEMorphologyElement_result_Getter";
+ AnimatedString get result native "SVGFEMorphologyElement_result_Getter";
/** @domName SVGFEMorphologyElement.width */
- SVGAnimatedLength get width native "SVGFEMorphologyElement_width_Getter";
+ AnimatedLength get width native "SVGFEMorphologyElement_width_Getter";
/** @domName SVGFEMorphologyElement.x */
- SVGAnimatedLength get x native "SVGFEMorphologyElement_x_Getter";
+ AnimatedLength get x native "SVGFEMorphologyElement_x_Getter";
/** @domName SVGFEMorphologyElement.y */
- SVGAnimatedLength get y native "SVGFEMorphologyElement_y_Getter";
+ AnimatedLength get y native "SVGFEMorphologyElement_y_Getter";
/** @domName SVGFEMorphologyElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGFEMorphologyElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGFEMorphologyElement_className_Getter";
/** @domName SVGFEMorphologyElement.style */
@@ -2703,44 +2608,44 @@
/// @domName SVGFEOffsetElement
-class SVGFEOffsetElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes {
- SVGFEOffsetElement.internal(): super.internal();
+class FEOffsetElement extends SvgElement implements FilterPrimitiveStandardAttributes {
+ FEOffsetElement.internal(): super.internal();
/** @domName SVGFEOffsetElement.dx */
- SVGAnimatedNumber get dx native "SVGFEOffsetElement_dx_Getter";
+ AnimatedNumber get dx native "SVGFEOffsetElement_dx_Getter";
/** @domName SVGFEOffsetElement.dy */
- SVGAnimatedNumber get dy native "SVGFEOffsetElement_dy_Getter";
+ AnimatedNumber get dy native "SVGFEOffsetElement_dy_Getter";
/** @domName SVGFEOffsetElement.in1 */
- SVGAnimatedString get in1 native "SVGFEOffsetElement_in1_Getter";
+ AnimatedString get in1 native "SVGFEOffsetElement_in1_Getter";
/** @domName SVGFEOffsetElement.height */
- SVGAnimatedLength get height native "SVGFEOffsetElement_height_Getter";
+ AnimatedLength get height native "SVGFEOffsetElement_height_Getter";
/** @domName SVGFEOffsetElement.result */
- SVGAnimatedString get result native "SVGFEOffsetElement_result_Getter";
+ AnimatedString get result native "SVGFEOffsetElement_result_Getter";
/** @domName SVGFEOffsetElement.width */
- SVGAnimatedLength get width native "SVGFEOffsetElement_width_Getter";
+ AnimatedLength get width native "SVGFEOffsetElement_width_Getter";
/** @domName SVGFEOffsetElement.x */
- SVGAnimatedLength get x native "SVGFEOffsetElement_x_Getter";
+ AnimatedLength get x native "SVGFEOffsetElement_x_Getter";
/** @domName SVGFEOffsetElement.y */
- SVGAnimatedLength get y native "SVGFEOffsetElement_y_Getter";
+ AnimatedLength get y native "SVGFEOffsetElement_y_Getter";
/** @domName SVGFEOffsetElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGFEOffsetElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGFEOffsetElement_className_Getter";
/** @domName SVGFEOffsetElement.style */
@@ -2759,20 +2664,20 @@
/// @domName SVGFEPointLightElement
-class SVGFEPointLightElement extends SVGElement {
- SVGFEPointLightElement.internal(): super.internal();
+class FEPointLightElement extends SvgElement {
+ FEPointLightElement.internal(): super.internal();
/** @domName SVGFEPointLightElement.x */
- SVGAnimatedNumber get x native "SVGFEPointLightElement_x_Getter";
+ AnimatedNumber get x native "SVGFEPointLightElement_x_Getter";
/** @domName SVGFEPointLightElement.y */
- SVGAnimatedNumber get y native "SVGFEPointLightElement_y_Getter";
+ AnimatedNumber get y native "SVGFEPointLightElement_y_Getter";
/** @domName SVGFEPointLightElement.z */
- SVGAnimatedNumber get z native "SVGFEPointLightElement_z_Getter";
+ AnimatedNumber get z native "SVGFEPointLightElement_z_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -2783,48 +2688,48 @@
/// @domName SVGFESpecularLightingElement
-class SVGFESpecularLightingElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes {
- SVGFESpecularLightingElement.internal(): super.internal();
+class FESpecularLightingElement extends SvgElement implements FilterPrimitiveStandardAttributes {
+ FESpecularLightingElement.internal(): super.internal();
/** @domName SVGFESpecularLightingElement.in1 */
- SVGAnimatedString get in1 native "SVGFESpecularLightingElement_in1_Getter";
+ AnimatedString get in1 native "SVGFESpecularLightingElement_in1_Getter";
/** @domName SVGFESpecularLightingElement.specularConstant */
- SVGAnimatedNumber get specularConstant native "SVGFESpecularLightingElement_specularConstant_Getter";
+ AnimatedNumber get specularConstant native "SVGFESpecularLightingElement_specularConstant_Getter";
/** @domName SVGFESpecularLightingElement.specularExponent */
- SVGAnimatedNumber get specularExponent native "SVGFESpecularLightingElement_specularExponent_Getter";
+ AnimatedNumber get specularExponent native "SVGFESpecularLightingElement_specularExponent_Getter";
/** @domName SVGFESpecularLightingElement.surfaceScale */
- SVGAnimatedNumber get surfaceScale native "SVGFESpecularLightingElement_surfaceScale_Getter";
+ AnimatedNumber get surfaceScale native "SVGFESpecularLightingElement_surfaceScale_Getter";
/** @domName SVGFESpecularLightingElement.height */
- SVGAnimatedLength get height native "SVGFESpecularLightingElement_height_Getter";
+ AnimatedLength get height native "SVGFESpecularLightingElement_height_Getter";
/** @domName SVGFESpecularLightingElement.result */
- SVGAnimatedString get result native "SVGFESpecularLightingElement_result_Getter";
+ AnimatedString get result native "SVGFESpecularLightingElement_result_Getter";
/** @domName SVGFESpecularLightingElement.width */
- SVGAnimatedLength get width native "SVGFESpecularLightingElement_width_Getter";
+ AnimatedLength get width native "SVGFESpecularLightingElement_width_Getter";
/** @domName SVGFESpecularLightingElement.x */
- SVGAnimatedLength get x native "SVGFESpecularLightingElement_x_Getter";
+ AnimatedLength get x native "SVGFESpecularLightingElement_x_Getter";
/** @domName SVGFESpecularLightingElement.y */
- SVGAnimatedLength get y native "SVGFESpecularLightingElement_y_Getter";
+ AnimatedLength get y native "SVGFESpecularLightingElement_y_Getter";
/** @domName SVGFESpecularLightingElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGFESpecularLightingElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGFESpecularLightingElement_className_Getter";
/** @domName SVGFESpecularLightingElement.style */
@@ -2843,40 +2748,40 @@
/// @domName SVGFESpotLightElement
-class SVGFESpotLightElement extends SVGElement {
- SVGFESpotLightElement.internal(): super.internal();
+class FESpotLightElement extends SvgElement {
+ FESpotLightElement.internal(): super.internal();
/** @domName SVGFESpotLightElement.limitingConeAngle */
- SVGAnimatedNumber get limitingConeAngle native "SVGFESpotLightElement_limitingConeAngle_Getter";
+ AnimatedNumber get limitingConeAngle native "SVGFESpotLightElement_limitingConeAngle_Getter";
/** @domName SVGFESpotLightElement.pointsAtX */
- SVGAnimatedNumber get pointsAtX native "SVGFESpotLightElement_pointsAtX_Getter";
+ AnimatedNumber get pointsAtX native "SVGFESpotLightElement_pointsAtX_Getter";
/** @domName SVGFESpotLightElement.pointsAtY */
- SVGAnimatedNumber get pointsAtY native "SVGFESpotLightElement_pointsAtY_Getter";
+ AnimatedNumber get pointsAtY native "SVGFESpotLightElement_pointsAtY_Getter";
/** @domName SVGFESpotLightElement.pointsAtZ */
- SVGAnimatedNumber get pointsAtZ native "SVGFESpotLightElement_pointsAtZ_Getter";
+ AnimatedNumber get pointsAtZ native "SVGFESpotLightElement_pointsAtZ_Getter";
/** @domName SVGFESpotLightElement.specularExponent */
- SVGAnimatedNumber get specularExponent native "SVGFESpotLightElement_specularExponent_Getter";
+ AnimatedNumber get specularExponent native "SVGFESpotLightElement_specularExponent_Getter";
/** @domName SVGFESpotLightElement.x */
- SVGAnimatedNumber get x native "SVGFESpotLightElement_x_Getter";
+ AnimatedNumber get x native "SVGFESpotLightElement_x_Getter";
/** @domName SVGFESpotLightElement.y */
- SVGAnimatedNumber get y native "SVGFESpotLightElement_y_Getter";
+ AnimatedNumber get y native "SVGFESpotLightElement_y_Getter";
/** @domName SVGFESpotLightElement.z */
- SVGAnimatedNumber get z native "SVGFESpotLightElement_z_Getter";
+ AnimatedNumber get z native "SVGFESpotLightElement_z_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -2887,36 +2792,36 @@
/// @domName SVGFETileElement
-class SVGFETileElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes {
- SVGFETileElement.internal(): super.internal();
+class FETileElement extends SvgElement implements FilterPrimitiveStandardAttributes {
+ FETileElement.internal(): super.internal();
/** @domName SVGFETileElement.in1 */
- SVGAnimatedString get in1 native "SVGFETileElement_in1_Getter";
+ AnimatedString get in1 native "SVGFETileElement_in1_Getter";
/** @domName SVGFETileElement.height */
- SVGAnimatedLength get height native "SVGFETileElement_height_Getter";
+ AnimatedLength get height native "SVGFETileElement_height_Getter";
/** @domName SVGFETileElement.result */
- SVGAnimatedString get result native "SVGFETileElement_result_Getter";
+ AnimatedString get result native "SVGFETileElement_result_Getter";
/** @domName SVGFETileElement.width */
- SVGAnimatedLength get width native "SVGFETileElement_width_Getter";
+ AnimatedLength get width native "SVGFETileElement_width_Getter";
/** @domName SVGFETileElement.x */
- SVGAnimatedLength get x native "SVGFETileElement_x_Getter";
+ AnimatedLength get x native "SVGFETileElement_x_Getter";
/** @domName SVGFETileElement.y */
- SVGAnimatedLength get y native "SVGFETileElement_y_Getter";
+ AnimatedLength get y native "SVGFETileElement_y_Getter";
/** @domName SVGFETileElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGFETileElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGFETileElement_className_Getter";
/** @domName SVGFETileElement.style */
@@ -2935,8 +2840,8 @@
/// @domName SVGFETurbulenceElement
-class SVGFETurbulenceElement extends SVGElement implements SVGFilterPrimitiveStandardAttributes {
- SVGFETurbulenceElement.internal(): super.internal();
+class FETurbulenceElement extends SvgElement implements FilterPrimitiveStandardAttributes {
+ FETurbulenceElement.internal(): super.internal();
static const int SVG_STITCHTYPE_NOSTITCH = 2;
@@ -2952,51 +2857,51 @@
/** @domName SVGFETurbulenceElement.baseFrequencyX */
- SVGAnimatedNumber get baseFrequencyX native "SVGFETurbulenceElement_baseFrequencyX_Getter";
+ AnimatedNumber get baseFrequencyX native "SVGFETurbulenceElement_baseFrequencyX_Getter";
/** @domName SVGFETurbulenceElement.baseFrequencyY */
- SVGAnimatedNumber get baseFrequencyY native "SVGFETurbulenceElement_baseFrequencyY_Getter";
+ AnimatedNumber get baseFrequencyY native "SVGFETurbulenceElement_baseFrequencyY_Getter";
/** @domName SVGFETurbulenceElement.numOctaves */
- SVGAnimatedInteger get numOctaves native "SVGFETurbulenceElement_numOctaves_Getter";
+ AnimatedInteger get numOctaves native "SVGFETurbulenceElement_numOctaves_Getter";
/** @domName SVGFETurbulenceElement.seed */
- SVGAnimatedNumber get seed native "SVGFETurbulenceElement_seed_Getter";
+ AnimatedNumber get seed native "SVGFETurbulenceElement_seed_Getter";
/** @domName SVGFETurbulenceElement.stitchTiles */
- SVGAnimatedEnumeration get stitchTiles native "SVGFETurbulenceElement_stitchTiles_Getter";
+ AnimatedEnumeration get stitchTiles native "SVGFETurbulenceElement_stitchTiles_Getter";
/** @domName SVGFETurbulenceElement.type */
- SVGAnimatedEnumeration get type native "SVGFETurbulenceElement_type_Getter";
+ AnimatedEnumeration get type native "SVGFETurbulenceElement_type_Getter";
/** @domName SVGFETurbulenceElement.height */
- SVGAnimatedLength get height native "SVGFETurbulenceElement_height_Getter";
+ AnimatedLength get height native "SVGFETurbulenceElement_height_Getter";
/** @domName SVGFETurbulenceElement.result */
- SVGAnimatedString get result native "SVGFETurbulenceElement_result_Getter";
+ AnimatedString get result native "SVGFETurbulenceElement_result_Getter";
/** @domName SVGFETurbulenceElement.width */
- SVGAnimatedLength get width native "SVGFETurbulenceElement_width_Getter";
+ AnimatedLength get width native "SVGFETurbulenceElement_width_Getter";
/** @domName SVGFETurbulenceElement.x */
- SVGAnimatedLength get x native "SVGFETurbulenceElement_x_Getter";
+ AnimatedLength get x native "SVGFETurbulenceElement_x_Getter";
/** @domName SVGFETurbulenceElement.y */
- SVGAnimatedLength get y native "SVGFETurbulenceElement_y_Getter";
+ AnimatedLength get y native "SVGFETurbulenceElement_y_Getter";
/** @domName SVGFETurbulenceElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGFETurbulenceElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGFETurbulenceElement_className_Getter";
/** @domName SVGFETurbulenceElement.style */
@@ -3015,40 +2920,42 @@
/// @domName SVGFilterElement
-class SVGFilterElement extends SVGElement implements SVGURIReference, SVGLangSpace, SVGExternalResourcesRequired, SVGStylable {
- SVGFilterElement.internal(): super.internal();
+class FilterElement extends SvgElement implements UriReference, ExternalResourcesRequired, Stylable, LangSpace {
+
+ factory FilterElement() => _SvgElementFactoryProvider.createSvgElement_tag("filter");
+ FilterElement.internal(): super.internal();
/** @domName SVGFilterElement.filterResX */
- SVGAnimatedInteger get filterResX native "SVGFilterElement_filterResX_Getter";
+ AnimatedInteger get filterResX native "SVGFilterElement_filterResX_Getter";
/** @domName SVGFilterElement.filterResY */
- SVGAnimatedInteger get filterResY native "SVGFilterElement_filterResY_Getter";
+ AnimatedInteger get filterResY native "SVGFilterElement_filterResY_Getter";
/** @domName SVGFilterElement.filterUnits */
- SVGAnimatedEnumeration get filterUnits native "SVGFilterElement_filterUnits_Getter";
+ AnimatedEnumeration get filterUnits native "SVGFilterElement_filterUnits_Getter";
/** @domName SVGFilterElement.height */
- SVGAnimatedLength get height native "SVGFilterElement_height_Getter";
+ AnimatedLength get height native "SVGFilterElement_height_Getter";
/** @domName SVGFilterElement.primitiveUnits */
- SVGAnimatedEnumeration get primitiveUnits native "SVGFilterElement_primitiveUnits_Getter";
+ AnimatedEnumeration get primitiveUnits native "SVGFilterElement_primitiveUnits_Getter";
/** @domName SVGFilterElement.width */
- SVGAnimatedLength get width native "SVGFilterElement_width_Getter";
+ AnimatedLength get width native "SVGFilterElement_width_Getter";
/** @domName SVGFilterElement.x */
- SVGAnimatedLength get x native "SVGFilterElement_x_Getter";
+ AnimatedLength get x native "SVGFilterElement_x_Getter";
/** @domName SVGFilterElement.y */
- SVGAnimatedLength get y native "SVGFilterElement_y_Getter";
+ AnimatedLength get y native "SVGFilterElement_y_Getter";
/** @domName SVGFilterElement.setFilterRes */
@@ -3056,7 +2963,7 @@
/** @domName SVGFilterElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGFilterElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGFilterElement_externalResourcesRequired_Getter";
/** @domName SVGFilterElement.xmllang */
@@ -3076,7 +2983,7 @@
/** @domName SVGFilterElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGFilterElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGFilterElement_className_Getter";
/** @domName SVGFilterElement.style */
@@ -3088,7 +2995,7 @@
/** @domName SVGFilterElement.href */
- SVGAnimatedString get href native "SVGFilterElement_href_Getter";
+ AnimatedString get href native "SVGFilterElement_href_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3099,32 +3006,32 @@
/// @domName SVGFilterPrimitiveStandardAttributes
-class SVGFilterPrimitiveStandardAttributes extends NativeFieldWrapperClass1 implements SVGStylable {
- SVGFilterPrimitiveStandardAttributes.internal();
+class FilterPrimitiveStandardAttributes extends NativeFieldWrapperClass1 implements Stylable {
+ FilterPrimitiveStandardAttributes.internal();
/** @domName SVGFilterPrimitiveStandardAttributes.height */
- SVGAnimatedLength get height native "SVGFilterPrimitiveStandardAttributes_height_Getter";
+ AnimatedLength get height native "SVGFilterPrimitiveStandardAttributes_height_Getter";
/** @domName SVGFilterPrimitiveStandardAttributes.result */
- SVGAnimatedString get result native "SVGFilterPrimitiveStandardAttributes_result_Getter";
+ AnimatedString get result native "SVGFilterPrimitiveStandardAttributes_result_Getter";
/** @domName SVGFilterPrimitiveStandardAttributes.width */
- SVGAnimatedLength get width native "SVGFilterPrimitiveStandardAttributes_width_Getter";
+ AnimatedLength get width native "SVGFilterPrimitiveStandardAttributes_width_Getter";
/** @domName SVGFilterPrimitiveStandardAttributes.x */
- SVGAnimatedLength get x native "SVGFilterPrimitiveStandardAttributes_x_Getter";
+ AnimatedLength get x native "SVGFilterPrimitiveStandardAttributes_x_Getter";
/** @domName SVGFilterPrimitiveStandardAttributes.y */
- SVGAnimatedLength get y native "SVGFilterPrimitiveStandardAttributes_y_Getter";
+ AnimatedLength get y native "SVGFilterPrimitiveStandardAttributes_y_Getter";
/** @domName SVGFilterPrimitiveStandardAttributes.className */
- SVGAnimatedString get $dom_svgClassName native "SVGFilterPrimitiveStandardAttributes_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGFilterPrimitiveStandardAttributes_className_Getter";
/** @domName SVGFilterPrimitiveStandardAttributes.style */
@@ -3143,16 +3050,16 @@
/// @domName SVGFitToViewBox
-class SVGFitToViewBox extends NativeFieldWrapperClass1 {
- SVGFitToViewBox.internal();
+class FitToViewBox extends NativeFieldWrapperClass1 {
+ FitToViewBox.internal();
/** @domName SVGFitToViewBox.preserveAspectRatio */
- SVGAnimatedPreserveAspectRatio get preserveAspectRatio native "SVGFitToViewBox_preserveAspectRatio_Getter";
+ AnimatedPreserveAspectRatio get preserveAspectRatio native "SVGFitToViewBox_preserveAspectRatio_Getter";
/** @domName SVGFitToViewBox.viewBox */
- SVGAnimatedRect get viewBox native "SVGFitToViewBox_viewBox_Getter";
+ AnimatedRect get viewBox native "SVGFitToViewBox_viewBox_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3163,8 +3070,10 @@
/// @domName SVGFontElement
-class SVGFontElement extends SVGElement {
- SVGFontElement.internal(): super.internal();
+class FontElement extends SvgElement {
+
+ factory FontElement() => _SvgElementFactoryProvider.createSvgElement_tag("font");
+ FontElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3175,8 +3084,10 @@
/// @domName SVGFontFaceElement
-class SVGFontFaceElement extends SVGElement {
- SVGFontFaceElement.internal(): super.internal();
+class FontFaceElement extends SvgElement {
+
+ factory FontFaceElement() => _SvgElementFactoryProvider.createSvgElement_tag("font-face");
+ FontFaceElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3187,8 +3098,10 @@
/// @domName SVGFontFaceFormatElement
-class SVGFontFaceFormatElement extends SVGElement {
- SVGFontFaceFormatElement.internal(): super.internal();
+class FontFaceFormatElement extends SvgElement {
+
+ factory FontFaceFormatElement() => _SvgElementFactoryProvider.createSvgElement_tag("font-face-format");
+ FontFaceFormatElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3199,8 +3112,10 @@
/// @domName SVGFontFaceNameElement
-class SVGFontFaceNameElement extends SVGElement {
- SVGFontFaceNameElement.internal(): super.internal();
+class FontFaceNameElement extends SvgElement {
+
+ factory FontFaceNameElement() => _SvgElementFactoryProvider.createSvgElement_tag("font-face-name");
+ FontFaceNameElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3211,8 +3126,10 @@
/// @domName SVGFontFaceSrcElement
-class SVGFontFaceSrcElement extends SVGElement {
- SVGFontFaceSrcElement.internal(): super.internal();
+class FontFaceSrcElement extends SvgElement {
+
+ factory FontFaceSrcElement() => _SvgElementFactoryProvider.createSvgElement_tag("font-face-src");
+ FontFaceSrcElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3223,8 +3140,10 @@
/// @domName SVGFontFaceUriElement
-class SVGFontFaceUriElement extends SVGElement {
- SVGFontFaceUriElement.internal(): super.internal();
+class FontFaceUriElement extends SvgElement {
+
+ factory FontFaceUriElement() => _SvgElementFactoryProvider.createSvgElement_tag("font-face-uri");
+ FontFaceUriElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3235,28 +3154,30 @@
/// @domName SVGForeignObjectElement
-class SVGForeignObjectElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired {
- SVGForeignObjectElement.internal(): super.internal();
+class ForeignObjectElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace {
+
+ factory ForeignObjectElement() => _SvgElementFactoryProvider.createSvgElement_tag("foreignObject");
+ ForeignObjectElement.internal(): super.internal();
/** @domName SVGForeignObjectElement.height */
- SVGAnimatedLength get height native "SVGForeignObjectElement_height_Getter";
+ AnimatedLength get height native "SVGForeignObjectElement_height_Getter";
/** @domName SVGForeignObjectElement.width */
- SVGAnimatedLength get width native "SVGForeignObjectElement_width_Getter";
+ AnimatedLength get width native "SVGForeignObjectElement_width_Getter";
/** @domName SVGForeignObjectElement.x */
- SVGAnimatedLength get x native "SVGForeignObjectElement_x_Getter";
+ AnimatedLength get x native "SVGForeignObjectElement_x_Getter";
/** @domName SVGForeignObjectElement.y */
- SVGAnimatedLength get y native "SVGForeignObjectElement_y_Getter";
+ AnimatedLength get y native "SVGForeignObjectElement_y_Getter";
/** @domName SVGForeignObjectElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGForeignObjectElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGForeignObjectElement_externalResourcesRequired_Getter";
/** @domName SVGForeignObjectElement.xmllang */
@@ -3276,31 +3197,31 @@
/** @domName SVGForeignObjectElement.farthestViewportElement */
- SVGElement get farthestViewportElement native "SVGForeignObjectElement_farthestViewportElement_Getter";
+ SvgElement get farthestViewportElement native "SVGForeignObjectElement_farthestViewportElement_Getter";
/** @domName SVGForeignObjectElement.nearestViewportElement */
- SVGElement get nearestViewportElement native "SVGForeignObjectElement_nearestViewportElement_Getter";
+ SvgElement get nearestViewportElement native "SVGForeignObjectElement_nearestViewportElement_Getter";
/** @domName SVGForeignObjectElement.getBBox */
- SVGRect getBBox() native "SVGForeignObjectElement_getBBox_Callback";
+ Rect getBBox() native "SVGForeignObjectElement_getBBox_Callback";
/** @domName SVGForeignObjectElement.getCTM */
- SVGMatrix getCTM() native "SVGForeignObjectElement_getCTM_Callback";
+ Matrix getCTM() native "SVGForeignObjectElement_getCTM_Callback";
/** @domName SVGForeignObjectElement.getScreenCTM */
- SVGMatrix getScreenCTM() native "SVGForeignObjectElement_getScreenCTM_Callback";
+ Matrix getScreenCTM() native "SVGForeignObjectElement_getScreenCTM_Callback";
/** @domName SVGForeignObjectElement.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native "SVGForeignObjectElement_getTransformToElement_Callback";
+ Matrix getTransformToElement(SvgElement element) native "SVGForeignObjectElement_getTransformToElement_Callback";
/** @domName SVGForeignObjectElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGForeignObjectElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGForeignObjectElement_className_Getter";
/** @domName SVGForeignObjectElement.style */
@@ -3312,15 +3233,15 @@
/** @domName SVGForeignObjectElement.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGForeignObjectElement_requiredExtensions_Getter";
+ StringList get requiredExtensions native "SVGForeignObjectElement_requiredExtensions_Getter";
/** @domName SVGForeignObjectElement.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGForeignObjectElement_requiredFeatures_Getter";
+ StringList get requiredFeatures native "SVGForeignObjectElement_requiredFeatures_Getter";
/** @domName SVGForeignObjectElement.systemLanguage */
- SVGStringList get systemLanguage native "SVGForeignObjectElement_systemLanguage_Getter";
+ StringList get systemLanguage native "SVGForeignObjectElement_systemLanguage_Getter";
/** @domName SVGForeignObjectElement.hasExtension */
@@ -3328,7 +3249,7 @@
/** @domName SVGForeignObjectElement.transform */
- SVGAnimatedTransformList get transform native "SVGForeignObjectElement_transform_Getter";
+ AnimatedTransformList get transform native "SVGForeignObjectElement_transform_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3339,12 +3260,14 @@
/// @domName SVGGElement
-class SVGGElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired {
- SVGGElement.internal(): super.internal();
+class GElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace {
+
+ factory GElement() => _SvgElementFactoryProvider.createSvgElement_tag("g");
+ GElement.internal(): super.internal();
/** @domName SVGGElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGGElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGGElement_externalResourcesRequired_Getter";
/** @domName SVGGElement.xmllang */
@@ -3364,31 +3287,31 @@
/** @domName SVGGElement.farthestViewportElement */
- SVGElement get farthestViewportElement native "SVGGElement_farthestViewportElement_Getter";
+ SvgElement get farthestViewportElement native "SVGGElement_farthestViewportElement_Getter";
/** @domName SVGGElement.nearestViewportElement */
- SVGElement get nearestViewportElement native "SVGGElement_nearestViewportElement_Getter";
+ SvgElement get nearestViewportElement native "SVGGElement_nearestViewportElement_Getter";
/** @domName SVGGElement.getBBox */
- SVGRect getBBox() native "SVGGElement_getBBox_Callback";
+ Rect getBBox() native "SVGGElement_getBBox_Callback";
/** @domName SVGGElement.getCTM */
- SVGMatrix getCTM() native "SVGGElement_getCTM_Callback";
+ Matrix getCTM() native "SVGGElement_getCTM_Callback";
/** @domName SVGGElement.getScreenCTM */
- SVGMatrix getScreenCTM() native "SVGGElement_getScreenCTM_Callback";
+ Matrix getScreenCTM() native "SVGGElement_getScreenCTM_Callback";
/** @domName SVGGElement.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native "SVGGElement_getTransformToElement_Callback";
+ Matrix getTransformToElement(SvgElement element) native "SVGGElement_getTransformToElement_Callback";
/** @domName SVGGElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGGElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGGElement_className_Getter";
/** @domName SVGGElement.style */
@@ -3400,15 +3323,15 @@
/** @domName SVGGElement.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGGElement_requiredExtensions_Getter";
+ StringList get requiredExtensions native "SVGGElement_requiredExtensions_Getter";
/** @domName SVGGElement.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGGElement_requiredFeatures_Getter";
+ StringList get requiredFeatures native "SVGGElement_requiredFeatures_Getter";
/** @domName SVGGElement.systemLanguage */
- SVGStringList get systemLanguage native "SVGGElement_systemLanguage_Getter";
+ StringList get systemLanguage native "SVGGElement_systemLanguage_Getter";
/** @domName SVGGElement.hasExtension */
@@ -3416,7 +3339,7 @@
/** @domName SVGGElement.transform */
- SVGAnimatedTransformList get transform native "SVGGElement_transform_Getter";
+ AnimatedTransformList get transform native "SVGGElement_transform_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3427,8 +3350,10 @@
/// @domName SVGGlyphElement
-class SVGGlyphElement extends SVGElement {
- SVGGlyphElement.internal(): super.internal();
+class GlyphElement extends SvgElement {
+
+ factory GlyphElement() => _SvgElementFactoryProvider.createSvgElement_tag("glyph");
+ GlyphElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3439,8 +3364,8 @@
/// @domName SVGGlyphRefElement
-class SVGGlyphRefElement extends SVGElement implements SVGURIReference, SVGStylable {
- SVGGlyphRefElement.internal(): super.internal();
+class GlyphRefElement extends SvgElement implements UriReference, Stylable {
+ GlyphRefElement.internal(): super.internal();
/** @domName SVGGlyphRefElement.dx */
@@ -3492,7 +3417,7 @@
/** @domName SVGGlyphRefElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGGlyphRefElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGGlyphRefElement_className_Getter";
/** @domName SVGGlyphRefElement.style */
@@ -3504,7 +3429,7 @@
/** @domName SVGGlyphRefElement.href */
- SVGAnimatedString get href native "SVGGlyphRefElement_href_Getter";
+ AnimatedString get href native "SVGGlyphRefElement_href_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3515,8 +3440,8 @@
/// @domName SVGGradientElement
-class SVGGradientElement extends SVGElement implements SVGURIReference, SVGExternalResourcesRequired, SVGStylable {
- SVGGradientElement.internal(): super.internal();
+class GradientElement extends SvgElement implements UriReference, ExternalResourcesRequired, Stylable {
+ GradientElement.internal(): super.internal();
static const int SVG_SPREADMETHOD_PAD = 1;
@@ -3528,23 +3453,23 @@
/** @domName SVGGradientElement.gradientTransform */
- SVGAnimatedTransformList get gradientTransform native "SVGGradientElement_gradientTransform_Getter";
+ AnimatedTransformList get gradientTransform native "SVGGradientElement_gradientTransform_Getter";
/** @domName SVGGradientElement.gradientUnits */
- SVGAnimatedEnumeration get gradientUnits native "SVGGradientElement_gradientUnits_Getter";
+ AnimatedEnumeration get gradientUnits native "SVGGradientElement_gradientUnits_Getter";
/** @domName SVGGradientElement.spreadMethod */
- SVGAnimatedEnumeration get spreadMethod native "SVGGradientElement_spreadMethod_Getter";
+ AnimatedEnumeration get spreadMethod native "SVGGradientElement_spreadMethod_Getter";
/** @domName SVGGradientElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGGradientElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGGradientElement_externalResourcesRequired_Getter";
/** @domName SVGGradientElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGGradientElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGGradientElement_className_Getter";
/** @domName SVGGradientElement.style */
@@ -3556,7 +3481,7 @@
/** @domName SVGGradientElement.href */
- SVGAnimatedString get href native "SVGGradientElement_href_Getter";
+ AnimatedString get href native "SVGGradientElement_href_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3567,8 +3492,10 @@
/// @domName SVGHKernElement
-class SVGHKernElement extends SVGElement {
- SVGHKernElement.internal(): super.internal();
+class HKernElement extends SvgElement {
+
+ factory HKernElement() => _SvgElementFactoryProvider.createSvgElement_tag("hkern");
+ HKernElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3579,32 +3506,34 @@
/// @domName SVGImageElement
-class SVGImageElement extends SVGElement implements SVGLangSpace, SVGTests, SVGStylable, SVGURIReference, SVGExternalResourcesRequired, SVGTransformable {
- SVGImageElement.internal(): super.internal();
+class ImageElement extends SvgElement implements Transformable, Tests, UriReference, Stylable, ExternalResourcesRequired, LangSpace {
+
+ factory ImageElement() => _SvgElementFactoryProvider.createSvgElement_tag("image");
+ ImageElement.internal(): super.internal();
/** @domName SVGImageElement.height */
- SVGAnimatedLength get height native "SVGImageElement_height_Getter";
+ AnimatedLength get height native "SVGImageElement_height_Getter";
/** @domName SVGImageElement.preserveAspectRatio */
- SVGAnimatedPreserveAspectRatio get preserveAspectRatio native "SVGImageElement_preserveAspectRatio_Getter";
+ AnimatedPreserveAspectRatio get preserveAspectRatio native "SVGImageElement_preserveAspectRatio_Getter";
/** @domName SVGImageElement.width */
- SVGAnimatedLength get width native "SVGImageElement_width_Getter";
+ AnimatedLength get width native "SVGImageElement_width_Getter";
/** @domName SVGImageElement.x */
- SVGAnimatedLength get x native "SVGImageElement_x_Getter";
+ AnimatedLength get x native "SVGImageElement_x_Getter";
/** @domName SVGImageElement.y */
- SVGAnimatedLength get y native "SVGImageElement_y_Getter";
+ AnimatedLength get y native "SVGImageElement_y_Getter";
/** @domName SVGImageElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGImageElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGImageElement_externalResourcesRequired_Getter";
/** @domName SVGImageElement.xmllang */
@@ -3624,31 +3553,31 @@
/** @domName SVGImageElement.farthestViewportElement */
- SVGElement get farthestViewportElement native "SVGImageElement_farthestViewportElement_Getter";
+ SvgElement get farthestViewportElement native "SVGImageElement_farthestViewportElement_Getter";
/** @domName SVGImageElement.nearestViewportElement */
- SVGElement get nearestViewportElement native "SVGImageElement_nearestViewportElement_Getter";
+ SvgElement get nearestViewportElement native "SVGImageElement_nearestViewportElement_Getter";
/** @domName SVGImageElement.getBBox */
- SVGRect getBBox() native "SVGImageElement_getBBox_Callback";
+ Rect getBBox() native "SVGImageElement_getBBox_Callback";
/** @domName SVGImageElement.getCTM */
- SVGMatrix getCTM() native "SVGImageElement_getCTM_Callback";
+ Matrix getCTM() native "SVGImageElement_getCTM_Callback";
/** @domName SVGImageElement.getScreenCTM */
- SVGMatrix getScreenCTM() native "SVGImageElement_getScreenCTM_Callback";
+ Matrix getScreenCTM() native "SVGImageElement_getScreenCTM_Callback";
/** @domName SVGImageElement.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native "SVGImageElement_getTransformToElement_Callback";
+ Matrix getTransformToElement(SvgElement element) native "SVGImageElement_getTransformToElement_Callback";
/** @domName SVGImageElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGImageElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGImageElement_className_Getter";
/** @domName SVGImageElement.style */
@@ -3660,15 +3589,15 @@
/** @domName SVGImageElement.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGImageElement_requiredExtensions_Getter";
+ StringList get requiredExtensions native "SVGImageElement_requiredExtensions_Getter";
/** @domName SVGImageElement.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGImageElement_requiredFeatures_Getter";
+ StringList get requiredFeatures native "SVGImageElement_requiredFeatures_Getter";
/** @domName SVGImageElement.systemLanguage */
- SVGStringList get systemLanguage native "SVGImageElement_systemLanguage_Getter";
+ StringList get systemLanguage native "SVGImageElement_systemLanguage_Getter";
/** @domName SVGImageElement.hasExtension */
@@ -3676,11 +3605,11 @@
/** @domName SVGImageElement.transform */
- SVGAnimatedTransformList get transform native "SVGImageElement_transform_Getter";
+ AnimatedTransformList get transform native "SVGImageElement_transform_Getter";
/** @domName SVGImageElement.href */
- SVGAnimatedString get href native "SVGImageElement_href_Getter";
+ AnimatedString get href native "SVGImageElement_href_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3691,8 +3620,8 @@
/// @domName SVGLangSpace
-class SVGLangSpace extends NativeFieldWrapperClass1 {
- SVGLangSpace.internal();
+class LangSpace extends NativeFieldWrapperClass1 {
+ LangSpace.internal();
/** @domName SVGLangSpace.xmllang */
@@ -3719,8 +3648,8 @@
/// @domName SVGLength
-class SVGLength extends NativeFieldWrapperClass1 {
- SVGLength.internal();
+class Length extends NativeFieldWrapperClass1 {
+ Length.internal();
static const int SVG_LENGTHTYPE_CM = 6;
@@ -3789,80 +3718,82 @@
/// @domName SVGLengthList
-class SVGLengthList extends NativeFieldWrapperClass1 implements List<SVGLength> {
- SVGLengthList.internal();
+class LengthList extends NativeFieldWrapperClass1 implements List<Length> {
+ LengthList.internal();
/** @domName SVGLengthList.numberOfItems */
int get numberOfItems native "SVGLengthList_numberOfItems_Getter";
- SVGLength operator[](int index) native "SVGLengthList_item_Callback";
+ Length operator[](int index) native "SVGLengthList_item_Callback";
- void operator[]=(int index, SVGLength value) {
+ void operator[]=(int index, Length value) {
throw new UnsupportedError("Cannot assign element of immutable List.");
}
- // -- start List<SVGLength> mixins.
- // SVGLength is the element type.
+ // -- start List<Length> mixins.
+ // Length is the element type.
- // From Iterable<SVGLength>:
+ // From Iterable<Length>:
- Iterator<SVGLength> iterator() {
+ Iterator<Length> iterator() {
// Note: NodeLists are not fixed size. And most probably length shouldn't
// be cached in both iterator _and_ forEach method. For now caching it
// for consistency.
- return new FixedSizeListIterator<SVGLength>(this);
+ return new FixedSizeListIterator<Length>(this);
}
- // From Collection<SVGLength>:
+ // From Collection<Length>:
- void add(SVGLength value) {
+ void add(Length value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addLast(SVGLength value) {
+ void addLast(Length value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addAll(Collection<SVGLength> collection) {
+ void addAll(Collection<Length> collection) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- bool contains(SVGLength element) => _Collections.contains(this, element);
+ bool contains(Length element) => _Collections.contains(this, element);
- void forEach(void f(SVGLength element)) => _Collections.forEach(this, f);
+ void forEach(void f(Length element)) => _Collections.forEach(this, f);
- Collection map(f(SVGLength element)) => _Collections.map(this, [], f);
+ Collection map(f(Length element)) => _Collections.map(this, [], f);
- Collection<SVGLength> filter(bool f(SVGLength element)) =>
- _Collections.filter(this, <SVGLength>[], f);
+ Collection<Length> filter(bool f(Length element)) =>
+ _Collections.filter(this, <Length>[], f);
- bool every(bool f(SVGLength element)) => _Collections.every(this, f);
+ bool every(bool f(Length element)) => _Collections.every(this, f);
- bool some(bool f(SVGLength element)) => _Collections.some(this, f);
+ bool some(bool f(Length element)) => _Collections.some(this, f);
bool get isEmpty => this.length == 0;
- // From List<SVGLength>:
+ // From List<Length>:
- void sort([Comparator<SVGLength> compare = Comparable.compare]) {
+ void sort([Comparator<Length> compare = Comparable.compare]) {
throw new UnsupportedError("Cannot sort immutable List.");
}
- int indexOf(SVGLength element, [int start = 0]) =>
+ int indexOf(Length element, [int start = 0]) =>
_Lists.indexOf(this, element, start, this.length);
- int lastIndexOf(SVGLength element, [int start]) {
+ int lastIndexOf(Length element, [int start]) {
if (start == null) start = length - 1;
return _Lists.lastIndexOf(this, element, start);
}
- SVGLength get last => this[length - 1];
+ Length get first => this[0];
- SVGLength removeLast() {
+ Length get last => this[length - 1];
+
+ Length removeLast() {
throw new UnsupportedError("Cannot removeLast on immutable List.");
}
- void setRange(int start, int rangeLength, List<SVGLength> from, [int startFrom]) {
+ void setRange(int start, int rangeLength, List<Length> from, [int startFrom]) {
throw new UnsupportedError("Cannot setRange on immutable List.");
}
@@ -3870,18 +3801,18 @@
throw new UnsupportedError("Cannot removeRange on immutable List.");
}
- void insertRange(int start, int rangeLength, [SVGLength initialValue]) {
+ void insertRange(int start, int rangeLength, [Length initialValue]) {
throw new UnsupportedError("Cannot insertRange on immutable List.");
}
- List<SVGLength> getRange(int start, int rangeLength) =>
- _Lists.getRange(this, start, rangeLength, <SVGLength>[]);
+ List<Length> getRange(int start, int rangeLength) =>
+ _Lists.getRange(this, start, rangeLength, <Length>[]);
- // -- end List<SVGLength> mixins.
+ // -- end List<Length> mixins.
/** @domName SVGLengthList.appendItem */
- SVGLength appendItem(SVGLength item) native "SVGLengthList_appendItem_Callback";
+ Length appendItem(Length item) native "SVGLengthList_appendItem_Callback";
/** @domName SVGLengthList.clear */
@@ -3889,23 +3820,23 @@
/** @domName SVGLengthList.getItem */
- SVGLength getItem(int index) native "SVGLengthList_getItem_Callback";
+ Length getItem(int index) native "SVGLengthList_getItem_Callback";
/** @domName SVGLengthList.initialize */
- SVGLength initialize(SVGLength item) native "SVGLengthList_initialize_Callback";
+ Length initialize(Length item) native "SVGLengthList_initialize_Callback";
/** @domName SVGLengthList.insertItemBefore */
- SVGLength insertItemBefore(SVGLength item, int index) native "SVGLengthList_insertItemBefore_Callback";
+ Length insertItemBefore(Length item, int index) native "SVGLengthList_insertItemBefore_Callback";
/** @domName SVGLengthList.removeItem */
- SVGLength removeItem(int index) native "SVGLengthList_removeItem_Callback";
+ Length removeItem(int index) native "SVGLengthList_removeItem_Callback";
/** @domName SVGLengthList.replaceItem */
- SVGLength replaceItem(SVGLength item, int index) native "SVGLengthList_replaceItem_Callback";
+ Length replaceItem(Length item, int index) native "SVGLengthList_replaceItem_Callback";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -3916,28 +3847,30 @@
/// @domName SVGLineElement
-class SVGLineElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired {
- SVGLineElement.internal(): super.internal();
+class LineElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace {
+
+ factory LineElement() => _SvgElementFactoryProvider.createSvgElement_tag("line");
+ LineElement.internal(): super.internal();
/** @domName SVGLineElement.x1 */
- SVGAnimatedLength get x1 native "SVGLineElement_x1_Getter";
+ AnimatedLength get x1 native "SVGLineElement_x1_Getter";
/** @domName SVGLineElement.x2 */
- SVGAnimatedLength get x2 native "SVGLineElement_x2_Getter";
+ AnimatedLength get x2 native "SVGLineElement_x2_Getter";
/** @domName SVGLineElement.y1 */
- SVGAnimatedLength get y1 native "SVGLineElement_y1_Getter";
+ AnimatedLength get y1 native "SVGLineElement_y1_Getter";
/** @domName SVGLineElement.y2 */
- SVGAnimatedLength get y2 native "SVGLineElement_y2_Getter";
+ AnimatedLength get y2 native "SVGLineElement_y2_Getter";
/** @domName SVGLineElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGLineElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGLineElement_externalResourcesRequired_Getter";
/** @domName SVGLineElement.xmllang */
@@ -3957,31 +3890,31 @@
/** @domName SVGLineElement.farthestViewportElement */
- SVGElement get farthestViewportElement native "SVGLineElement_farthestViewportElement_Getter";
+ SvgElement get farthestViewportElement native "SVGLineElement_farthestViewportElement_Getter";
/** @domName SVGLineElement.nearestViewportElement */
- SVGElement get nearestViewportElement native "SVGLineElement_nearestViewportElement_Getter";
+ SvgElement get nearestViewportElement native "SVGLineElement_nearestViewportElement_Getter";
/** @domName SVGLineElement.getBBox */
- SVGRect getBBox() native "SVGLineElement_getBBox_Callback";
+ Rect getBBox() native "SVGLineElement_getBBox_Callback";
/** @domName SVGLineElement.getCTM */
- SVGMatrix getCTM() native "SVGLineElement_getCTM_Callback";
+ Matrix getCTM() native "SVGLineElement_getCTM_Callback";
/** @domName SVGLineElement.getScreenCTM */
- SVGMatrix getScreenCTM() native "SVGLineElement_getScreenCTM_Callback";
+ Matrix getScreenCTM() native "SVGLineElement_getScreenCTM_Callback";
/** @domName SVGLineElement.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native "SVGLineElement_getTransformToElement_Callback";
+ Matrix getTransformToElement(SvgElement element) native "SVGLineElement_getTransformToElement_Callback";
/** @domName SVGLineElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGLineElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGLineElement_className_Getter";
/** @domName SVGLineElement.style */
@@ -3993,15 +3926,15 @@
/** @domName SVGLineElement.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGLineElement_requiredExtensions_Getter";
+ StringList get requiredExtensions native "SVGLineElement_requiredExtensions_Getter";
/** @domName SVGLineElement.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGLineElement_requiredFeatures_Getter";
+ StringList get requiredFeatures native "SVGLineElement_requiredFeatures_Getter";
/** @domName SVGLineElement.systemLanguage */
- SVGStringList get systemLanguage native "SVGLineElement_systemLanguage_Getter";
+ StringList get systemLanguage native "SVGLineElement_systemLanguage_Getter";
/** @domName SVGLineElement.hasExtension */
@@ -4009,7 +3942,7 @@
/** @domName SVGLineElement.transform */
- SVGAnimatedTransformList get transform native "SVGLineElement_transform_Getter";
+ AnimatedTransformList get transform native "SVGLineElement_transform_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4020,24 +3953,26 @@
/// @domName SVGLinearGradientElement
-class SVGLinearGradientElement extends SVGGradientElement {
- SVGLinearGradientElement.internal(): super.internal();
+class LinearGradientElement extends GradientElement {
+
+ factory LinearGradientElement() => _SvgElementFactoryProvider.createSvgElement_tag("linearGradient");
+ LinearGradientElement.internal(): super.internal();
/** @domName SVGLinearGradientElement.x1 */
- SVGAnimatedLength get x1 native "SVGLinearGradientElement_x1_Getter";
+ AnimatedLength get x1 native "SVGLinearGradientElement_x1_Getter";
/** @domName SVGLinearGradientElement.x2 */
- SVGAnimatedLength get x2 native "SVGLinearGradientElement_x2_Getter";
+ AnimatedLength get x2 native "SVGLinearGradientElement_x2_Getter";
/** @domName SVGLinearGradientElement.y1 */
- SVGAnimatedLength get y1 native "SVGLinearGradientElement_y1_Getter";
+ AnimatedLength get y1 native "SVGLinearGradientElement_y1_Getter";
/** @domName SVGLinearGradientElement.y2 */
- SVGAnimatedLength get y2 native "SVGLinearGradientElement_y2_Getter";
+ AnimatedLength get y2 native "SVGLinearGradientElement_y2_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4048,32 +3983,32 @@
/// @domName SVGLocatable
-class SVGLocatable extends NativeFieldWrapperClass1 {
- SVGLocatable.internal();
+class Locatable extends NativeFieldWrapperClass1 {
+ Locatable.internal();
/** @domName SVGLocatable.farthestViewportElement */
- SVGElement get farthestViewportElement native "SVGLocatable_farthestViewportElement_Getter";
+ SvgElement get farthestViewportElement native "SVGLocatable_farthestViewportElement_Getter";
/** @domName SVGLocatable.nearestViewportElement */
- SVGElement get nearestViewportElement native "SVGLocatable_nearestViewportElement_Getter";
+ SvgElement get nearestViewportElement native "SVGLocatable_nearestViewportElement_Getter";
/** @domName SVGLocatable.getBBox */
- SVGRect getBBox() native "SVGLocatable_getBBox_Callback";
+ Rect getBBox() native "SVGLocatable_getBBox_Callback";
/** @domName SVGLocatable.getCTM */
- SVGMatrix getCTM() native "SVGLocatable_getCTM_Callback";
+ Matrix getCTM() native "SVGLocatable_getCTM_Callback";
/** @domName SVGLocatable.getScreenCTM */
- SVGMatrix getScreenCTM() native "SVGLocatable_getScreenCTM_Callback";
+ Matrix getScreenCTM() native "SVGLocatable_getScreenCTM_Callback";
/** @domName SVGLocatable.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native "SVGLocatable_getTransformToElement_Callback";
+ Matrix getTransformToElement(SvgElement element) native "SVGLocatable_getTransformToElement_Callback";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4084,16 +4019,18 @@
/// @domName SVGMPathElement
-class SVGMPathElement extends SVGElement implements SVGURIReference, SVGExternalResourcesRequired {
- SVGMPathElement.internal(): super.internal();
+class MPathElement extends SvgElement implements UriReference, ExternalResourcesRequired {
+
+ factory MPathElement() => _SvgElementFactoryProvider.createSvgElement_tag("mpath");
+ MPathElement.internal(): super.internal();
/** @domName SVGMPathElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGMPathElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGMPathElement_externalResourcesRequired_Getter";
/** @domName SVGMPathElement.href */
- SVGAnimatedString get href native "SVGMPathElement_href_Getter";
+ AnimatedString get href native "SVGMPathElement_href_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4104,8 +4041,10 @@
/// @domName SVGMarkerElement
-class SVGMarkerElement extends SVGElement implements SVGLangSpace, SVGFitToViewBox, SVGExternalResourcesRequired, SVGStylable {
- SVGMarkerElement.internal(): super.internal();
+class MarkerElement extends SvgElement implements FitToViewBox, ExternalResourcesRequired, Stylable, LangSpace {
+
+ factory MarkerElement() => _SvgElementFactoryProvider.createSvgElement_tag("marker");
+ MarkerElement.internal(): super.internal();
static const int SVG_MARKERUNITS_STROKEWIDTH = 2;
@@ -4121,35 +4060,35 @@
/** @domName SVGMarkerElement.markerHeight */
- SVGAnimatedLength get markerHeight native "SVGMarkerElement_markerHeight_Getter";
+ AnimatedLength get markerHeight native "SVGMarkerElement_markerHeight_Getter";
/** @domName SVGMarkerElement.markerUnits */
- SVGAnimatedEnumeration get markerUnits native "SVGMarkerElement_markerUnits_Getter";
+ AnimatedEnumeration get markerUnits native "SVGMarkerElement_markerUnits_Getter";
/** @domName SVGMarkerElement.markerWidth */
- SVGAnimatedLength get markerWidth native "SVGMarkerElement_markerWidth_Getter";
+ AnimatedLength get markerWidth native "SVGMarkerElement_markerWidth_Getter";
/** @domName SVGMarkerElement.orientAngle */
- SVGAnimatedAngle get orientAngle native "SVGMarkerElement_orientAngle_Getter";
+ AnimatedAngle get orientAngle native "SVGMarkerElement_orientAngle_Getter";
/** @domName SVGMarkerElement.orientType */
- SVGAnimatedEnumeration get orientType native "SVGMarkerElement_orientType_Getter";
+ AnimatedEnumeration get orientType native "SVGMarkerElement_orientType_Getter";
/** @domName SVGMarkerElement.refX */
- SVGAnimatedLength get refX native "SVGMarkerElement_refX_Getter";
+ AnimatedLength get refX native "SVGMarkerElement_refX_Getter";
/** @domName SVGMarkerElement.refY */
- SVGAnimatedLength get refY native "SVGMarkerElement_refY_Getter";
+ AnimatedLength get refY native "SVGMarkerElement_refY_Getter";
/** @domName SVGMarkerElement.setOrientToAngle */
- void setOrientToAngle(SVGAngle angle) native "SVGMarkerElement_setOrientToAngle_Callback";
+ void setOrientToAngle(Angle angle) native "SVGMarkerElement_setOrientToAngle_Callback";
/** @domName SVGMarkerElement.setOrientToAuto */
@@ -4157,15 +4096,15 @@
/** @domName SVGMarkerElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGMarkerElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGMarkerElement_externalResourcesRequired_Getter";
/** @domName SVGMarkerElement.preserveAspectRatio */
- SVGAnimatedPreserveAspectRatio get preserveAspectRatio native "SVGMarkerElement_preserveAspectRatio_Getter";
+ AnimatedPreserveAspectRatio get preserveAspectRatio native "SVGMarkerElement_preserveAspectRatio_Getter";
/** @domName SVGMarkerElement.viewBox */
- SVGAnimatedRect get viewBox native "SVGMarkerElement_viewBox_Getter";
+ AnimatedRect get viewBox native "SVGMarkerElement_viewBox_Getter";
/** @domName SVGMarkerElement.xmllang */
@@ -4185,7 +4124,7 @@
/** @domName SVGMarkerElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGMarkerElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGMarkerElement_className_Getter";
/** @domName SVGMarkerElement.style */
@@ -4204,36 +4143,38 @@
/// @domName SVGMaskElement
-class SVGMaskElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGExternalResourcesRequired {
- SVGMaskElement.internal(): super.internal();
+class MaskElement extends SvgElement implements Tests, Stylable, ExternalResourcesRequired, LangSpace {
+
+ factory MaskElement() => _SvgElementFactoryProvider.createSvgElement_tag("mask");
+ MaskElement.internal(): super.internal();
/** @domName SVGMaskElement.height */
- SVGAnimatedLength get height native "SVGMaskElement_height_Getter";
+ AnimatedLength get height native "SVGMaskElement_height_Getter";
/** @domName SVGMaskElement.maskContentUnits */
- SVGAnimatedEnumeration get maskContentUnits native "SVGMaskElement_maskContentUnits_Getter";
+ AnimatedEnumeration get maskContentUnits native "SVGMaskElement_maskContentUnits_Getter";
/** @domName SVGMaskElement.maskUnits */
- SVGAnimatedEnumeration get maskUnits native "SVGMaskElement_maskUnits_Getter";
+ AnimatedEnumeration get maskUnits native "SVGMaskElement_maskUnits_Getter";
/** @domName SVGMaskElement.width */
- SVGAnimatedLength get width native "SVGMaskElement_width_Getter";
+ AnimatedLength get width native "SVGMaskElement_width_Getter";
/** @domName SVGMaskElement.x */
- SVGAnimatedLength get x native "SVGMaskElement_x_Getter";
+ AnimatedLength get x native "SVGMaskElement_x_Getter";
/** @domName SVGMaskElement.y */
- SVGAnimatedLength get y native "SVGMaskElement_y_Getter";
+ AnimatedLength get y native "SVGMaskElement_y_Getter";
/** @domName SVGMaskElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGMaskElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGMaskElement_externalResourcesRequired_Getter";
/** @domName SVGMaskElement.xmllang */
@@ -4253,7 +4194,7 @@
/** @domName SVGMaskElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGMaskElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGMaskElement_className_Getter";
/** @domName SVGMaskElement.style */
@@ -4265,15 +4206,15 @@
/** @domName SVGMaskElement.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGMaskElement_requiredExtensions_Getter";
+ StringList get requiredExtensions native "SVGMaskElement_requiredExtensions_Getter";
/** @domName SVGMaskElement.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGMaskElement_requiredFeatures_Getter";
+ StringList get requiredFeatures native "SVGMaskElement_requiredFeatures_Getter";
/** @domName SVGMaskElement.systemLanguage */
- SVGStringList get systemLanguage native "SVGMaskElement_systemLanguage_Getter";
+ StringList get systemLanguage native "SVGMaskElement_systemLanguage_Getter";
/** @domName SVGMaskElement.hasExtension */
@@ -4288,8 +4229,8 @@
/// @domName SVGMatrix
-class SVGMatrix extends NativeFieldWrapperClass1 {
- SVGMatrix.internal();
+class Matrix extends NativeFieldWrapperClass1 {
+ Matrix.internal();
/** @domName SVGMatrix.a */
@@ -4341,47 +4282,47 @@
/** @domName SVGMatrix.flipX */
- SVGMatrix flipX() native "SVGMatrix_flipX_Callback";
+ Matrix flipX() native "SVGMatrix_flipX_Callback";
/** @domName SVGMatrix.flipY */
- SVGMatrix flipY() native "SVGMatrix_flipY_Callback";
+ Matrix flipY() native "SVGMatrix_flipY_Callback";
/** @domName SVGMatrix.inverse */
- SVGMatrix inverse() native "SVGMatrix_inverse_Callback";
+ Matrix inverse() native "SVGMatrix_inverse_Callback";
/** @domName SVGMatrix.multiply */
- SVGMatrix multiply(SVGMatrix secondMatrix) native "SVGMatrix_multiply_Callback";
+ Matrix multiply(Matrix secondMatrix) native "SVGMatrix_multiply_Callback";
/** @domName SVGMatrix.rotate */
- SVGMatrix rotate(num angle) native "SVGMatrix_rotate_Callback";
+ Matrix rotate(num angle) native "SVGMatrix_rotate_Callback";
/** @domName SVGMatrix.rotateFromVector */
- SVGMatrix rotateFromVector(num x, num y) native "SVGMatrix_rotateFromVector_Callback";
+ Matrix rotateFromVector(num x, num y) native "SVGMatrix_rotateFromVector_Callback";
/** @domName SVGMatrix.scale */
- SVGMatrix scale(num scaleFactor) native "SVGMatrix_scale_Callback";
+ Matrix scale(num scaleFactor) native "SVGMatrix_scale_Callback";
/** @domName SVGMatrix.scaleNonUniform */
- SVGMatrix scaleNonUniform(num scaleFactorX, num scaleFactorY) native "SVGMatrix_scaleNonUniform_Callback";
+ Matrix scaleNonUniform(num scaleFactorX, num scaleFactorY) native "SVGMatrix_scaleNonUniform_Callback";
/** @domName SVGMatrix.skewX */
- SVGMatrix skewX(num angle) native "SVGMatrix_skewX_Callback";
+ Matrix skewX(num angle) native "SVGMatrix_skewX_Callback";
/** @domName SVGMatrix.skewY */
- SVGMatrix skewY(num angle) native "SVGMatrix_skewY_Callback";
+ Matrix skewY(num angle) native "SVGMatrix_skewY_Callback";
/** @domName SVGMatrix.translate */
- SVGMatrix translate(num x, num y) native "SVGMatrix_translate_Callback";
+ Matrix translate(num x, num y) native "SVGMatrix_translate_Callback";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4392,8 +4333,8 @@
/// @domName SVGMetadataElement
-class SVGMetadataElement extends SVGElement {
- SVGMetadataElement.internal(): super.internal();
+class MetadataElement extends SvgElement {
+ MetadataElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4404,8 +4345,8 @@
/// @domName SVGMissingGlyphElement
-class SVGMissingGlyphElement extends SVGElement {
- SVGMissingGlyphElement.internal(): super.internal();
+class MissingGlyphElement extends SvgElement {
+ MissingGlyphElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4416,8 +4357,8 @@
/// @domName SVGNumber
-class SVGNumber extends NativeFieldWrapperClass1 {
- SVGNumber.internal();
+class Number extends NativeFieldWrapperClass1 {
+ Number.internal();
/** @domName SVGNumber.value */
@@ -4436,80 +4377,82 @@
/// @domName SVGNumberList
-class SVGNumberList extends NativeFieldWrapperClass1 implements List<SVGNumber> {
- SVGNumberList.internal();
+class NumberList extends NativeFieldWrapperClass1 implements List<Number> {
+ NumberList.internal();
/** @domName SVGNumberList.numberOfItems */
int get numberOfItems native "SVGNumberList_numberOfItems_Getter";
- SVGNumber operator[](int index) native "SVGNumberList_item_Callback";
+ Number operator[](int index) native "SVGNumberList_item_Callback";
- void operator[]=(int index, SVGNumber value) {
+ void operator[]=(int index, Number value) {
throw new UnsupportedError("Cannot assign element of immutable List.");
}
- // -- start List<SVGNumber> mixins.
- // SVGNumber is the element type.
+ // -- start List<Number> mixins.
+ // Number is the element type.
- // From Iterable<SVGNumber>:
+ // From Iterable<Number>:
- Iterator<SVGNumber> iterator() {
+ Iterator<Number> iterator() {
// Note: NodeLists are not fixed size. And most probably length shouldn't
// be cached in both iterator _and_ forEach method. For now caching it
// for consistency.
- return new FixedSizeListIterator<SVGNumber>(this);
+ return new FixedSizeListIterator<Number>(this);
}
- // From Collection<SVGNumber>:
+ // From Collection<Number>:
- void add(SVGNumber value) {
+ void add(Number value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addLast(SVGNumber value) {
+ void addLast(Number value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addAll(Collection<SVGNumber> collection) {
+ void addAll(Collection<Number> collection) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- bool contains(SVGNumber element) => _Collections.contains(this, element);
+ bool contains(Number element) => _Collections.contains(this, element);
- void forEach(void f(SVGNumber element)) => _Collections.forEach(this, f);
+ void forEach(void f(Number element)) => _Collections.forEach(this, f);
- Collection map(f(SVGNumber element)) => _Collections.map(this, [], f);
+ Collection map(f(Number element)) => _Collections.map(this, [], f);
- Collection<SVGNumber> filter(bool f(SVGNumber element)) =>
- _Collections.filter(this, <SVGNumber>[], f);
+ Collection<Number> filter(bool f(Number element)) =>
+ _Collections.filter(this, <Number>[], f);
- bool every(bool f(SVGNumber element)) => _Collections.every(this, f);
+ bool every(bool f(Number element)) => _Collections.every(this, f);
- bool some(bool f(SVGNumber element)) => _Collections.some(this, f);
+ bool some(bool f(Number element)) => _Collections.some(this, f);
bool get isEmpty => this.length == 0;
- // From List<SVGNumber>:
+ // From List<Number>:
- void sort([Comparator<SVGNumber> compare = Comparable.compare]) {
+ void sort([Comparator<Number> compare = Comparable.compare]) {
throw new UnsupportedError("Cannot sort immutable List.");
}
- int indexOf(SVGNumber element, [int start = 0]) =>
+ int indexOf(Number element, [int start = 0]) =>
_Lists.indexOf(this, element, start, this.length);
- int lastIndexOf(SVGNumber element, [int start]) {
+ int lastIndexOf(Number element, [int start]) {
if (start == null) start = length - 1;
return _Lists.lastIndexOf(this, element, start);
}
- SVGNumber get last => this[length - 1];
+ Number get first => this[0];
- SVGNumber removeLast() {
+ Number get last => this[length - 1];
+
+ Number removeLast() {
throw new UnsupportedError("Cannot removeLast on immutable List.");
}
- void setRange(int start, int rangeLength, List<SVGNumber> from, [int startFrom]) {
+ void setRange(int start, int rangeLength, List<Number> from, [int startFrom]) {
throw new UnsupportedError("Cannot setRange on immutable List.");
}
@@ -4517,18 +4460,18 @@
throw new UnsupportedError("Cannot removeRange on immutable List.");
}
- void insertRange(int start, int rangeLength, [SVGNumber initialValue]) {
+ void insertRange(int start, int rangeLength, [Number initialValue]) {
throw new UnsupportedError("Cannot insertRange on immutable List.");
}
- List<SVGNumber> getRange(int start, int rangeLength) =>
- _Lists.getRange(this, start, rangeLength, <SVGNumber>[]);
+ List<Number> getRange(int start, int rangeLength) =>
+ _Lists.getRange(this, start, rangeLength, <Number>[]);
- // -- end List<SVGNumber> mixins.
+ // -- end List<Number> mixins.
/** @domName SVGNumberList.appendItem */
- SVGNumber appendItem(SVGNumber item) native "SVGNumberList_appendItem_Callback";
+ Number appendItem(Number item) native "SVGNumberList_appendItem_Callback";
/** @domName SVGNumberList.clear */
@@ -4536,23 +4479,23 @@
/** @domName SVGNumberList.getItem */
- SVGNumber getItem(int index) native "SVGNumberList_getItem_Callback";
+ Number getItem(int index) native "SVGNumberList_getItem_Callback";
/** @domName SVGNumberList.initialize */
- SVGNumber initialize(SVGNumber item) native "SVGNumberList_initialize_Callback";
+ Number initialize(Number item) native "SVGNumberList_initialize_Callback";
/** @domName SVGNumberList.insertItemBefore */
- SVGNumber insertItemBefore(SVGNumber item, int index) native "SVGNumberList_insertItemBefore_Callback";
+ Number insertItemBefore(Number item, int index) native "SVGNumberList_insertItemBefore_Callback";
/** @domName SVGNumberList.removeItem */
- SVGNumber removeItem(int index) native "SVGNumberList_removeItem_Callback";
+ Number removeItem(int index) native "SVGNumberList_removeItem_Callback";
/** @domName SVGNumberList.replaceItem */
- SVGNumber replaceItem(SVGNumber item, int index) native "SVGNumberList_replaceItem_Callback";
+ Number replaceItem(Number item, int index) native "SVGNumberList_replaceItem_Callback";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4563,8 +4506,8 @@
/// @domName SVGPaint
-class SVGPaint extends SVGColor {
- SVGPaint.internal(): super.internal();
+class Paint extends Color {
+ Paint.internal(): super.internal();
static const int SVG_PAINTTYPE_CURRENTCOLOR = 102;
@@ -4611,104 +4554,106 @@
/// @domName SVGPathElement
-class SVGPathElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired {
- SVGPathElement.internal(): super.internal();
+class PathElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace {
+
+ factory PathElement() => _SvgElementFactoryProvider.createSvgElement_tag("path");
+ PathElement.internal(): super.internal();
/** @domName SVGPathElement.animatedNormalizedPathSegList */
- SVGPathSegList get animatedNormalizedPathSegList native "SVGPathElement_animatedNormalizedPathSegList_Getter";
+ PathSegList get animatedNormalizedPathSegList native "SVGPathElement_animatedNormalizedPathSegList_Getter";
/** @domName SVGPathElement.animatedPathSegList */
- SVGPathSegList get animatedPathSegList native "SVGPathElement_animatedPathSegList_Getter";
+ PathSegList get animatedPathSegList native "SVGPathElement_animatedPathSegList_Getter";
/** @domName SVGPathElement.normalizedPathSegList */
- SVGPathSegList get normalizedPathSegList native "SVGPathElement_normalizedPathSegList_Getter";
+ PathSegList get normalizedPathSegList native "SVGPathElement_normalizedPathSegList_Getter";
/** @domName SVGPathElement.pathLength */
- SVGAnimatedNumber get pathLength native "SVGPathElement_pathLength_Getter";
+ AnimatedNumber get pathLength native "SVGPathElement_pathLength_Getter";
/** @domName SVGPathElement.pathSegList */
- SVGPathSegList get pathSegList native "SVGPathElement_pathSegList_Getter";
+ PathSegList get pathSegList native "SVGPathElement_pathSegList_Getter";
/** @domName SVGPathElement.createSVGPathSegArcAbs */
- SVGPathSegArcAbs createSVGPathSegArcAbs(num x, num y, num r1, num r2, num angle, bool largeArcFlag, bool sweepFlag) native "SVGPathElement_createSVGPathSegArcAbs_Callback";
+ PathSegArcAbs createSVGPathSegArcAbs(num x, num y, num r1, num r2, num angle, bool largeArcFlag, bool sweepFlag) native "SVGPathElement_createSVGPathSegArcAbs_Callback";
/** @domName SVGPathElement.createSVGPathSegArcRel */
- SVGPathSegArcRel createSVGPathSegArcRel(num x, num y, num r1, num r2, num angle, bool largeArcFlag, bool sweepFlag) native "SVGPathElement_createSVGPathSegArcRel_Callback";
+ PathSegArcRel createSVGPathSegArcRel(num x, num y, num r1, num r2, num angle, bool largeArcFlag, bool sweepFlag) native "SVGPathElement_createSVGPathSegArcRel_Callback";
/** @domName SVGPathElement.createSVGPathSegClosePath */
- SVGPathSegClosePath createSVGPathSegClosePath() native "SVGPathElement_createSVGPathSegClosePath_Callback";
+ PathSegClosePath createSVGPathSegClosePath() native "SVGPathElement_createSVGPathSegClosePath_Callback";
/** @domName SVGPathElement.createSVGPathSegCurvetoCubicAbs */
- SVGPathSegCurvetoCubicAbs createSVGPathSegCurvetoCubicAbs(num x, num y, num x1, num y1, num x2, num y2) native "SVGPathElement_createSVGPathSegCurvetoCubicAbs_Callback";
+ PathSegCurvetoCubicAbs createSVGPathSegCurvetoCubicAbs(num x, num y, num x1, num y1, num x2, num y2) native "SVGPathElement_createSVGPathSegCurvetoCubicAbs_Callback";
/** @domName SVGPathElement.createSVGPathSegCurvetoCubicRel */
- SVGPathSegCurvetoCubicRel createSVGPathSegCurvetoCubicRel(num x, num y, num x1, num y1, num x2, num y2) native "SVGPathElement_createSVGPathSegCurvetoCubicRel_Callback";
+ PathSegCurvetoCubicRel createSVGPathSegCurvetoCubicRel(num x, num y, num x1, num y1, num x2, num y2) native "SVGPathElement_createSVGPathSegCurvetoCubicRel_Callback";
/** @domName SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs */
- SVGPathSegCurvetoCubicSmoothAbs createSVGPathSegCurvetoCubicSmoothAbs(num x, num y, num x2, num y2) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothAbs_Callback";
+ PathSegCurvetoCubicSmoothAbs createSVGPathSegCurvetoCubicSmoothAbs(num x, num y, num x2, num y2) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothAbs_Callback";
/** @domName SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel */
- SVGPathSegCurvetoCubicSmoothRel createSVGPathSegCurvetoCubicSmoothRel(num x, num y, num x2, num y2) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothRel_Callback";
+ PathSegCurvetoCubicSmoothRel createSVGPathSegCurvetoCubicSmoothRel(num x, num y, num x2, num y2) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothRel_Callback";
/** @domName SVGPathElement.createSVGPathSegCurvetoQuadraticAbs */
- SVGPathSegCurvetoQuadraticAbs createSVGPathSegCurvetoQuadraticAbs(num x, num y, num x1, num y1) native "SVGPathElement_createSVGPathSegCurvetoQuadraticAbs_Callback";
+ PathSegCurvetoQuadraticAbs createSVGPathSegCurvetoQuadraticAbs(num x, num y, num x1, num y1) native "SVGPathElement_createSVGPathSegCurvetoQuadraticAbs_Callback";
/** @domName SVGPathElement.createSVGPathSegCurvetoQuadraticRel */
- SVGPathSegCurvetoQuadraticRel createSVGPathSegCurvetoQuadraticRel(num x, num y, num x1, num y1) native "SVGPathElement_createSVGPathSegCurvetoQuadraticRel_Callback";
+ PathSegCurvetoQuadraticRel createSVGPathSegCurvetoQuadraticRel(num x, num y, num x1, num y1) native "SVGPathElement_createSVGPathSegCurvetoQuadraticRel_Callback";
/** @domName SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs */
- SVGPathSegCurvetoQuadraticSmoothAbs createSVGPathSegCurvetoQuadraticSmoothAbs(num x, num y) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothAbs_Callback";
+ PathSegCurvetoQuadraticSmoothAbs createSVGPathSegCurvetoQuadraticSmoothAbs(num x, num y) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothAbs_Callback";
/** @domName SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel */
- SVGPathSegCurvetoQuadraticSmoothRel createSVGPathSegCurvetoQuadraticSmoothRel(num x, num y) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothRel_Callback";
+ PathSegCurvetoQuadraticSmoothRel createSVGPathSegCurvetoQuadraticSmoothRel(num x, num y) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothRel_Callback";
/** @domName SVGPathElement.createSVGPathSegLinetoAbs */
- SVGPathSegLinetoAbs createSVGPathSegLinetoAbs(num x, num y) native "SVGPathElement_createSVGPathSegLinetoAbs_Callback";
+ PathSegLinetoAbs createSVGPathSegLinetoAbs(num x, num y) native "SVGPathElement_createSVGPathSegLinetoAbs_Callback";
/** @domName SVGPathElement.createSVGPathSegLinetoHorizontalAbs */
- SVGPathSegLinetoHorizontalAbs createSVGPathSegLinetoHorizontalAbs(num x) native "SVGPathElement_createSVGPathSegLinetoHorizontalAbs_Callback";
+ PathSegLinetoHorizontalAbs createSVGPathSegLinetoHorizontalAbs(num x) native "SVGPathElement_createSVGPathSegLinetoHorizontalAbs_Callback";
/** @domName SVGPathElement.createSVGPathSegLinetoHorizontalRel */
- SVGPathSegLinetoHorizontalRel createSVGPathSegLinetoHorizontalRel(num x) native "SVGPathElement_createSVGPathSegLinetoHorizontalRel_Callback";
+ PathSegLinetoHorizontalRel createSVGPathSegLinetoHorizontalRel(num x) native "SVGPathElement_createSVGPathSegLinetoHorizontalRel_Callback";
/** @domName SVGPathElement.createSVGPathSegLinetoRel */
- SVGPathSegLinetoRel createSVGPathSegLinetoRel(num x, num y) native "SVGPathElement_createSVGPathSegLinetoRel_Callback";
+ PathSegLinetoRel createSVGPathSegLinetoRel(num x, num y) native "SVGPathElement_createSVGPathSegLinetoRel_Callback";
/** @domName SVGPathElement.createSVGPathSegLinetoVerticalAbs */
- SVGPathSegLinetoVerticalAbs createSVGPathSegLinetoVerticalAbs(num y) native "SVGPathElement_createSVGPathSegLinetoVerticalAbs_Callback";
+ PathSegLinetoVerticalAbs createSVGPathSegLinetoVerticalAbs(num y) native "SVGPathElement_createSVGPathSegLinetoVerticalAbs_Callback";
/** @domName SVGPathElement.createSVGPathSegLinetoVerticalRel */
- SVGPathSegLinetoVerticalRel createSVGPathSegLinetoVerticalRel(num y) native "SVGPathElement_createSVGPathSegLinetoVerticalRel_Callback";
+ PathSegLinetoVerticalRel createSVGPathSegLinetoVerticalRel(num y) native "SVGPathElement_createSVGPathSegLinetoVerticalRel_Callback";
/** @domName SVGPathElement.createSVGPathSegMovetoAbs */
- SVGPathSegMovetoAbs createSVGPathSegMovetoAbs(num x, num y) native "SVGPathElement_createSVGPathSegMovetoAbs_Callback";
+ PathSegMovetoAbs createSVGPathSegMovetoAbs(num x, num y) native "SVGPathElement_createSVGPathSegMovetoAbs_Callback";
/** @domName SVGPathElement.createSVGPathSegMovetoRel */
- SVGPathSegMovetoRel createSVGPathSegMovetoRel(num x, num y) native "SVGPathElement_createSVGPathSegMovetoRel_Callback";
+ PathSegMovetoRel createSVGPathSegMovetoRel(num x, num y) native "SVGPathElement_createSVGPathSegMovetoRel_Callback";
/** @domName SVGPathElement.getPathSegAtLength */
@@ -4716,7 +4661,7 @@
/** @domName SVGPathElement.getPointAtLength */
- SVGPoint getPointAtLength(num distance) native "SVGPathElement_getPointAtLength_Callback";
+ Point getPointAtLength(num distance) native "SVGPathElement_getPointAtLength_Callback";
/** @domName SVGPathElement.getTotalLength */
@@ -4724,7 +4669,7 @@
/** @domName SVGPathElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGPathElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGPathElement_externalResourcesRequired_Getter";
/** @domName SVGPathElement.xmllang */
@@ -4744,31 +4689,31 @@
/** @domName SVGPathElement.farthestViewportElement */
- SVGElement get farthestViewportElement native "SVGPathElement_farthestViewportElement_Getter";
+ SvgElement get farthestViewportElement native "SVGPathElement_farthestViewportElement_Getter";
/** @domName SVGPathElement.nearestViewportElement */
- SVGElement get nearestViewportElement native "SVGPathElement_nearestViewportElement_Getter";
+ SvgElement get nearestViewportElement native "SVGPathElement_nearestViewportElement_Getter";
/** @domName SVGPathElement.getBBox */
- SVGRect getBBox() native "SVGPathElement_getBBox_Callback";
+ Rect getBBox() native "SVGPathElement_getBBox_Callback";
/** @domName SVGPathElement.getCTM */
- SVGMatrix getCTM() native "SVGPathElement_getCTM_Callback";
+ Matrix getCTM() native "SVGPathElement_getCTM_Callback";
/** @domName SVGPathElement.getScreenCTM */
- SVGMatrix getScreenCTM() native "SVGPathElement_getScreenCTM_Callback";
+ Matrix getScreenCTM() native "SVGPathElement_getScreenCTM_Callback";
/** @domName SVGPathElement.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native "SVGPathElement_getTransformToElement_Callback";
+ Matrix getTransformToElement(SvgElement element) native "SVGPathElement_getTransformToElement_Callback";
/** @domName SVGPathElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGPathElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGPathElement_className_Getter";
/** @domName SVGPathElement.style */
@@ -4780,15 +4725,15 @@
/** @domName SVGPathElement.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGPathElement_requiredExtensions_Getter";
+ StringList get requiredExtensions native "SVGPathElement_requiredExtensions_Getter";
/** @domName SVGPathElement.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGPathElement_requiredFeatures_Getter";
+ StringList get requiredFeatures native "SVGPathElement_requiredFeatures_Getter";
/** @domName SVGPathElement.systemLanguage */
- SVGStringList get systemLanguage native "SVGPathElement_systemLanguage_Getter";
+ StringList get systemLanguage native "SVGPathElement_systemLanguage_Getter";
/** @domName SVGPathElement.hasExtension */
@@ -4796,7 +4741,7 @@
/** @domName SVGPathElement.transform */
- SVGAnimatedTransformList get transform native "SVGPathElement_transform_Getter";
+ AnimatedTransformList get transform native "SVGPathElement_transform_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -4807,8 +4752,8 @@
/// @domName SVGPathSeg
-class SVGPathSeg extends NativeFieldWrapperClass1 {
- SVGPathSeg.internal();
+class PathSeg extends NativeFieldWrapperClass1 {
+ PathSeg.internal();
static const int PATHSEG_ARC_ABS = 10;
@@ -4867,8 +4812,8 @@
/// @domName SVGPathSegArcAbs
-class SVGPathSegArcAbs extends SVGPathSeg {
- SVGPathSegArcAbs.internal(): super.internal();
+class PathSegArcAbs extends PathSeg {
+ PathSegArcAbs.internal(): super.internal();
/** @domName SVGPathSegArcAbs.angle */
@@ -4935,8 +4880,8 @@
/// @domName SVGPathSegArcRel
-class SVGPathSegArcRel extends SVGPathSeg {
- SVGPathSegArcRel.internal(): super.internal();
+class PathSegArcRel extends PathSeg {
+ PathSegArcRel.internal(): super.internal();
/** @domName SVGPathSegArcRel.angle */
@@ -5003,8 +4948,8 @@
/// @domName SVGPathSegClosePath
-class SVGPathSegClosePath extends SVGPathSeg {
- SVGPathSegClosePath.internal(): super.internal();
+class PathSegClosePath extends PathSeg {
+ PathSegClosePath.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5015,8 +4960,8 @@
/// @domName SVGPathSegCurvetoCubicAbs
-class SVGPathSegCurvetoCubicAbs extends SVGPathSeg {
- SVGPathSegCurvetoCubicAbs.internal(): super.internal();
+class PathSegCurvetoCubicAbs extends PathSeg {
+ PathSegCurvetoCubicAbs.internal(): super.internal();
/** @domName SVGPathSegCurvetoCubicAbs.x */
@@ -5075,8 +5020,8 @@
/// @domName SVGPathSegCurvetoCubicRel
-class SVGPathSegCurvetoCubicRel extends SVGPathSeg {
- SVGPathSegCurvetoCubicRel.internal(): super.internal();
+class PathSegCurvetoCubicRel extends PathSeg {
+ PathSegCurvetoCubicRel.internal(): super.internal();
/** @domName SVGPathSegCurvetoCubicRel.x */
@@ -5135,8 +5080,8 @@
/// @domName SVGPathSegCurvetoCubicSmoothAbs
-class SVGPathSegCurvetoCubicSmoothAbs extends SVGPathSeg {
- SVGPathSegCurvetoCubicSmoothAbs.internal(): super.internal();
+class PathSegCurvetoCubicSmoothAbs extends PathSeg {
+ PathSegCurvetoCubicSmoothAbs.internal(): super.internal();
/** @domName SVGPathSegCurvetoCubicSmoothAbs.x */
@@ -5179,8 +5124,8 @@
/// @domName SVGPathSegCurvetoCubicSmoothRel
-class SVGPathSegCurvetoCubicSmoothRel extends SVGPathSeg {
- SVGPathSegCurvetoCubicSmoothRel.internal(): super.internal();
+class PathSegCurvetoCubicSmoothRel extends PathSeg {
+ PathSegCurvetoCubicSmoothRel.internal(): super.internal();
/** @domName SVGPathSegCurvetoCubicSmoothRel.x */
@@ -5223,8 +5168,8 @@
/// @domName SVGPathSegCurvetoQuadraticAbs
-class SVGPathSegCurvetoQuadraticAbs extends SVGPathSeg {
- SVGPathSegCurvetoQuadraticAbs.internal(): super.internal();
+class PathSegCurvetoQuadraticAbs extends PathSeg {
+ PathSegCurvetoQuadraticAbs.internal(): super.internal();
/** @domName SVGPathSegCurvetoQuadraticAbs.x */
@@ -5267,8 +5212,8 @@
/// @domName SVGPathSegCurvetoQuadraticRel
-class SVGPathSegCurvetoQuadraticRel extends SVGPathSeg {
- SVGPathSegCurvetoQuadraticRel.internal(): super.internal();
+class PathSegCurvetoQuadraticRel extends PathSeg {
+ PathSegCurvetoQuadraticRel.internal(): super.internal();
/** @domName SVGPathSegCurvetoQuadraticRel.x */
@@ -5311,8 +5256,8 @@
/// @domName SVGPathSegCurvetoQuadraticSmoothAbs
-class SVGPathSegCurvetoQuadraticSmoothAbs extends SVGPathSeg {
- SVGPathSegCurvetoQuadraticSmoothAbs.internal(): super.internal();
+class PathSegCurvetoQuadraticSmoothAbs extends PathSeg {
+ PathSegCurvetoQuadraticSmoothAbs.internal(): super.internal();
/** @domName SVGPathSegCurvetoQuadraticSmoothAbs.x */
@@ -5339,8 +5284,8 @@
/// @domName SVGPathSegCurvetoQuadraticSmoothRel
-class SVGPathSegCurvetoQuadraticSmoothRel extends SVGPathSeg {
- SVGPathSegCurvetoQuadraticSmoothRel.internal(): super.internal();
+class PathSegCurvetoQuadraticSmoothRel extends PathSeg {
+ PathSegCurvetoQuadraticSmoothRel.internal(): super.internal();
/** @domName SVGPathSegCurvetoQuadraticSmoothRel.x */
@@ -5367,8 +5312,8 @@
/// @domName SVGPathSegLinetoAbs
-class SVGPathSegLinetoAbs extends SVGPathSeg {
- SVGPathSegLinetoAbs.internal(): super.internal();
+class PathSegLinetoAbs extends PathSeg {
+ PathSegLinetoAbs.internal(): super.internal();
/** @domName SVGPathSegLinetoAbs.x */
@@ -5395,8 +5340,8 @@
/// @domName SVGPathSegLinetoHorizontalAbs
-class SVGPathSegLinetoHorizontalAbs extends SVGPathSeg {
- SVGPathSegLinetoHorizontalAbs.internal(): super.internal();
+class PathSegLinetoHorizontalAbs extends PathSeg {
+ PathSegLinetoHorizontalAbs.internal(): super.internal();
/** @domName SVGPathSegLinetoHorizontalAbs.x */
@@ -5415,8 +5360,8 @@
/// @domName SVGPathSegLinetoHorizontalRel
-class SVGPathSegLinetoHorizontalRel extends SVGPathSeg {
- SVGPathSegLinetoHorizontalRel.internal(): super.internal();
+class PathSegLinetoHorizontalRel extends PathSeg {
+ PathSegLinetoHorizontalRel.internal(): super.internal();
/** @domName SVGPathSegLinetoHorizontalRel.x */
@@ -5435,8 +5380,8 @@
/// @domName SVGPathSegLinetoRel
-class SVGPathSegLinetoRel extends SVGPathSeg {
- SVGPathSegLinetoRel.internal(): super.internal();
+class PathSegLinetoRel extends PathSeg {
+ PathSegLinetoRel.internal(): super.internal();
/** @domName SVGPathSegLinetoRel.x */
@@ -5463,8 +5408,8 @@
/// @domName SVGPathSegLinetoVerticalAbs
-class SVGPathSegLinetoVerticalAbs extends SVGPathSeg {
- SVGPathSegLinetoVerticalAbs.internal(): super.internal();
+class PathSegLinetoVerticalAbs extends PathSeg {
+ PathSegLinetoVerticalAbs.internal(): super.internal();
/** @domName SVGPathSegLinetoVerticalAbs.y */
@@ -5483,8 +5428,8 @@
/// @domName SVGPathSegLinetoVerticalRel
-class SVGPathSegLinetoVerticalRel extends SVGPathSeg {
- SVGPathSegLinetoVerticalRel.internal(): super.internal();
+class PathSegLinetoVerticalRel extends PathSeg {
+ PathSegLinetoVerticalRel.internal(): super.internal();
/** @domName SVGPathSegLinetoVerticalRel.y */
@@ -5503,80 +5448,82 @@
/// @domName SVGPathSegList
-class SVGPathSegList extends NativeFieldWrapperClass1 implements List<SVGPathSeg> {
- SVGPathSegList.internal();
+class PathSegList extends NativeFieldWrapperClass1 implements List<PathSeg> {
+ PathSegList.internal();
/** @domName SVGPathSegList.numberOfItems */
int get numberOfItems native "SVGPathSegList_numberOfItems_Getter";
- SVGPathSeg operator[](int index) native "SVGPathSegList_item_Callback";
+ PathSeg operator[](int index) native "SVGPathSegList_item_Callback";
- void operator[]=(int index, SVGPathSeg value) {
+ void operator[]=(int index, PathSeg value) {
throw new UnsupportedError("Cannot assign element of immutable List.");
}
- // -- start List<SVGPathSeg> mixins.
- // SVGPathSeg is the element type.
+ // -- start List<PathSeg> mixins.
+ // PathSeg is the element type.
- // From Iterable<SVGPathSeg>:
+ // From Iterable<PathSeg>:
- Iterator<SVGPathSeg> iterator() {
+ Iterator<PathSeg> iterator() {
// Note: NodeLists are not fixed size. And most probably length shouldn't
// be cached in both iterator _and_ forEach method. For now caching it
// for consistency.
- return new FixedSizeListIterator<SVGPathSeg>(this);
+ return new FixedSizeListIterator<PathSeg>(this);
}
- // From Collection<SVGPathSeg>:
+ // From Collection<PathSeg>:
- void add(SVGPathSeg value) {
+ void add(PathSeg value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addLast(SVGPathSeg value) {
+ void addLast(PathSeg value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addAll(Collection<SVGPathSeg> collection) {
+ void addAll(Collection<PathSeg> collection) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- bool contains(SVGPathSeg element) => _Collections.contains(this, element);
+ bool contains(PathSeg element) => _Collections.contains(this, element);
- void forEach(void f(SVGPathSeg element)) => _Collections.forEach(this, f);
+ void forEach(void f(PathSeg element)) => _Collections.forEach(this, f);
- Collection map(f(SVGPathSeg element)) => _Collections.map(this, [], f);
+ Collection map(f(PathSeg element)) => _Collections.map(this, [], f);
- Collection<SVGPathSeg> filter(bool f(SVGPathSeg element)) =>
- _Collections.filter(this, <SVGPathSeg>[], f);
+ Collection<PathSeg> filter(bool f(PathSeg element)) =>
+ _Collections.filter(this, <PathSeg>[], f);
- bool every(bool f(SVGPathSeg element)) => _Collections.every(this, f);
+ bool every(bool f(PathSeg element)) => _Collections.every(this, f);
- bool some(bool f(SVGPathSeg element)) => _Collections.some(this, f);
+ bool some(bool f(PathSeg element)) => _Collections.some(this, f);
bool get isEmpty => this.length == 0;
- // From List<SVGPathSeg>:
+ // From List<PathSeg>:
- void sort([Comparator<SVGPathSeg> compare = Comparable.compare]) {
+ void sort([Comparator<PathSeg> compare = Comparable.compare]) {
throw new UnsupportedError("Cannot sort immutable List.");
}
- int indexOf(SVGPathSeg element, [int start = 0]) =>
+ int indexOf(PathSeg element, [int start = 0]) =>
_Lists.indexOf(this, element, start, this.length);
- int lastIndexOf(SVGPathSeg element, [int start]) {
+ int lastIndexOf(PathSeg element, [int start]) {
if (start == null) start = length - 1;
return _Lists.lastIndexOf(this, element, start);
}
- SVGPathSeg get last => this[length - 1];
+ PathSeg get first => this[0];
- SVGPathSeg removeLast() {
+ PathSeg get last => this[length - 1];
+
+ PathSeg removeLast() {
throw new UnsupportedError("Cannot removeLast on immutable List.");
}
- void setRange(int start, int rangeLength, List<SVGPathSeg> from, [int startFrom]) {
+ void setRange(int start, int rangeLength, List<PathSeg> from, [int startFrom]) {
throw new UnsupportedError("Cannot setRange on immutable List.");
}
@@ -5584,18 +5531,18 @@
throw new UnsupportedError("Cannot removeRange on immutable List.");
}
- void insertRange(int start, int rangeLength, [SVGPathSeg initialValue]) {
+ void insertRange(int start, int rangeLength, [PathSeg initialValue]) {
throw new UnsupportedError("Cannot insertRange on immutable List.");
}
- List<SVGPathSeg> getRange(int start, int rangeLength) =>
- _Lists.getRange(this, start, rangeLength, <SVGPathSeg>[]);
+ List<PathSeg> getRange(int start, int rangeLength) =>
+ _Lists.getRange(this, start, rangeLength, <PathSeg>[]);
- // -- end List<SVGPathSeg> mixins.
+ // -- end List<PathSeg> mixins.
/** @domName SVGPathSegList.appendItem */
- SVGPathSeg appendItem(SVGPathSeg newItem) native "SVGPathSegList_appendItem_Callback";
+ PathSeg appendItem(PathSeg newItem) native "SVGPathSegList_appendItem_Callback";
/** @domName SVGPathSegList.clear */
@@ -5603,23 +5550,23 @@
/** @domName SVGPathSegList.getItem */
- SVGPathSeg getItem(int index) native "SVGPathSegList_getItem_Callback";
+ PathSeg getItem(int index) native "SVGPathSegList_getItem_Callback";
/** @domName SVGPathSegList.initialize */
- SVGPathSeg initialize(SVGPathSeg newItem) native "SVGPathSegList_initialize_Callback";
+ PathSeg initialize(PathSeg newItem) native "SVGPathSegList_initialize_Callback";
/** @domName SVGPathSegList.insertItemBefore */
- SVGPathSeg insertItemBefore(SVGPathSeg newItem, int index) native "SVGPathSegList_insertItemBefore_Callback";
+ PathSeg insertItemBefore(PathSeg newItem, int index) native "SVGPathSegList_insertItemBefore_Callback";
/** @domName SVGPathSegList.removeItem */
- SVGPathSeg removeItem(int index) native "SVGPathSegList_removeItem_Callback";
+ PathSeg removeItem(int index) native "SVGPathSegList_removeItem_Callback";
/** @domName SVGPathSegList.replaceItem */
- SVGPathSeg replaceItem(SVGPathSeg newItem, int index) native "SVGPathSegList_replaceItem_Callback";
+ PathSeg replaceItem(PathSeg newItem, int index) native "SVGPathSegList_replaceItem_Callback";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5630,8 +5577,8 @@
/// @domName SVGPathSegMovetoAbs
-class SVGPathSegMovetoAbs extends SVGPathSeg {
- SVGPathSegMovetoAbs.internal(): super.internal();
+class PathSegMovetoAbs extends PathSeg {
+ PathSegMovetoAbs.internal(): super.internal();
/** @domName SVGPathSegMovetoAbs.x */
@@ -5658,8 +5605,8 @@
/// @domName SVGPathSegMovetoRel
-class SVGPathSegMovetoRel extends SVGPathSeg {
- SVGPathSegMovetoRel.internal(): super.internal();
+class PathSegMovetoRel extends PathSeg {
+ PathSegMovetoRel.internal(): super.internal();
/** @domName SVGPathSegMovetoRel.x */
@@ -5686,48 +5633,50 @@
/// @domName SVGPatternElement
-class SVGPatternElement extends SVGElement implements SVGLangSpace, SVGTests, SVGStylable, SVGURIReference, SVGFitToViewBox, SVGExternalResourcesRequired {
- SVGPatternElement.internal(): super.internal();
+class PatternElement extends SvgElement implements FitToViewBox, Tests, UriReference, Stylable, ExternalResourcesRequired, LangSpace {
+
+ factory PatternElement() => _SvgElementFactoryProvider.createSvgElement_tag("pattern");
+ PatternElement.internal(): super.internal();
/** @domName SVGPatternElement.height */
- SVGAnimatedLength get height native "SVGPatternElement_height_Getter";
+ AnimatedLength get height native "SVGPatternElement_height_Getter";
/** @domName SVGPatternElement.patternContentUnits */
- SVGAnimatedEnumeration get patternContentUnits native "SVGPatternElement_patternContentUnits_Getter";
+ AnimatedEnumeration get patternContentUnits native "SVGPatternElement_patternContentUnits_Getter";
/** @domName SVGPatternElement.patternTransform */
- SVGAnimatedTransformList get patternTransform native "SVGPatternElement_patternTransform_Getter";
+ AnimatedTransformList get patternTransform native "SVGPatternElement_patternTransform_Getter";
/** @domName SVGPatternElement.patternUnits */
- SVGAnimatedEnumeration get patternUnits native "SVGPatternElement_patternUnits_Getter";
+ AnimatedEnumeration get patternUnits native "SVGPatternElement_patternUnits_Getter";
/** @domName SVGPatternElement.width */
- SVGAnimatedLength get width native "SVGPatternElement_width_Getter";
+ AnimatedLength get width native "SVGPatternElement_width_Getter";
/** @domName SVGPatternElement.x */
- SVGAnimatedLength get x native "SVGPatternElement_x_Getter";
+ AnimatedLength get x native "SVGPatternElement_x_Getter";
/** @domName SVGPatternElement.y */
- SVGAnimatedLength get y native "SVGPatternElement_y_Getter";
+ AnimatedLength get y native "SVGPatternElement_y_Getter";
/** @domName SVGPatternElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGPatternElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGPatternElement_externalResourcesRequired_Getter";
/** @domName SVGPatternElement.preserveAspectRatio */
- SVGAnimatedPreserveAspectRatio get preserveAspectRatio native "SVGPatternElement_preserveAspectRatio_Getter";
+ AnimatedPreserveAspectRatio get preserveAspectRatio native "SVGPatternElement_preserveAspectRatio_Getter";
/** @domName SVGPatternElement.viewBox */
- SVGAnimatedRect get viewBox native "SVGPatternElement_viewBox_Getter";
+ AnimatedRect get viewBox native "SVGPatternElement_viewBox_Getter";
/** @domName SVGPatternElement.xmllang */
@@ -5747,7 +5696,7 @@
/** @domName SVGPatternElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGPatternElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGPatternElement_className_Getter";
/** @domName SVGPatternElement.style */
@@ -5759,15 +5708,15 @@
/** @domName SVGPatternElement.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGPatternElement_requiredExtensions_Getter";
+ StringList get requiredExtensions native "SVGPatternElement_requiredExtensions_Getter";
/** @domName SVGPatternElement.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGPatternElement_requiredFeatures_Getter";
+ StringList get requiredFeatures native "SVGPatternElement_requiredFeatures_Getter";
/** @domName SVGPatternElement.systemLanguage */
- SVGStringList get systemLanguage native "SVGPatternElement_systemLanguage_Getter";
+ StringList get systemLanguage native "SVGPatternElement_systemLanguage_Getter";
/** @domName SVGPatternElement.hasExtension */
@@ -5775,7 +5724,7 @@
/** @domName SVGPatternElement.href */
- SVGAnimatedString get href native "SVGPatternElement_href_Getter";
+ AnimatedString get href native "SVGPatternElement_href_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5785,9 +5734,9 @@
// WARNING: Do not edit - generated code.
-/// @domName SVGPoint
-class SVGPoint extends NativeFieldWrapperClass1 {
- SVGPoint.internal();
+class Point extends NativeFieldWrapperClass1 {
+ factory Point(num x, num y) => _PointFactoryProvider.createPoint(x, y);
+ Point.internal();
/** @domName SVGPoint.x */
@@ -5807,7 +5756,7 @@
/** @domName SVGPoint.matrixTransform */
- SVGPoint matrixTransform(SVGMatrix matrix) native "SVGPoint_matrixTransform_Callback";
+ Point matrixTransform(Matrix matrix) native "SVGPoint_matrixTransform_Callback";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5818,8 +5767,8 @@
/// @domName SVGPointList
-class SVGPointList extends NativeFieldWrapperClass1 {
- SVGPointList.internal();
+class PointList extends NativeFieldWrapperClass1 {
+ PointList.internal();
/** @domName SVGPointList.numberOfItems */
@@ -5827,7 +5776,7 @@
/** @domName SVGPointList.appendItem */
- SVGPoint appendItem(SVGPoint item) native "SVGPointList_appendItem_Callback";
+ Point appendItem(Point item) native "SVGPointList_appendItem_Callback";
/** @domName SVGPointList.clear */
@@ -5835,23 +5784,23 @@
/** @domName SVGPointList.getItem */
- SVGPoint getItem(int index) native "SVGPointList_getItem_Callback";
+ Point getItem(int index) native "SVGPointList_getItem_Callback";
/** @domName SVGPointList.initialize */
- SVGPoint initialize(SVGPoint item) native "SVGPointList_initialize_Callback";
+ Point initialize(Point item) native "SVGPointList_initialize_Callback";
/** @domName SVGPointList.insertItemBefore */
- SVGPoint insertItemBefore(SVGPoint item, int index) native "SVGPointList_insertItemBefore_Callback";
+ Point insertItemBefore(Point item, int index) native "SVGPointList_insertItemBefore_Callback";
/** @domName SVGPointList.removeItem */
- SVGPoint removeItem(int index) native "SVGPointList_removeItem_Callback";
+ Point removeItem(int index) native "SVGPointList_removeItem_Callback";
/** @domName SVGPointList.replaceItem */
- SVGPoint replaceItem(SVGPoint item, int index) native "SVGPointList_replaceItem_Callback";
+ Point replaceItem(Point item, int index) native "SVGPointList_replaceItem_Callback";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5862,20 +5811,22 @@
/// @domName SVGPolygonElement
-class SVGPolygonElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired {
- SVGPolygonElement.internal(): super.internal();
+class PolygonElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace {
+
+ factory PolygonElement() => _SvgElementFactoryProvider.createSvgElement_tag("polygon");
+ PolygonElement.internal(): super.internal();
/** @domName SVGPolygonElement.animatedPoints */
- SVGPointList get animatedPoints native "SVGPolygonElement_animatedPoints_Getter";
+ PointList get animatedPoints native "SVGPolygonElement_animatedPoints_Getter";
/** @domName SVGPolygonElement.points */
- SVGPointList get points native "SVGPolygonElement_points_Getter";
+ PointList get points native "SVGPolygonElement_points_Getter";
/** @domName SVGPolygonElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGPolygonElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGPolygonElement_externalResourcesRequired_Getter";
/** @domName SVGPolygonElement.xmllang */
@@ -5895,31 +5846,31 @@
/** @domName SVGPolygonElement.farthestViewportElement */
- SVGElement get farthestViewportElement native "SVGPolygonElement_farthestViewportElement_Getter";
+ SvgElement get farthestViewportElement native "SVGPolygonElement_farthestViewportElement_Getter";
/** @domName SVGPolygonElement.nearestViewportElement */
- SVGElement get nearestViewportElement native "SVGPolygonElement_nearestViewportElement_Getter";
+ SvgElement get nearestViewportElement native "SVGPolygonElement_nearestViewportElement_Getter";
/** @domName SVGPolygonElement.getBBox */
- SVGRect getBBox() native "SVGPolygonElement_getBBox_Callback";
+ Rect getBBox() native "SVGPolygonElement_getBBox_Callback";
/** @domName SVGPolygonElement.getCTM */
- SVGMatrix getCTM() native "SVGPolygonElement_getCTM_Callback";
+ Matrix getCTM() native "SVGPolygonElement_getCTM_Callback";
/** @domName SVGPolygonElement.getScreenCTM */
- SVGMatrix getScreenCTM() native "SVGPolygonElement_getScreenCTM_Callback";
+ Matrix getScreenCTM() native "SVGPolygonElement_getScreenCTM_Callback";
/** @domName SVGPolygonElement.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native "SVGPolygonElement_getTransformToElement_Callback";
+ Matrix getTransformToElement(SvgElement element) native "SVGPolygonElement_getTransformToElement_Callback";
/** @domName SVGPolygonElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGPolygonElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGPolygonElement_className_Getter";
/** @domName SVGPolygonElement.style */
@@ -5931,15 +5882,15 @@
/** @domName SVGPolygonElement.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGPolygonElement_requiredExtensions_Getter";
+ StringList get requiredExtensions native "SVGPolygonElement_requiredExtensions_Getter";
/** @domName SVGPolygonElement.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGPolygonElement_requiredFeatures_Getter";
+ StringList get requiredFeatures native "SVGPolygonElement_requiredFeatures_Getter";
/** @domName SVGPolygonElement.systemLanguage */
- SVGStringList get systemLanguage native "SVGPolygonElement_systemLanguage_Getter";
+ StringList get systemLanguage native "SVGPolygonElement_systemLanguage_Getter";
/** @domName SVGPolygonElement.hasExtension */
@@ -5947,7 +5898,7 @@
/** @domName SVGPolygonElement.transform */
- SVGAnimatedTransformList get transform native "SVGPolygonElement_transform_Getter";
+ AnimatedTransformList get transform native "SVGPolygonElement_transform_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -5958,20 +5909,22 @@
/// @domName SVGPolylineElement
-class SVGPolylineElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired {
- SVGPolylineElement.internal(): super.internal();
+class PolylineElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace {
+
+ factory PolylineElement() => _SvgElementFactoryProvider.createSvgElement_tag("polyline");
+ PolylineElement.internal(): super.internal();
/** @domName SVGPolylineElement.animatedPoints */
- SVGPointList get animatedPoints native "SVGPolylineElement_animatedPoints_Getter";
+ PointList get animatedPoints native "SVGPolylineElement_animatedPoints_Getter";
/** @domName SVGPolylineElement.points */
- SVGPointList get points native "SVGPolylineElement_points_Getter";
+ PointList get points native "SVGPolylineElement_points_Getter";
/** @domName SVGPolylineElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGPolylineElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGPolylineElement_externalResourcesRequired_Getter";
/** @domName SVGPolylineElement.xmllang */
@@ -5991,31 +5944,31 @@
/** @domName SVGPolylineElement.farthestViewportElement */
- SVGElement get farthestViewportElement native "SVGPolylineElement_farthestViewportElement_Getter";
+ SvgElement get farthestViewportElement native "SVGPolylineElement_farthestViewportElement_Getter";
/** @domName SVGPolylineElement.nearestViewportElement */
- SVGElement get nearestViewportElement native "SVGPolylineElement_nearestViewportElement_Getter";
+ SvgElement get nearestViewportElement native "SVGPolylineElement_nearestViewportElement_Getter";
/** @domName SVGPolylineElement.getBBox */
- SVGRect getBBox() native "SVGPolylineElement_getBBox_Callback";
+ Rect getBBox() native "SVGPolylineElement_getBBox_Callback";
/** @domName SVGPolylineElement.getCTM */
- SVGMatrix getCTM() native "SVGPolylineElement_getCTM_Callback";
+ Matrix getCTM() native "SVGPolylineElement_getCTM_Callback";
/** @domName SVGPolylineElement.getScreenCTM */
- SVGMatrix getScreenCTM() native "SVGPolylineElement_getScreenCTM_Callback";
+ Matrix getScreenCTM() native "SVGPolylineElement_getScreenCTM_Callback";
/** @domName SVGPolylineElement.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native "SVGPolylineElement_getTransformToElement_Callback";
+ Matrix getTransformToElement(SvgElement element) native "SVGPolylineElement_getTransformToElement_Callback";
/** @domName SVGPolylineElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGPolylineElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGPolylineElement_className_Getter";
/** @domName SVGPolylineElement.style */
@@ -6027,15 +5980,15 @@
/** @domName SVGPolylineElement.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGPolylineElement_requiredExtensions_Getter";
+ StringList get requiredExtensions native "SVGPolylineElement_requiredExtensions_Getter";
/** @domName SVGPolylineElement.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGPolylineElement_requiredFeatures_Getter";
+ StringList get requiredFeatures native "SVGPolylineElement_requiredFeatures_Getter";
/** @domName SVGPolylineElement.systemLanguage */
- SVGStringList get systemLanguage native "SVGPolylineElement_systemLanguage_Getter";
+ StringList get systemLanguage native "SVGPolylineElement_systemLanguage_Getter";
/** @domName SVGPolylineElement.hasExtension */
@@ -6043,7 +5996,7 @@
/** @domName SVGPolylineElement.transform */
- SVGAnimatedTransformList get transform native "SVGPolylineElement_transform_Getter";
+ AnimatedTransformList get transform native "SVGPolylineElement_transform_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -6054,8 +6007,8 @@
/// @domName SVGPreserveAspectRatio
-class SVGPreserveAspectRatio extends NativeFieldWrapperClass1 {
- SVGPreserveAspectRatio.internal();
+class PreserveAspectRatio extends NativeFieldWrapperClass1 {
+ PreserveAspectRatio.internal();
static const int SVG_MEETORSLICE_MEET = 1;
@@ -6110,32 +6063,34 @@
/// @domName SVGRadialGradientElement
-class SVGRadialGradientElement extends SVGGradientElement {
- SVGRadialGradientElement.internal(): super.internal();
+class RadialGradientElement extends GradientElement {
+
+ factory RadialGradientElement() => _SvgElementFactoryProvider.createSvgElement_tag("radialGradient");
+ RadialGradientElement.internal(): super.internal();
/** @domName SVGRadialGradientElement.cx */
- SVGAnimatedLength get cx native "SVGRadialGradientElement_cx_Getter";
+ AnimatedLength get cx native "SVGRadialGradientElement_cx_Getter";
/** @domName SVGRadialGradientElement.cy */
- SVGAnimatedLength get cy native "SVGRadialGradientElement_cy_Getter";
+ AnimatedLength get cy native "SVGRadialGradientElement_cy_Getter";
/** @domName SVGRadialGradientElement.fr */
- SVGAnimatedLength get fr native "SVGRadialGradientElement_fr_Getter";
+ AnimatedLength get fr native "SVGRadialGradientElement_fr_Getter";
/** @domName SVGRadialGradientElement.fx */
- SVGAnimatedLength get fx native "SVGRadialGradientElement_fx_Getter";
+ AnimatedLength get fx native "SVGRadialGradientElement_fx_Getter";
/** @domName SVGRadialGradientElement.fy */
- SVGAnimatedLength get fy native "SVGRadialGradientElement_fy_Getter";
+ AnimatedLength get fy native "SVGRadialGradientElement_fy_Getter";
/** @domName SVGRadialGradientElement.r */
- SVGAnimatedLength get r native "SVGRadialGradientElement_r_Getter";
+ AnimatedLength get r native "SVGRadialGradientElement_r_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -6146,8 +6101,8 @@
/// @domName SVGRect
-class SVGRect extends NativeFieldWrapperClass1 {
- SVGRect.internal();
+class Rect extends NativeFieldWrapperClass1 {
+ Rect.internal();
/** @domName SVGRect.height */
@@ -6190,36 +6145,38 @@
/// @domName SVGRectElement
-class SVGRectElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired {
- SVGRectElement.internal(): super.internal();
+class RectElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace {
+
+ factory RectElement() => _SvgElementFactoryProvider.createSvgElement_tag("rect");
+ RectElement.internal(): super.internal();
/** @domName SVGRectElement.height */
- SVGAnimatedLength get height native "SVGRectElement_height_Getter";
+ AnimatedLength get height native "SVGRectElement_height_Getter";
/** @domName SVGRectElement.rx */
- SVGAnimatedLength get rx native "SVGRectElement_rx_Getter";
+ AnimatedLength get rx native "SVGRectElement_rx_Getter";
/** @domName SVGRectElement.ry */
- SVGAnimatedLength get ry native "SVGRectElement_ry_Getter";
+ AnimatedLength get ry native "SVGRectElement_ry_Getter";
/** @domName SVGRectElement.width */
- SVGAnimatedLength get width native "SVGRectElement_width_Getter";
+ AnimatedLength get width native "SVGRectElement_width_Getter";
/** @domName SVGRectElement.x */
- SVGAnimatedLength get x native "SVGRectElement_x_Getter";
+ AnimatedLength get x native "SVGRectElement_x_Getter";
/** @domName SVGRectElement.y */
- SVGAnimatedLength get y native "SVGRectElement_y_Getter";
+ AnimatedLength get y native "SVGRectElement_y_Getter";
/** @domName SVGRectElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGRectElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGRectElement_externalResourcesRequired_Getter";
/** @domName SVGRectElement.xmllang */
@@ -6239,31 +6196,31 @@
/** @domName SVGRectElement.farthestViewportElement */
- SVGElement get farthestViewportElement native "SVGRectElement_farthestViewportElement_Getter";
+ SvgElement get farthestViewportElement native "SVGRectElement_farthestViewportElement_Getter";
/** @domName SVGRectElement.nearestViewportElement */
- SVGElement get nearestViewportElement native "SVGRectElement_nearestViewportElement_Getter";
+ SvgElement get nearestViewportElement native "SVGRectElement_nearestViewportElement_Getter";
/** @domName SVGRectElement.getBBox */
- SVGRect getBBox() native "SVGRectElement_getBBox_Callback";
+ Rect getBBox() native "SVGRectElement_getBBox_Callback";
/** @domName SVGRectElement.getCTM */
- SVGMatrix getCTM() native "SVGRectElement_getCTM_Callback";
+ Matrix getCTM() native "SVGRectElement_getCTM_Callback";
/** @domName SVGRectElement.getScreenCTM */
- SVGMatrix getScreenCTM() native "SVGRectElement_getScreenCTM_Callback";
+ Matrix getScreenCTM() native "SVGRectElement_getScreenCTM_Callback";
/** @domName SVGRectElement.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native "SVGRectElement_getTransformToElement_Callback";
+ Matrix getTransformToElement(SvgElement element) native "SVGRectElement_getTransformToElement_Callback";
/** @domName SVGRectElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGRectElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGRectElement_className_Getter";
/** @domName SVGRectElement.style */
@@ -6275,15 +6232,15 @@
/** @domName SVGRectElement.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGRectElement_requiredExtensions_Getter";
+ StringList get requiredExtensions native "SVGRectElement_requiredExtensions_Getter";
/** @domName SVGRectElement.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGRectElement_requiredFeatures_Getter";
+ StringList get requiredFeatures native "SVGRectElement_requiredFeatures_Getter";
/** @domName SVGRectElement.systemLanguage */
- SVGStringList get systemLanguage native "SVGRectElement_systemLanguage_Getter";
+ StringList get systemLanguage native "SVGRectElement_systemLanguage_Getter";
/** @domName SVGRectElement.hasExtension */
@@ -6291,7 +6248,7 @@
/** @domName SVGRectElement.transform */
- SVGAnimatedTransformList get transform native "SVGRectElement_transform_Getter";
+ AnimatedTransformList get transform native "SVGRectElement_transform_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -6302,8 +6259,8 @@
/// @domName SVGRenderingIntent
-class SVGRenderingIntent extends NativeFieldWrapperClass1 {
- SVGRenderingIntent.internal();
+class RenderingIntent extends NativeFieldWrapperClass1 {
+ RenderingIntent.internal();
static const int RENDERING_INTENT_ABSOLUTE_COLORIMETRIC = 5;
@@ -6322,275 +6279,14 @@
// 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.
-
-class SVGSVGElement extends SVGElement implements SVGZoomAndPan, SVGLocatable, SVGLangSpace, SVGTests, SVGStylable, SVGFitToViewBox, SVGExternalResourcesRequired {
- factory SVGSVGElement() => _SVGSVGElementFactoryProvider.createSVGSVGElement();
-
- SVGSVGElement.internal(): super.internal();
-
-
- /** @domName SVGSVGElement.contentScriptType */
- String get contentScriptType native "SVGSVGElement_contentScriptType_Getter";
-
-
- /** @domName SVGSVGElement.contentScriptType */
- void set contentScriptType(String value) native "SVGSVGElement_contentScriptType_Setter";
-
-
- /** @domName SVGSVGElement.contentStyleType */
- String get contentStyleType native "SVGSVGElement_contentStyleType_Getter";
-
-
- /** @domName SVGSVGElement.contentStyleType */
- void set contentStyleType(String value) native "SVGSVGElement_contentStyleType_Setter";
-
-
- /** @domName SVGSVGElement.currentScale */
- num get currentScale native "SVGSVGElement_currentScale_Getter";
-
-
- /** @domName SVGSVGElement.currentScale */
- void set currentScale(num value) native "SVGSVGElement_currentScale_Setter";
-
-
- /** @domName SVGSVGElement.currentTranslate */
- SVGPoint get currentTranslate native "SVGSVGElement_currentTranslate_Getter";
-
-
- /** @domName SVGSVGElement.currentView */
- SVGViewSpec get currentView native "SVGSVGElement_currentView_Getter";
-
-
- /** @domName SVGSVGElement.height */
- SVGAnimatedLength get height native "SVGSVGElement_height_Getter";
-
-
- /** @domName SVGSVGElement.pixelUnitToMillimeterX */
- num get pixelUnitToMillimeterX native "SVGSVGElement_pixelUnitToMillimeterX_Getter";
-
-
- /** @domName SVGSVGElement.pixelUnitToMillimeterY */
- num get pixelUnitToMillimeterY native "SVGSVGElement_pixelUnitToMillimeterY_Getter";
-
-
- /** @domName SVGSVGElement.screenPixelToMillimeterX */
- num get screenPixelToMillimeterX native "SVGSVGElement_screenPixelToMillimeterX_Getter";
-
-
- /** @domName SVGSVGElement.screenPixelToMillimeterY */
- num get screenPixelToMillimeterY native "SVGSVGElement_screenPixelToMillimeterY_Getter";
-
-
- /** @domName SVGSVGElement.useCurrentView */
- bool get useCurrentView native "SVGSVGElement_useCurrentView_Getter";
-
-
- /** @domName SVGSVGElement.viewport */
- SVGRect get viewport native "SVGSVGElement_viewport_Getter";
-
-
- /** @domName SVGSVGElement.width */
- SVGAnimatedLength get width native "SVGSVGElement_width_Getter";
-
-
- /** @domName SVGSVGElement.x */
- SVGAnimatedLength get x native "SVGSVGElement_x_Getter";
-
-
- /** @domName SVGSVGElement.y */
- SVGAnimatedLength get y native "SVGSVGElement_y_Getter";
-
-
- /** @domName SVGSVGElement.animationsPaused */
- bool animationsPaused() native "SVGSVGElement_animationsPaused_Callback";
-
-
- /** @domName SVGSVGElement.checkEnclosure */
- bool checkEnclosure(SVGElement element, SVGRect rect) native "SVGSVGElement_checkEnclosure_Callback";
-
-
- /** @domName SVGSVGElement.checkIntersection */
- bool checkIntersection(SVGElement element, SVGRect rect) native "SVGSVGElement_checkIntersection_Callback";
-
-
- /** @domName SVGSVGElement.createSVGAngle */
- SVGAngle createSVGAngle() native "SVGSVGElement_createSVGAngle_Callback";
-
-
- /** @domName SVGSVGElement.createSVGLength */
- SVGLength createSVGLength() native "SVGSVGElement_createSVGLength_Callback";
-
-
- /** @domName SVGSVGElement.createSVGMatrix */
- SVGMatrix createSVGMatrix() native "SVGSVGElement_createSVGMatrix_Callback";
-
-
- /** @domName SVGSVGElement.createSVGNumber */
- SVGNumber createSVGNumber() native "SVGSVGElement_createSVGNumber_Callback";
-
-
- /** @domName SVGSVGElement.createSVGPoint */
- SVGPoint createSVGPoint() native "SVGSVGElement_createSVGPoint_Callback";
-
-
- /** @domName SVGSVGElement.createSVGRect */
- SVGRect createSVGRect() native "SVGSVGElement_createSVGRect_Callback";
-
-
- /** @domName SVGSVGElement.createSVGTransform */
- SVGTransform createSVGTransform() native "SVGSVGElement_createSVGTransform_Callback";
-
-
- /** @domName SVGSVGElement.createSVGTransformFromMatrix */
- SVGTransform createSVGTransformFromMatrix(SVGMatrix matrix) native "SVGSVGElement_createSVGTransformFromMatrix_Callback";
-
-
- /** @domName SVGSVGElement.deselectAll */
- void deselectAll() native "SVGSVGElement_deselectAll_Callback";
-
-
- /** @domName SVGSVGElement.forceRedraw */
- void forceRedraw() native "SVGSVGElement_forceRedraw_Callback";
-
-
- /** @domName SVGSVGElement.getCurrentTime */
- num getCurrentTime() native "SVGSVGElement_getCurrentTime_Callback";
-
-
- /** @domName SVGSVGElement.getElementById */
- Element getElementById(String elementId) native "SVGSVGElement_getElementById_Callback";
-
-
- /** @domName SVGSVGElement.getEnclosureList */
- List<Node> getEnclosureList(SVGRect rect, SVGElement referenceElement) native "SVGSVGElement_getEnclosureList_Callback";
-
-
- /** @domName SVGSVGElement.getIntersectionList */
- List<Node> getIntersectionList(SVGRect rect, SVGElement referenceElement) native "SVGSVGElement_getIntersectionList_Callback";
-
-
- /** @domName SVGSVGElement.pauseAnimations */
- void pauseAnimations() native "SVGSVGElement_pauseAnimations_Callback";
-
-
- /** @domName SVGSVGElement.setCurrentTime */
- void setCurrentTime(num seconds) native "SVGSVGElement_setCurrentTime_Callback";
-
-
- /** @domName SVGSVGElement.suspendRedraw */
- int suspendRedraw(int maxWaitMilliseconds) native "SVGSVGElement_suspendRedraw_Callback";
-
-
- /** @domName SVGSVGElement.unpauseAnimations */
- void unpauseAnimations() native "SVGSVGElement_unpauseAnimations_Callback";
-
-
- /** @domName SVGSVGElement.unsuspendRedraw */
- void unsuspendRedraw(int suspendHandleId) native "SVGSVGElement_unsuspendRedraw_Callback";
-
-
- /** @domName SVGSVGElement.unsuspendRedrawAll */
- void unsuspendRedrawAll() native "SVGSVGElement_unsuspendRedrawAll_Callback";
-
-
- /** @domName SVGSVGElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGSVGElement_externalResourcesRequired_Getter";
-
-
- /** @domName SVGSVGElement.preserveAspectRatio */
- SVGAnimatedPreserveAspectRatio get preserveAspectRatio native "SVGSVGElement_preserveAspectRatio_Getter";
-
-
- /** @domName SVGSVGElement.viewBox */
- SVGAnimatedRect get viewBox native "SVGSVGElement_viewBox_Getter";
-
-
- /** @domName SVGSVGElement.xmllang */
- String get xmllang native "SVGSVGElement_xmllang_Getter";
-
-
- /** @domName SVGSVGElement.xmllang */
- void set xmllang(String value) native "SVGSVGElement_xmllang_Setter";
-
-
- /** @domName SVGSVGElement.xmlspace */
- String get xmlspace native "SVGSVGElement_xmlspace_Getter";
-
-
- /** @domName SVGSVGElement.xmlspace */
- void set xmlspace(String value) native "SVGSVGElement_xmlspace_Setter";
-
-
- /** @domName SVGSVGElement.farthestViewportElement */
- SVGElement get farthestViewportElement native "SVGSVGElement_farthestViewportElement_Getter";
-
-
- /** @domName SVGSVGElement.nearestViewportElement */
- SVGElement get nearestViewportElement native "SVGSVGElement_nearestViewportElement_Getter";
-
-
- /** @domName SVGSVGElement.getBBox */
- SVGRect getBBox() native "SVGSVGElement_getBBox_Callback";
-
-
- /** @domName SVGSVGElement.getCTM */
- SVGMatrix getCTM() native "SVGSVGElement_getCTM_Callback";
-
-
- /** @domName SVGSVGElement.getScreenCTM */
- SVGMatrix getScreenCTM() native "SVGSVGElement_getScreenCTM_Callback";
-
-
- /** @domName SVGSVGElement.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native "SVGSVGElement_getTransformToElement_Callback";
-
-
- /** @domName SVGSVGElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGSVGElement_className_Getter";
-
-
- /** @domName SVGSVGElement.style */
- CSSStyleDeclaration get style native "SVGSVGElement_style_Getter";
-
-
- /** @domName SVGSVGElement.getPresentationAttribute */
- CSSValue getPresentationAttribute(String name) native "SVGSVGElement_getPresentationAttribute_Callback";
-
-
- /** @domName SVGSVGElement.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGSVGElement_requiredExtensions_Getter";
-
-
- /** @domName SVGSVGElement.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGSVGElement_requiredFeatures_Getter";
-
-
- /** @domName SVGSVGElement.systemLanguage */
- SVGStringList get systemLanguage native "SVGSVGElement_systemLanguage_Getter";
-
-
- /** @domName SVGSVGElement.hasExtension */
- bool hasExtension(String extension) native "SVGSVGElement_hasExtension_Callback";
-
-
- /** @domName SVGSVGElement.zoomAndPan */
- int get zoomAndPan native "SVGSVGElement_zoomAndPan_Getter";
-
-
- /** @domName SVGSVGElement.zoomAndPan */
- void set zoomAndPan(int value) native "SVGSVGElement_zoomAndPan_Setter";
-
-}
-// Copyright (c) 2012, 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.
-
// WARNING: Do not edit - generated code.
/// @domName SVGScriptElement
-class SVGScriptElement extends SVGElement implements SVGURIReference, SVGExternalResourcesRequired {
- SVGScriptElement.internal(): super.internal();
+class ScriptElement extends SvgElement implements UriReference, ExternalResourcesRequired {
+
+ factory ScriptElement() => _SvgElementFactoryProvider.createSvgElement_tag("script");
+ ScriptElement.internal(): super.internal();
/** @domName SVGScriptElement.type */
@@ -6602,11 +6298,11 @@
/** @domName SVGScriptElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGScriptElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGScriptElement_externalResourcesRequired_Getter";
/** @domName SVGScriptElement.href */
- SVGAnimatedString get href native "SVGScriptElement_href_Getter";
+ AnimatedString get href native "SVGScriptElement_href_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -6617,8 +6313,10 @@
/// @domName SVGSetElement
-class SVGSetElement extends SVGAnimationElement {
- SVGSetElement.internal(): super.internal();
+class SetElement extends AnimationElement {
+
+ factory SetElement() => _SvgElementFactoryProvider.createSvgElement_tag("set");
+ SetElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -6629,16 +6327,18 @@
/// @domName SVGStopElement
-class SVGStopElement extends SVGElement implements SVGStylable {
- SVGStopElement.internal(): super.internal();
+class StopElement extends SvgElement implements Stylable {
+
+ factory StopElement() => _SvgElementFactoryProvider.createSvgElement_tag("stop");
+ StopElement.internal(): super.internal();
/** @domName SVGStopElement.offset */
- SVGAnimatedNumber get offset native "SVGStopElement_offset_Getter";
+ AnimatedNumber get offset native "SVGStopElement_offset_Getter";
/** @domName SVGStopElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGStopElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGStopElement_className_Getter";
/** @domName SVGStopElement.style */
@@ -6657,8 +6357,8 @@
/// @domName SVGStringList
-class SVGStringList extends NativeFieldWrapperClass1 implements List<String> {
- SVGStringList.internal();
+class StringList extends NativeFieldWrapperClass1 implements List<String> {
+ StringList.internal();
/** @domName SVGStringList.numberOfItems */
@@ -6724,6 +6424,8 @@
return _Lists.lastIndexOf(this, element, start);
}
+ String get first => this[0];
+
String get last => this[length - 1];
String removeLast() {
@@ -6784,12 +6486,12 @@
/// @domName SVGStylable
-class SVGStylable extends NativeFieldWrapperClass1 {
- SVGStylable.internal();
+class Stylable extends NativeFieldWrapperClass1 {
+ Stylable.internal();
/** @domName SVGStylable.className */
- SVGAnimatedString get $dom_svgClassName native "SVGStylable_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGStylable_className_Getter";
/** @domName SVGStylable.style */
@@ -6808,8 +6510,10 @@
/// @domName SVGStyleElement
-class SVGStyleElement extends SVGElement implements SVGLangSpace {
- SVGStyleElement.internal(): super.internal();
+class StyleElement extends SvgElement implements LangSpace {
+
+ factory StyleElement() => _SvgElementFactoryProvider.createSvgElement_tag("style");
+ StyleElement.internal(): super.internal();
/** @domName SVGStyleElement.disabled */
@@ -6867,13 +6571,409 @@
// WARNING: Do not edit - generated code.
+/// @domName SVGDocument
+class SvgDocument extends Document {
+ SvgDocument.internal(): super.internal();
+
+
+ /** @domName SVGDocument.rootElement */
+ SvgSvgElement get rootElement native "SVGDocument_rootElement_Getter";
+
+
+ /** @domName SVGDocument.createEvent */
+ Event $dom_createEvent(String eventType) native "SVGDocument_createEvent_Callback";
+
+}
+// Copyright (c) 2011, 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.
+
+
+class _AttributeClassSet extends CssClassSet {
+ final Element _element;
+
+ _AttributeClassSet(this._element);
+
+ Set<String> readClasses() {
+ var classname = _element.attributes['class'];
+
+ Set<String> s = new Set<String>();
+ if (classname == null) {
+ return s;
+ }
+ for (String name in classname.split(' ')) {
+ String trimmed = name.trim();
+ if (!trimmed.isEmpty) {
+ s.add(trimmed);
+ }
+ }
+ return s;
+ }
+
+ void writeClasses(Set s) {
+ List list = new List.from(s);
+ _element.attributes['class'] = Strings.join(list, ' ');
+ }
+}
+
+class SvgElement extends Element {
+ factory SvgElement.tag(String tag) =>
+ _SvgElementFactoryProvider.createSvgElement_tag(tag);
+ factory SvgElement.svg(String svg) =>
+ _SvgElementFactoryProvider.createSvgElement_svg(svg);
+
+ _AttributeClassSet _cssClassSet;
+ CssClassSet get classes {
+ if (_cssClassSet == null) {
+ _cssClassSet = new _AttributeClassSet(this);
+ }
+ return _cssClassSet;
+ }
+
+ List<Element> get elements => new FilteredElementList(this);
+
+ void set elements(Collection<Element> value) {
+ final elements = this.elements;
+ elements.clear();
+ elements.addAll(value);
+ }
+
+ List<Element> get children => new FilteredElementList(this);
+
+ void set children(Collection<Element> value) {
+ final children = this.children;
+ children.clear();
+ children.addAll(value);
+ }
+
+ String get outerHTML {
+ final container = new Element.tag("div");
+ final SvgElement cloned = this.clone(true);
+ container.children.add(cloned);
+ return container.innerHTML;
+ }
+
+ String get innerHTML {
+ final container = new Element.tag("div");
+ final SvgElement cloned = this.clone(true);
+ container.children.addAll(cloned.children);
+ return container.innerHTML;
+ }
+
+ void set innerHTML(String svg) {
+ final container = new Element.tag("div");
+ // Wrap the SVG string in <svg> so that SvgElements are created, rather than
+ // HTMLElements.
+ container.innerHTML = '<svg version="1.1">$svg</svg>';
+ this.children = container.children[0].children;
+ }
+
+ SvgElement.internal(): super.internal();
+
+
+ /** @domName SVGElement.id */
+ String get id native "SVGElement_id_Getter";
+
+
+ /** @domName SVGElement.id */
+ void set id(String value) native "SVGElement_id_Setter";
+
+
+ /** @domName SVGElement.ownerSVGElement */
+ SvgSvgElement get ownerSVGElement native "SVGElement_ownerSVGElement_Getter";
+
+
+ /** @domName SVGElement.viewportElement */
+ SvgElement get viewportElement native "SVGElement_viewportElement_Getter";
+
+
+ /** @domName SVGElement.xmlbase */
+ String get xmlbase native "SVGElement_xmlbase_Getter";
+
+
+ /** @domName SVGElement.xmlbase */
+ void set xmlbase(String value) native "SVGElement_xmlbase_Setter";
+
+}
+// Copyright (c) 2012, 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.
+
+
+class SvgSvgElement extends SvgElement implements FitToViewBox, Tests, Stylable, Locatable, ExternalResourcesRequired, ZoomAndPan, LangSpace {
+ factory SvgSvgElement() => _SvgSvgElementFactoryProvider.createSvgSvgElement();
+
+ SvgSvgElement.internal(): super.internal();
+
+
+ /** @domName SVGSVGElement.contentScriptType */
+ String get contentScriptType native "SVGSVGElement_contentScriptType_Getter";
+
+
+ /** @domName SVGSVGElement.contentScriptType */
+ void set contentScriptType(String value) native "SVGSVGElement_contentScriptType_Setter";
+
+
+ /** @domName SVGSVGElement.contentStyleType */
+ String get contentStyleType native "SVGSVGElement_contentStyleType_Getter";
+
+
+ /** @domName SVGSVGElement.contentStyleType */
+ void set contentStyleType(String value) native "SVGSVGElement_contentStyleType_Setter";
+
+
+ /** @domName SVGSVGElement.currentScale */
+ num get currentScale native "SVGSVGElement_currentScale_Getter";
+
+
+ /** @domName SVGSVGElement.currentScale */
+ void set currentScale(num value) native "SVGSVGElement_currentScale_Setter";
+
+
+ /** @domName SVGSVGElement.currentTranslate */
+ Point get currentTranslate native "SVGSVGElement_currentTranslate_Getter";
+
+
+ /** @domName SVGSVGElement.currentView */
+ ViewSpec get currentView native "SVGSVGElement_currentView_Getter";
+
+
+ /** @domName SVGSVGElement.height */
+ AnimatedLength get height native "SVGSVGElement_height_Getter";
+
+
+ /** @domName SVGSVGElement.pixelUnitToMillimeterX */
+ num get pixelUnitToMillimeterX native "SVGSVGElement_pixelUnitToMillimeterX_Getter";
+
+
+ /** @domName SVGSVGElement.pixelUnitToMillimeterY */
+ num get pixelUnitToMillimeterY native "SVGSVGElement_pixelUnitToMillimeterY_Getter";
+
+
+ /** @domName SVGSVGElement.screenPixelToMillimeterX */
+ num get screenPixelToMillimeterX native "SVGSVGElement_screenPixelToMillimeterX_Getter";
+
+
+ /** @domName SVGSVGElement.screenPixelToMillimeterY */
+ num get screenPixelToMillimeterY native "SVGSVGElement_screenPixelToMillimeterY_Getter";
+
+
+ /** @domName SVGSVGElement.useCurrentView */
+ bool get useCurrentView native "SVGSVGElement_useCurrentView_Getter";
+
+
+ /** @domName SVGSVGElement.viewport */
+ Rect get viewport native "SVGSVGElement_viewport_Getter";
+
+
+ /** @domName SVGSVGElement.width */
+ AnimatedLength get width native "SVGSVGElement_width_Getter";
+
+
+ /** @domName SVGSVGElement.x */
+ AnimatedLength get x native "SVGSVGElement_x_Getter";
+
+
+ /** @domName SVGSVGElement.y */
+ AnimatedLength get y native "SVGSVGElement_y_Getter";
+
+
+ /** @domName SVGSVGElement.animationsPaused */
+ bool animationsPaused() native "SVGSVGElement_animationsPaused_Callback";
+
+
+ /** @domName SVGSVGElement.checkEnclosure */
+ bool checkEnclosure(SvgElement element, Rect rect) native "SVGSVGElement_checkEnclosure_Callback";
+
+
+ /** @domName SVGSVGElement.checkIntersection */
+ bool checkIntersection(SvgElement element, Rect rect) native "SVGSVGElement_checkIntersection_Callback";
+
+
+ /** @domName SVGSVGElement.createSVGAngle */
+ Angle createSVGAngle() native "SVGSVGElement_createSVGAngle_Callback";
+
+
+ /** @domName SVGSVGElement.createSVGLength */
+ Length createSVGLength() native "SVGSVGElement_createSVGLength_Callback";
+
+
+ /** @domName SVGSVGElement.createSVGMatrix */
+ Matrix createSVGMatrix() native "SVGSVGElement_createSVGMatrix_Callback";
+
+
+ /** @domName SVGSVGElement.createSVGNumber */
+ Number createSVGNumber() native "SVGSVGElement_createSVGNumber_Callback";
+
+
+ /** @domName SVGSVGElement.createSVGPoint */
+ Point createSVGPoint() native "SVGSVGElement_createSVGPoint_Callback";
+
+
+ /** @domName SVGSVGElement.createSVGRect */
+ Rect createSVGRect() native "SVGSVGElement_createSVGRect_Callback";
+
+
+ /** @domName SVGSVGElement.createSVGTransform */
+ Transform createSVGTransform() native "SVGSVGElement_createSVGTransform_Callback";
+
+
+ /** @domName SVGSVGElement.createSVGTransformFromMatrix */
+ Transform createSVGTransformFromMatrix(Matrix matrix) native "SVGSVGElement_createSVGTransformFromMatrix_Callback";
+
+
+ /** @domName SVGSVGElement.deselectAll */
+ void deselectAll() native "SVGSVGElement_deselectAll_Callback";
+
+
+ /** @domName SVGSVGElement.forceRedraw */
+ void forceRedraw() native "SVGSVGElement_forceRedraw_Callback";
+
+
+ /** @domName SVGSVGElement.getCurrentTime */
+ num getCurrentTime() native "SVGSVGElement_getCurrentTime_Callback";
+
+
+ /** @domName SVGSVGElement.getElementById */
+ Element getElementById(String elementId) native "SVGSVGElement_getElementById_Callback";
+
+
+ /** @domName SVGSVGElement.getEnclosureList */
+ List<Node> getEnclosureList(Rect rect, SvgElement referenceElement) native "SVGSVGElement_getEnclosureList_Callback";
+
+
+ /** @domName SVGSVGElement.getIntersectionList */
+ List<Node> getIntersectionList(Rect rect, SvgElement referenceElement) native "SVGSVGElement_getIntersectionList_Callback";
+
+
+ /** @domName SVGSVGElement.pauseAnimations */
+ void pauseAnimations() native "SVGSVGElement_pauseAnimations_Callback";
+
+
+ /** @domName SVGSVGElement.setCurrentTime */
+ void setCurrentTime(num seconds) native "SVGSVGElement_setCurrentTime_Callback";
+
+
+ /** @domName SVGSVGElement.suspendRedraw */
+ int suspendRedraw(int maxWaitMilliseconds) native "SVGSVGElement_suspendRedraw_Callback";
+
+
+ /** @domName SVGSVGElement.unpauseAnimations */
+ void unpauseAnimations() native "SVGSVGElement_unpauseAnimations_Callback";
+
+
+ /** @domName SVGSVGElement.unsuspendRedraw */
+ void unsuspendRedraw(int suspendHandleId) native "SVGSVGElement_unsuspendRedraw_Callback";
+
+
+ /** @domName SVGSVGElement.unsuspendRedrawAll */
+ void unsuspendRedrawAll() native "SVGSVGElement_unsuspendRedrawAll_Callback";
+
+
+ /** @domName SVGSVGElement.externalResourcesRequired */
+ AnimatedBoolean get externalResourcesRequired native "SVGSVGElement_externalResourcesRequired_Getter";
+
+
+ /** @domName SVGSVGElement.preserveAspectRatio */
+ AnimatedPreserveAspectRatio get preserveAspectRatio native "SVGSVGElement_preserveAspectRatio_Getter";
+
+
+ /** @domName SVGSVGElement.viewBox */
+ AnimatedRect get viewBox native "SVGSVGElement_viewBox_Getter";
+
+
+ /** @domName SVGSVGElement.xmllang */
+ String get xmllang native "SVGSVGElement_xmllang_Getter";
+
+
+ /** @domName SVGSVGElement.xmllang */
+ void set xmllang(String value) native "SVGSVGElement_xmllang_Setter";
+
+
+ /** @domName SVGSVGElement.xmlspace */
+ String get xmlspace native "SVGSVGElement_xmlspace_Getter";
+
+
+ /** @domName SVGSVGElement.xmlspace */
+ void set xmlspace(String value) native "SVGSVGElement_xmlspace_Setter";
+
+
+ /** @domName SVGSVGElement.farthestViewportElement */
+ SvgElement get farthestViewportElement native "SVGSVGElement_farthestViewportElement_Getter";
+
+
+ /** @domName SVGSVGElement.nearestViewportElement */
+ SvgElement get nearestViewportElement native "SVGSVGElement_nearestViewportElement_Getter";
+
+
+ /** @domName SVGSVGElement.getBBox */
+ Rect getBBox() native "SVGSVGElement_getBBox_Callback";
+
+
+ /** @domName SVGSVGElement.getCTM */
+ Matrix getCTM() native "SVGSVGElement_getCTM_Callback";
+
+
+ /** @domName SVGSVGElement.getScreenCTM */
+ Matrix getScreenCTM() native "SVGSVGElement_getScreenCTM_Callback";
+
+
+ /** @domName SVGSVGElement.getTransformToElement */
+ Matrix getTransformToElement(SvgElement element) native "SVGSVGElement_getTransformToElement_Callback";
+
+
+ /** @domName SVGSVGElement.className */
+ AnimatedString get $dom_svgClassName native "SVGSVGElement_className_Getter";
+
+
+ /** @domName SVGSVGElement.style */
+ CSSStyleDeclaration get style native "SVGSVGElement_style_Getter";
+
+
+ /** @domName SVGSVGElement.getPresentationAttribute */
+ CSSValue getPresentationAttribute(String name) native "SVGSVGElement_getPresentationAttribute_Callback";
+
+
+ /** @domName SVGSVGElement.requiredExtensions */
+ StringList get requiredExtensions native "SVGSVGElement_requiredExtensions_Getter";
+
+
+ /** @domName SVGSVGElement.requiredFeatures */
+ StringList get requiredFeatures native "SVGSVGElement_requiredFeatures_Getter";
+
+
+ /** @domName SVGSVGElement.systemLanguage */
+ StringList get systemLanguage native "SVGSVGElement_systemLanguage_Getter";
+
+
+ /** @domName SVGSVGElement.hasExtension */
+ bool hasExtension(String extension) native "SVGSVGElement_hasExtension_Callback";
+
+
+ /** @domName SVGSVGElement.zoomAndPan */
+ int get zoomAndPan native "SVGSVGElement_zoomAndPan_Getter";
+
+
+ /** @domName SVGSVGElement.zoomAndPan */
+ void set zoomAndPan(int value) native "SVGSVGElement_zoomAndPan_Setter";
+
+}
+// Copyright (c) 2012, 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.
+
+// WARNING: Do not edit - generated code.
+
+
/// @domName SVGSwitchElement
-class SVGSwitchElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGTransformable, SVGExternalResourcesRequired {
- SVGSwitchElement.internal(): super.internal();
+class SwitchElement extends SvgElement implements Transformable, Tests, Stylable, ExternalResourcesRequired, LangSpace {
+
+ factory SwitchElement() => _SvgElementFactoryProvider.createSvgElement_tag("switch");
+ SwitchElement.internal(): super.internal();
/** @domName SVGSwitchElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGSwitchElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGSwitchElement_externalResourcesRequired_Getter";
/** @domName SVGSwitchElement.xmllang */
@@ -6893,31 +6993,31 @@
/** @domName SVGSwitchElement.farthestViewportElement */
- SVGElement get farthestViewportElement native "SVGSwitchElement_farthestViewportElement_Getter";
+ SvgElement get farthestViewportElement native "SVGSwitchElement_farthestViewportElement_Getter";
/** @domName SVGSwitchElement.nearestViewportElement */
- SVGElement get nearestViewportElement native "SVGSwitchElement_nearestViewportElement_Getter";
+ SvgElement get nearestViewportElement native "SVGSwitchElement_nearestViewportElement_Getter";
/** @domName SVGSwitchElement.getBBox */
- SVGRect getBBox() native "SVGSwitchElement_getBBox_Callback";
+ Rect getBBox() native "SVGSwitchElement_getBBox_Callback";
/** @domName SVGSwitchElement.getCTM */
- SVGMatrix getCTM() native "SVGSwitchElement_getCTM_Callback";
+ Matrix getCTM() native "SVGSwitchElement_getCTM_Callback";
/** @domName SVGSwitchElement.getScreenCTM */
- SVGMatrix getScreenCTM() native "SVGSwitchElement_getScreenCTM_Callback";
+ Matrix getScreenCTM() native "SVGSwitchElement_getScreenCTM_Callback";
/** @domName SVGSwitchElement.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native "SVGSwitchElement_getTransformToElement_Callback";
+ Matrix getTransformToElement(SvgElement element) native "SVGSwitchElement_getTransformToElement_Callback";
/** @domName SVGSwitchElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGSwitchElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGSwitchElement_className_Getter";
/** @domName SVGSwitchElement.style */
@@ -6929,15 +7029,15 @@
/** @domName SVGSwitchElement.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGSwitchElement_requiredExtensions_Getter";
+ StringList get requiredExtensions native "SVGSwitchElement_requiredExtensions_Getter";
/** @domName SVGSwitchElement.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGSwitchElement_requiredFeatures_Getter";
+ StringList get requiredFeatures native "SVGSwitchElement_requiredFeatures_Getter";
/** @domName SVGSwitchElement.systemLanguage */
- SVGStringList get systemLanguage native "SVGSwitchElement_systemLanguage_Getter";
+ StringList get systemLanguage native "SVGSwitchElement_systemLanguage_Getter";
/** @domName SVGSwitchElement.hasExtension */
@@ -6945,7 +7045,7 @@
/** @domName SVGSwitchElement.transform */
- SVGAnimatedTransformList get transform native "SVGSwitchElement_transform_Getter";
+ AnimatedTransformList get transform native "SVGSwitchElement_transform_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -6956,20 +7056,22 @@
/// @domName SVGSymbolElement
-class SVGSymbolElement extends SVGElement implements SVGLangSpace, SVGFitToViewBox, SVGExternalResourcesRequired, SVGStylable {
- SVGSymbolElement.internal(): super.internal();
+class SymbolElement extends SvgElement implements FitToViewBox, ExternalResourcesRequired, Stylable, LangSpace {
+
+ factory SymbolElement() => _SvgElementFactoryProvider.createSvgElement_tag("symbol");
+ SymbolElement.internal(): super.internal();
/** @domName SVGSymbolElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGSymbolElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGSymbolElement_externalResourcesRequired_Getter";
/** @domName SVGSymbolElement.preserveAspectRatio */
- SVGAnimatedPreserveAspectRatio get preserveAspectRatio native "SVGSymbolElement_preserveAspectRatio_Getter";
+ AnimatedPreserveAspectRatio get preserveAspectRatio native "SVGSymbolElement_preserveAspectRatio_Getter";
/** @domName SVGSymbolElement.viewBox */
- SVGAnimatedRect get viewBox native "SVGSymbolElement_viewBox_Getter";
+ AnimatedRect get viewBox native "SVGSymbolElement_viewBox_Getter";
/** @domName SVGSymbolElement.xmllang */
@@ -6989,7 +7091,7 @@
/** @domName SVGSymbolElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGSymbolElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGSymbolElement_className_Getter";
/** @domName SVGSymbolElement.style */
@@ -7008,12 +7110,14 @@
/// @domName SVGTRefElement
-class SVGTRefElement extends SVGTextPositioningElement implements SVGURIReference {
- SVGTRefElement.internal(): super.internal();
+class TRefElement extends TextPositioningElement implements UriReference {
+
+ factory TRefElement() => _SvgElementFactoryProvider.createSvgElement_tag("tref");
+ TRefElement.internal(): super.internal();
/** @domName SVGTRefElement.href */
- SVGAnimatedString get href native "SVGTRefElement_href_Getter";
+ AnimatedString get href native "SVGTRefElement_href_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -7024,8 +7128,10 @@
/// @domName SVGTSpanElement
-class SVGTSpanElement extends SVGTextPositioningElement {
- SVGTSpanElement.internal(): super.internal();
+class TSpanElement extends TextPositioningElement {
+
+ factory TSpanElement() => _SvgElementFactoryProvider.createSvgElement_tag("tspan");
+ TSpanElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -7036,20 +7142,20 @@
/// @domName SVGTests
-class SVGTests extends NativeFieldWrapperClass1 {
- SVGTests.internal();
+class Tests extends NativeFieldWrapperClass1 {
+ Tests.internal();
/** @domName SVGTests.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGTests_requiredExtensions_Getter";
+ StringList get requiredExtensions native "SVGTests_requiredExtensions_Getter";
/** @domName SVGTests.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGTests_requiredFeatures_Getter";
+ StringList get requiredFeatures native "SVGTests_requiredFeatures_Getter";
/** @domName SVGTests.systemLanguage */
- SVGStringList get systemLanguage native "SVGTests_systemLanguage_Getter";
+ StringList get systemLanguage native "SVGTests_systemLanguage_Getter";
/** @domName SVGTests.hasExtension */
@@ -7064,8 +7170,8 @@
/// @domName SVGTextContentElement
-class SVGTextContentElement extends SVGElement implements SVGLangSpace, SVGStylable, SVGTests, SVGExternalResourcesRequired {
- SVGTextContentElement.internal(): super.internal();
+class TextContentElement extends SvgElement implements Tests, Stylable, ExternalResourcesRequired, LangSpace {
+ TextContentElement.internal(): super.internal();
static const int LENGTHADJUST_SPACING = 1;
@@ -7075,15 +7181,15 @@
/** @domName SVGTextContentElement.lengthAdjust */
- SVGAnimatedEnumeration get lengthAdjust native "SVGTextContentElement_lengthAdjust_Getter";
+ AnimatedEnumeration get lengthAdjust native "SVGTextContentElement_lengthAdjust_Getter";
/** @domName SVGTextContentElement.textLength */
- SVGAnimatedLength get textLength native "SVGTextContentElement_textLength_Getter";
+ AnimatedLength get textLength native "SVGTextContentElement_textLength_Getter";
/** @domName SVGTextContentElement.getCharNumAtPosition */
- int getCharNumAtPosition(SVGPoint point) native "SVGTextContentElement_getCharNumAtPosition_Callback";
+ int getCharNumAtPosition(Point point) native "SVGTextContentElement_getCharNumAtPosition_Callback";
/** @domName SVGTextContentElement.getComputedTextLength */
@@ -7091,11 +7197,11 @@
/** @domName SVGTextContentElement.getEndPositionOfChar */
- SVGPoint getEndPositionOfChar(int offset) native "SVGTextContentElement_getEndPositionOfChar_Callback";
+ Point getEndPositionOfChar(int offset) native "SVGTextContentElement_getEndPositionOfChar_Callback";
/** @domName SVGTextContentElement.getExtentOfChar */
- SVGRect getExtentOfChar(int offset) native "SVGTextContentElement_getExtentOfChar_Callback";
+ Rect getExtentOfChar(int offset) native "SVGTextContentElement_getExtentOfChar_Callback";
/** @domName SVGTextContentElement.getNumberOfChars */
@@ -7107,7 +7213,7 @@
/** @domName SVGTextContentElement.getStartPositionOfChar */
- SVGPoint getStartPositionOfChar(int offset) native "SVGTextContentElement_getStartPositionOfChar_Callback";
+ Point getStartPositionOfChar(int offset) native "SVGTextContentElement_getStartPositionOfChar_Callback";
/** @domName SVGTextContentElement.getSubStringLength */
@@ -7119,7 +7225,7 @@
/** @domName SVGTextContentElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGTextContentElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGTextContentElement_externalResourcesRequired_Getter";
/** @domName SVGTextContentElement.xmllang */
@@ -7139,7 +7245,7 @@
/** @domName SVGTextContentElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGTextContentElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGTextContentElement_className_Getter";
/** @domName SVGTextContentElement.style */
@@ -7151,15 +7257,15 @@
/** @domName SVGTextContentElement.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGTextContentElement_requiredExtensions_Getter";
+ StringList get requiredExtensions native "SVGTextContentElement_requiredExtensions_Getter";
/** @domName SVGTextContentElement.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGTextContentElement_requiredFeatures_Getter";
+ StringList get requiredFeatures native "SVGTextContentElement_requiredFeatures_Getter";
/** @domName SVGTextContentElement.systemLanguage */
- SVGStringList get systemLanguage native "SVGTextContentElement_systemLanguage_Getter";
+ StringList get systemLanguage native "SVGTextContentElement_systemLanguage_Getter";
/** @domName SVGTextContentElement.hasExtension */
@@ -7174,36 +7280,38 @@
/// @domName SVGTextElement
-class SVGTextElement extends SVGTextPositioningElement implements SVGTransformable {
- SVGTextElement.internal(): super.internal();
+class TextElement extends TextPositioningElement implements Transformable {
+
+ factory TextElement() => _SvgElementFactoryProvider.createSvgElement_tag("text");
+ TextElement.internal(): super.internal();
/** @domName SVGTextElement.farthestViewportElement */
- SVGElement get farthestViewportElement native "SVGTextElement_farthestViewportElement_Getter";
+ SvgElement get farthestViewportElement native "SVGTextElement_farthestViewportElement_Getter";
/** @domName SVGTextElement.nearestViewportElement */
- SVGElement get nearestViewportElement native "SVGTextElement_nearestViewportElement_Getter";
+ SvgElement get nearestViewportElement native "SVGTextElement_nearestViewportElement_Getter";
/** @domName SVGTextElement.getBBox */
- SVGRect getBBox() native "SVGTextElement_getBBox_Callback";
+ Rect getBBox() native "SVGTextElement_getBBox_Callback";
/** @domName SVGTextElement.getCTM */
- SVGMatrix getCTM() native "SVGTextElement_getCTM_Callback";
+ Matrix getCTM() native "SVGTextElement_getCTM_Callback";
/** @domName SVGTextElement.getScreenCTM */
- SVGMatrix getScreenCTM() native "SVGTextElement_getScreenCTM_Callback";
+ Matrix getScreenCTM() native "SVGTextElement_getScreenCTM_Callback";
/** @domName SVGTextElement.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native "SVGTextElement_getTransformToElement_Callback";
+ Matrix getTransformToElement(SvgElement element) native "SVGTextElement_getTransformToElement_Callback";
/** @domName SVGTextElement.transform */
- SVGAnimatedTransformList get transform native "SVGTextElement_transform_Getter";
+ AnimatedTransformList get transform native "SVGTextElement_transform_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -7214,8 +7322,8 @@
/// @domName SVGTextPathElement
-class SVGTextPathElement extends SVGTextContentElement implements SVGURIReference {
- SVGTextPathElement.internal(): super.internal();
+class TextPathElement extends TextContentElement implements UriReference {
+ TextPathElement.internal(): super.internal();
static const int TEXTPATH_METHODTYPE_ALIGN = 1;
@@ -7231,19 +7339,19 @@
/** @domName SVGTextPathElement.method */
- SVGAnimatedEnumeration get method native "SVGTextPathElement_method_Getter";
+ AnimatedEnumeration get method native "SVGTextPathElement_method_Getter";
/** @domName SVGTextPathElement.spacing */
- SVGAnimatedEnumeration get spacing native "SVGTextPathElement_spacing_Getter";
+ AnimatedEnumeration get spacing native "SVGTextPathElement_spacing_Getter";
/** @domName SVGTextPathElement.startOffset */
- SVGAnimatedLength get startOffset native "SVGTextPathElement_startOffset_Getter";
+ AnimatedLength get startOffset native "SVGTextPathElement_startOffset_Getter";
/** @domName SVGTextPathElement.href */
- SVGAnimatedString get href native "SVGTextPathElement_href_Getter";
+ AnimatedString get href native "SVGTextPathElement_href_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -7254,28 +7362,28 @@
/// @domName SVGTextPositioningElement
-class SVGTextPositioningElement extends SVGTextContentElement {
- SVGTextPositioningElement.internal(): super.internal();
+class TextPositioningElement extends TextContentElement {
+ TextPositioningElement.internal(): super.internal();
/** @domName SVGTextPositioningElement.dx */
- SVGAnimatedLengthList get dx native "SVGTextPositioningElement_dx_Getter";
+ AnimatedLengthList get dx native "SVGTextPositioningElement_dx_Getter";
/** @domName SVGTextPositioningElement.dy */
- SVGAnimatedLengthList get dy native "SVGTextPositioningElement_dy_Getter";
+ AnimatedLengthList get dy native "SVGTextPositioningElement_dy_Getter";
/** @domName SVGTextPositioningElement.rotate */
- SVGAnimatedNumberList get rotate native "SVGTextPositioningElement_rotate_Getter";
+ AnimatedNumberList get rotate native "SVGTextPositioningElement_rotate_Getter";
/** @domName SVGTextPositioningElement.x */
- SVGAnimatedLengthList get x native "SVGTextPositioningElement_x_Getter";
+ AnimatedLengthList get x native "SVGTextPositioningElement_x_Getter";
/** @domName SVGTextPositioningElement.y */
- SVGAnimatedLengthList get y native "SVGTextPositioningElement_y_Getter";
+ AnimatedLengthList get y native "SVGTextPositioningElement_y_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -7286,8 +7394,10 @@
/// @domName SVGTitleElement
-class SVGTitleElement extends SVGElement implements SVGLangSpace, SVGStylable {
- SVGTitleElement.internal(): super.internal();
+class TitleElement extends SvgElement implements Stylable, LangSpace {
+
+ factory TitleElement() => _SvgElementFactoryProvider.createSvgElement_tag("title");
+ TitleElement.internal(): super.internal();
/** @domName SVGTitleElement.xmllang */
@@ -7307,7 +7417,7 @@
/** @domName SVGTitleElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGTitleElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGTitleElement_className_Getter";
/** @domName SVGTitleElement.style */
@@ -7326,8 +7436,8 @@
/// @domName SVGTransform
-class SVGTransform extends NativeFieldWrapperClass1 {
- SVGTransform.internal();
+class Transform extends NativeFieldWrapperClass1 {
+ Transform.internal();
static const int SVG_TRANSFORM_MATRIX = 1;
@@ -7349,7 +7459,7 @@
/** @domName SVGTransform.matrix */
- SVGMatrix get matrix native "SVGTransform_matrix_Getter";
+ Matrix get matrix native "SVGTransform_matrix_Getter";
/** @domName SVGTransform.type */
@@ -7357,7 +7467,7 @@
/** @domName SVGTransform.setMatrix */
- void setMatrix(SVGMatrix matrix) native "SVGTransform_setMatrix_Callback";
+ void setMatrix(Matrix matrix) native "SVGTransform_setMatrix_Callback";
/** @domName SVGTransform.setRotate */
@@ -7388,80 +7498,82 @@
/// @domName SVGTransformList
-class SVGTransformList extends NativeFieldWrapperClass1 implements List<SVGTransform> {
- SVGTransformList.internal();
+class TransformList extends NativeFieldWrapperClass1 implements List<Transform> {
+ TransformList.internal();
/** @domName SVGTransformList.numberOfItems */
int get numberOfItems native "SVGTransformList_numberOfItems_Getter";
- SVGTransform operator[](int index) native "SVGTransformList_item_Callback";
+ Transform operator[](int index) native "SVGTransformList_item_Callback";
- void operator[]=(int index, SVGTransform value) {
+ void operator[]=(int index, Transform value) {
throw new UnsupportedError("Cannot assign element of immutable List.");
}
- // -- start List<SVGTransform> mixins.
- // SVGTransform is the element type.
+ // -- start List<Transform> mixins.
+ // Transform is the element type.
- // From Iterable<SVGTransform>:
+ // From Iterable<Transform>:
- Iterator<SVGTransform> iterator() {
+ Iterator<Transform> iterator() {
// Note: NodeLists are not fixed size. And most probably length shouldn't
// be cached in both iterator _and_ forEach method. For now caching it
// for consistency.
- return new FixedSizeListIterator<SVGTransform>(this);
+ return new FixedSizeListIterator<Transform>(this);
}
- // From Collection<SVGTransform>:
+ // From Collection<Transform>:
- void add(SVGTransform value) {
+ void add(Transform value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addLast(SVGTransform value) {
+ void addLast(Transform value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addAll(Collection<SVGTransform> collection) {
+ void addAll(Collection<Transform> collection) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- bool contains(SVGTransform element) => _Collections.contains(this, element);
+ bool contains(Transform element) => _Collections.contains(this, element);
- void forEach(void f(SVGTransform element)) => _Collections.forEach(this, f);
+ void forEach(void f(Transform element)) => _Collections.forEach(this, f);
- Collection map(f(SVGTransform element)) => _Collections.map(this, [], f);
+ Collection map(f(Transform element)) => _Collections.map(this, [], f);
- Collection<SVGTransform> filter(bool f(SVGTransform element)) =>
- _Collections.filter(this, <SVGTransform>[], f);
+ Collection<Transform> filter(bool f(Transform element)) =>
+ _Collections.filter(this, <Transform>[], f);
- bool every(bool f(SVGTransform element)) => _Collections.every(this, f);
+ bool every(bool f(Transform element)) => _Collections.every(this, f);
- bool some(bool f(SVGTransform element)) => _Collections.some(this, f);
+ bool some(bool f(Transform element)) => _Collections.some(this, f);
bool get isEmpty => this.length == 0;
- // From List<SVGTransform>:
+ // From List<Transform>:
- void sort([Comparator<SVGTransform> compare = Comparable.compare]) {
+ void sort([Comparator<Transform> compare = Comparable.compare]) {
throw new UnsupportedError("Cannot sort immutable List.");
}
- int indexOf(SVGTransform element, [int start = 0]) =>
+ int indexOf(Transform element, [int start = 0]) =>
_Lists.indexOf(this, element, start, this.length);
- int lastIndexOf(SVGTransform element, [int start]) {
+ int lastIndexOf(Transform element, [int start]) {
if (start == null) start = length - 1;
return _Lists.lastIndexOf(this, element, start);
}
- SVGTransform get last => this[length - 1];
+ Transform get first => this[0];
- SVGTransform removeLast() {
+ Transform get last => this[length - 1];
+
+ Transform removeLast() {
throw new UnsupportedError("Cannot removeLast on immutable List.");
}
- void setRange(int start, int rangeLength, List<SVGTransform> from, [int startFrom]) {
+ void setRange(int start, int rangeLength, List<Transform> from, [int startFrom]) {
throw new UnsupportedError("Cannot setRange on immutable List.");
}
@@ -7469,18 +7581,18 @@
throw new UnsupportedError("Cannot removeRange on immutable List.");
}
- void insertRange(int start, int rangeLength, [SVGTransform initialValue]) {
+ void insertRange(int start, int rangeLength, [Transform initialValue]) {
throw new UnsupportedError("Cannot insertRange on immutable List.");
}
- List<SVGTransform> getRange(int start, int rangeLength) =>
- _Lists.getRange(this, start, rangeLength, <SVGTransform>[]);
+ List<Transform> getRange(int start, int rangeLength) =>
+ _Lists.getRange(this, start, rangeLength, <Transform>[]);
- // -- end List<SVGTransform> mixins.
+ // -- end List<Transform> mixins.
/** @domName SVGTransformList.appendItem */
- SVGTransform appendItem(SVGTransform item) native "SVGTransformList_appendItem_Callback";
+ Transform appendItem(Transform item) native "SVGTransformList_appendItem_Callback";
/** @domName SVGTransformList.clear */
@@ -7488,31 +7600,31 @@
/** @domName SVGTransformList.consolidate */
- SVGTransform consolidate() native "SVGTransformList_consolidate_Callback";
+ Transform consolidate() native "SVGTransformList_consolidate_Callback";
/** @domName SVGTransformList.createSVGTransformFromMatrix */
- SVGTransform createSVGTransformFromMatrix(SVGMatrix matrix) native "SVGTransformList_createSVGTransformFromMatrix_Callback";
+ Transform createSVGTransformFromMatrix(Matrix matrix) native "SVGTransformList_createSVGTransformFromMatrix_Callback";
/** @domName SVGTransformList.getItem */
- SVGTransform getItem(int index) native "SVGTransformList_getItem_Callback";
+ Transform getItem(int index) native "SVGTransformList_getItem_Callback";
/** @domName SVGTransformList.initialize */
- SVGTransform initialize(SVGTransform item) native "SVGTransformList_initialize_Callback";
+ Transform initialize(Transform item) native "SVGTransformList_initialize_Callback";
/** @domName SVGTransformList.insertItemBefore */
- SVGTransform insertItemBefore(SVGTransform item, int index) native "SVGTransformList_insertItemBefore_Callback";
+ Transform insertItemBefore(Transform item, int index) native "SVGTransformList_insertItemBefore_Callback";
/** @domName SVGTransformList.removeItem */
- SVGTransform removeItem(int index) native "SVGTransformList_removeItem_Callback";
+ Transform removeItem(int index) native "SVGTransformList_removeItem_Callback";
/** @domName SVGTransformList.replaceItem */
- SVGTransform replaceItem(SVGTransform item, int index) native "SVGTransformList_replaceItem_Callback";
+ Transform replaceItem(Transform item, int index) native "SVGTransformList_replaceItem_Callback";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -7523,52 +7635,36 @@
/// @domName SVGTransformable
-class SVGTransformable extends NativeFieldWrapperClass1 implements SVGLocatable {
- SVGTransformable.internal();
+class Transformable extends NativeFieldWrapperClass1 implements Locatable {
+ Transformable.internal();
/** @domName SVGTransformable.transform */
- SVGAnimatedTransformList get transform native "SVGTransformable_transform_Getter";
+ AnimatedTransformList get transform native "SVGTransformable_transform_Getter";
/** @domName SVGTransformable.farthestViewportElement */
- SVGElement get farthestViewportElement native "SVGTransformable_farthestViewportElement_Getter";
+ SvgElement get farthestViewportElement native "SVGTransformable_farthestViewportElement_Getter";
/** @domName SVGTransformable.nearestViewportElement */
- SVGElement get nearestViewportElement native "SVGTransformable_nearestViewportElement_Getter";
+ SvgElement get nearestViewportElement native "SVGTransformable_nearestViewportElement_Getter";
/** @domName SVGTransformable.getBBox */
- SVGRect getBBox() native "SVGTransformable_getBBox_Callback";
+ Rect getBBox() native "SVGTransformable_getBBox_Callback";
/** @domName SVGTransformable.getCTM */
- SVGMatrix getCTM() native "SVGTransformable_getCTM_Callback";
+ Matrix getCTM() native "SVGTransformable_getCTM_Callback";
/** @domName SVGTransformable.getScreenCTM */
- SVGMatrix getScreenCTM() native "SVGTransformable_getScreenCTM_Callback";
+ Matrix getScreenCTM() native "SVGTransformable_getScreenCTM_Callback";
/** @domName SVGTransformable.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native "SVGTransformable_getTransformToElement_Callback";
-
-}
-// Copyright (c) 2012, 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.
-
-// WARNING: Do not edit - generated code.
-
-
-/// @domName SVGURIReference
-class SVGURIReference extends NativeFieldWrapperClass1 {
- SVGURIReference.internal();
-
-
- /** @domName SVGURIReference.href */
- SVGAnimatedString get href native "SVGURIReference_href_Getter";
+ Matrix getTransformToElement(SvgElement element) native "SVGTransformable_getTransformToElement_Callback";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -7579,8 +7675,8 @@
/// @domName SVGUnitTypes
-class SVGUnitTypes extends NativeFieldWrapperClass1 {
- SVGUnitTypes.internal();
+class UnitTypes extends NativeFieldWrapperClass1 {
+ UnitTypes.internal();
static const int SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2;
@@ -7596,37 +7692,55 @@
// WARNING: Do not edit - generated code.
+/// @domName SVGURIReference
+class UriReference extends NativeFieldWrapperClass1 {
+ UriReference.internal();
+
+
+ /** @domName SVGURIReference.href */
+ AnimatedString get href native "SVGURIReference_href_Getter";
+
+}
+// Copyright (c) 2012, 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.
+
+// WARNING: Do not edit - generated code.
+
+
/// @domName SVGUseElement
-class SVGUseElement extends SVGElement implements SVGLangSpace, SVGTests, SVGStylable, SVGURIReference, SVGExternalResourcesRequired, SVGTransformable {
- SVGUseElement.internal(): super.internal();
+class UseElement extends SvgElement implements Transformable, Tests, UriReference, Stylable, ExternalResourcesRequired, LangSpace {
+
+ factory UseElement() => _SvgElementFactoryProvider.createSvgElement_tag("use");
+ UseElement.internal(): super.internal();
/** @domName SVGUseElement.animatedInstanceRoot */
- SVGElementInstance get animatedInstanceRoot native "SVGUseElement_animatedInstanceRoot_Getter";
+ ElementInstance get animatedInstanceRoot native "SVGUseElement_animatedInstanceRoot_Getter";
/** @domName SVGUseElement.height */
- SVGAnimatedLength get height native "SVGUseElement_height_Getter";
+ AnimatedLength get height native "SVGUseElement_height_Getter";
/** @domName SVGUseElement.instanceRoot */
- SVGElementInstance get instanceRoot native "SVGUseElement_instanceRoot_Getter";
+ ElementInstance get instanceRoot native "SVGUseElement_instanceRoot_Getter";
/** @domName SVGUseElement.width */
- SVGAnimatedLength get width native "SVGUseElement_width_Getter";
+ AnimatedLength get width native "SVGUseElement_width_Getter";
/** @domName SVGUseElement.x */
- SVGAnimatedLength get x native "SVGUseElement_x_Getter";
+ AnimatedLength get x native "SVGUseElement_x_Getter";
/** @domName SVGUseElement.y */
- SVGAnimatedLength get y native "SVGUseElement_y_Getter";
+ AnimatedLength get y native "SVGUseElement_y_Getter";
/** @domName SVGUseElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGUseElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGUseElement_externalResourcesRequired_Getter";
/** @domName SVGUseElement.xmllang */
@@ -7646,31 +7760,31 @@
/** @domName SVGUseElement.farthestViewportElement */
- SVGElement get farthestViewportElement native "SVGUseElement_farthestViewportElement_Getter";
+ SvgElement get farthestViewportElement native "SVGUseElement_farthestViewportElement_Getter";
/** @domName SVGUseElement.nearestViewportElement */
- SVGElement get nearestViewportElement native "SVGUseElement_nearestViewportElement_Getter";
+ SvgElement get nearestViewportElement native "SVGUseElement_nearestViewportElement_Getter";
/** @domName SVGUseElement.getBBox */
- SVGRect getBBox() native "SVGUseElement_getBBox_Callback";
+ Rect getBBox() native "SVGUseElement_getBBox_Callback";
/** @domName SVGUseElement.getCTM */
- SVGMatrix getCTM() native "SVGUseElement_getCTM_Callback";
+ Matrix getCTM() native "SVGUseElement_getCTM_Callback";
/** @domName SVGUseElement.getScreenCTM */
- SVGMatrix getScreenCTM() native "SVGUseElement_getScreenCTM_Callback";
+ Matrix getScreenCTM() native "SVGUseElement_getScreenCTM_Callback";
/** @domName SVGUseElement.getTransformToElement */
- SVGMatrix getTransformToElement(SVGElement element) native "SVGUseElement_getTransformToElement_Callback";
+ Matrix getTransformToElement(SvgElement element) native "SVGUseElement_getTransformToElement_Callback";
/** @domName SVGUseElement.className */
- SVGAnimatedString get $dom_svgClassName native "SVGUseElement_className_Getter";
+ AnimatedString get $dom_svgClassName native "SVGUseElement_className_Getter";
/** @domName SVGUseElement.style */
@@ -7682,15 +7796,15 @@
/** @domName SVGUseElement.requiredExtensions */
- SVGStringList get requiredExtensions native "SVGUseElement_requiredExtensions_Getter";
+ StringList get requiredExtensions native "SVGUseElement_requiredExtensions_Getter";
/** @domName SVGUseElement.requiredFeatures */
- SVGStringList get requiredFeatures native "SVGUseElement_requiredFeatures_Getter";
+ StringList get requiredFeatures native "SVGUseElement_requiredFeatures_Getter";
/** @domName SVGUseElement.systemLanguage */
- SVGStringList get systemLanguage native "SVGUseElement_systemLanguage_Getter";
+ StringList get systemLanguage native "SVGUseElement_systemLanguage_Getter";
/** @domName SVGUseElement.hasExtension */
@@ -7698,11 +7812,11 @@
/** @domName SVGUseElement.transform */
- SVGAnimatedTransformList get transform native "SVGUseElement_transform_Getter";
+ AnimatedTransformList get transform native "SVGUseElement_transform_Getter";
/** @domName SVGUseElement.href */
- SVGAnimatedString get href native "SVGUseElement_href_Getter";
+ AnimatedString get href native "SVGUseElement_href_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -7713,8 +7827,10 @@
/// @domName SVGVKernElement
-class SVGVKernElement extends SVGElement {
- SVGVKernElement.internal(): super.internal();
+class VKernElement extends SvgElement {
+
+ factory VKernElement() => _SvgElementFactoryProvider.createSvgElement_tag("vkern");
+ VKernElement.internal(): super.internal();
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -7725,24 +7841,26 @@
/// @domName SVGViewElement
-class SVGViewElement extends SVGElement implements SVGFitToViewBox, SVGZoomAndPan, SVGExternalResourcesRequired {
- SVGViewElement.internal(): super.internal();
+class ViewElement extends SvgElement implements FitToViewBox, ExternalResourcesRequired, ZoomAndPan {
+
+ factory ViewElement() => _SvgElementFactoryProvider.createSvgElement_tag("view");
+ ViewElement.internal(): super.internal();
/** @domName SVGViewElement.viewTarget */
- SVGStringList get viewTarget native "SVGViewElement_viewTarget_Getter";
+ StringList get viewTarget native "SVGViewElement_viewTarget_Getter";
/** @domName SVGViewElement.externalResourcesRequired */
- SVGAnimatedBoolean get externalResourcesRequired native "SVGViewElement_externalResourcesRequired_Getter";
+ AnimatedBoolean get externalResourcesRequired native "SVGViewElement_externalResourcesRequired_Getter";
/** @domName SVGViewElement.preserveAspectRatio */
- SVGAnimatedPreserveAspectRatio get preserveAspectRatio native "SVGViewElement_preserveAspectRatio_Getter";
+ AnimatedPreserveAspectRatio get preserveAspectRatio native "SVGViewElement_preserveAspectRatio_Getter";
/** @domName SVGViewElement.viewBox */
- SVGAnimatedRect get viewBox native "SVGViewElement_viewBox_Getter";
+ AnimatedRect get viewBox native "SVGViewElement_viewBox_Getter";
/** @domName SVGViewElement.zoomAndPan */
@@ -7761,12 +7879,12 @@
/// @domName SVGViewSpec
-class SVGViewSpec extends NativeFieldWrapperClass1 {
- SVGViewSpec.internal();
+class ViewSpec extends NativeFieldWrapperClass1 {
+ ViewSpec.internal();
/** @domName SVGViewSpec.preserveAspectRatio */
- SVGAnimatedPreserveAspectRatio get preserveAspectRatio native "SVGViewSpec_preserveAspectRatio_Getter";
+ AnimatedPreserveAspectRatio get preserveAspectRatio native "SVGViewSpec_preserveAspectRatio_Getter";
/** @domName SVGViewSpec.preserveAspectRatioString */
@@ -7774,7 +7892,7 @@
/** @domName SVGViewSpec.transform */
- SVGTransformList get transform native "SVGViewSpec_transform_Getter";
+ TransformList get transform native "SVGViewSpec_transform_Getter";
/** @domName SVGViewSpec.transformString */
@@ -7782,7 +7900,7 @@
/** @domName SVGViewSpec.viewBox */
- SVGAnimatedRect get viewBox native "SVGViewSpec_viewBox_Getter";
+ AnimatedRect get viewBox native "SVGViewSpec_viewBox_Getter";
/** @domName SVGViewSpec.viewBoxString */
@@ -7790,7 +7908,7 @@
/** @domName SVGViewSpec.viewTarget */
- SVGElement get viewTarget native "SVGViewSpec_viewTarget_Getter";
+ SvgElement get viewTarget native "SVGViewSpec_viewTarget_Getter";
/** @domName SVGViewSpec.viewTargetString */
@@ -7813,8 +7931,8 @@
/// @domName SVGZoomAndPan
-class SVGZoomAndPan extends NativeFieldWrapperClass1 {
- SVGZoomAndPan.internal();
+class ZoomAndPan extends NativeFieldWrapperClass1 {
+ ZoomAndPan.internal();
static const int SVG_ZOOMANDPAN_DISABLE = 1;
@@ -7839,8 +7957,8 @@
/// @domName SVGZoomEvent
-class SVGZoomEvent extends UIEvent {
- SVGZoomEvent.internal(): super.internal();
+class ZoomEvent extends UIEvent {
+ ZoomEvent.internal(): super.internal();
/** @domName SVGZoomEvent.newScale */
@@ -7848,7 +7966,7 @@
/** @domName SVGZoomEvent.newTranslate */
- SVGPoint get newTranslate native "SVGZoomEvent_newTranslate_Getter";
+ Point get newTranslate native "SVGZoomEvent_newTranslate_Getter";
/** @domName SVGZoomEvent.previousScale */
@@ -7856,11 +7974,11 @@
/** @domName SVGZoomEvent.previousTranslate */
- SVGPoint get previousTranslate native "SVGZoomEvent_previousTranslate_Getter";
+ Point get previousTranslate native "SVGZoomEvent_previousTranslate_Getter";
/** @domName SVGZoomEvent.zoomRectScreen */
- SVGRect get zoomRectScreen native "SVGZoomEvent_zoomRectScreen_Getter";
+ Rect get zoomRectScreen native "SVGZoomEvent_zoomRectScreen_Getter";
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -7871,80 +7989,82 @@
/// @domName SVGElementInstanceList
-class _SVGElementInstanceList extends NativeFieldWrapperClass1 implements List<SVGElementInstance> {
- _SVGElementInstanceList.internal();
+class _ElementInstanceList extends NativeFieldWrapperClass1 implements List<ElementInstance> {
+ _ElementInstanceList.internal();
/** @domName SVGElementInstanceList.length */
int get length native "SVGElementInstanceList_length_Getter";
- SVGElementInstance operator[](int index) native "SVGElementInstanceList_item_Callback";
+ ElementInstance operator[](int index) native "SVGElementInstanceList_item_Callback";
- void operator[]=(int index, SVGElementInstance value) {
+ void operator[]=(int index, ElementInstance value) {
throw new UnsupportedError("Cannot assign element of immutable List.");
}
- // -- start List<SVGElementInstance> mixins.
- // SVGElementInstance is the element type.
+ // -- start List<ElementInstance> mixins.
+ // ElementInstance is the element type.
- // From Iterable<SVGElementInstance>:
+ // From Iterable<ElementInstance>:
- Iterator<SVGElementInstance> iterator() {
+ Iterator<ElementInstance> iterator() {
// Note: NodeLists are not fixed size. And most probably length shouldn't
// be cached in both iterator _and_ forEach method. For now caching it
// for consistency.
- return new FixedSizeListIterator<SVGElementInstance>(this);
+ return new FixedSizeListIterator<ElementInstance>(this);
}
- // From Collection<SVGElementInstance>:
+ // From Collection<ElementInstance>:
- void add(SVGElementInstance value) {
+ void add(ElementInstance value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addLast(SVGElementInstance value) {
+ void addLast(ElementInstance value) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- void addAll(Collection<SVGElementInstance> collection) {
+ void addAll(Collection<ElementInstance> collection) {
throw new UnsupportedError("Cannot add to immutable List.");
}
- bool contains(SVGElementInstance element) => _Collections.contains(this, element);
+ bool contains(ElementInstance element) => _Collections.contains(this, element);
- void forEach(void f(SVGElementInstance element)) => _Collections.forEach(this, f);
+ void forEach(void f(ElementInstance element)) => _Collections.forEach(this, f);
- Collection map(f(SVGElementInstance element)) => _Collections.map(this, [], f);
+ Collection map(f(ElementInstance element)) => _Collections.map(this, [], f);
- Collection<SVGElementInstance> filter(bool f(SVGElementInstance element)) =>
- _Collections.filter(this, <SVGElementInstance>[], f);
+ Collection<ElementInstance> filter(bool f(ElementInstance element)) =>
+ _Collections.filter(this, <ElementInstance>[], f);
- bool every(bool f(SVGElementInstance element)) => _Collections.every(this, f);
+ bool every(bool f(ElementInstance element)) => _Collections.every(this, f);
- bool some(bool f(SVGElementInstance element)) => _Collections.some(this, f);
+ bool some(bool f(ElementInstance element)) => _Collections.some(this, f);
bool get isEmpty => this.length == 0;
- // From List<SVGElementInstance>:
+ // From List<ElementInstance>:
- void sort([Comparator<SVGElementInstance> compare = Comparable.compare]) {
+ void sort([Comparator<ElementInstance> compare = Comparable.compare]) {
throw new UnsupportedError("Cannot sort immutable List.");
}
- int indexOf(SVGElementInstance element, [int start = 0]) =>
+ int indexOf(ElementInstance element, [int start = 0]) =>
_Lists.indexOf(this, element, start, this.length);
- int lastIndexOf(SVGElementInstance element, [int start]) {
+ int lastIndexOf(ElementInstance element, [int start]) {
if (start == null) start = length - 1;
return _Lists.lastIndexOf(this, element, start);
}
- SVGElementInstance get last => this[length - 1];
+ ElementInstance get first => this[0];
- SVGElementInstance removeLast() {
+ ElementInstance get last => this[length - 1];
+
+ ElementInstance removeLast() {
throw new UnsupportedError("Cannot removeLast on immutable List.");
}
- void setRange(int start, int rangeLength, List<SVGElementInstance> from, [int startFrom]) {
+ void setRange(int start, int rangeLength, List<ElementInstance> from, [int startFrom]) {
throw new UnsupportedError("Cannot setRange on immutable List.");
}
@@ -7952,17 +8072,17 @@
throw new UnsupportedError("Cannot removeRange on immutable List.");
}
- void insertRange(int start, int rangeLength, [SVGElementInstance initialValue]) {
+ void insertRange(int start, int rangeLength, [ElementInstance initialValue]) {
throw new UnsupportedError("Cannot insertRange on immutable List.");
}
- List<SVGElementInstance> getRange(int start, int rangeLength) =>
- _Lists.getRange(this, start, rangeLength, <SVGElementInstance>[]);
+ List<ElementInstance> getRange(int start, int rangeLength) =>
+ _Lists.getRange(this, start, rangeLength, <ElementInstance>[]);
- // -- end List<SVGElementInstance> mixins.
+ // -- end List<ElementInstance> mixins.
/** @domName SVGElementInstanceList.item */
- SVGElementInstance item(int index) native "SVGElementInstanceList_item_Callback";
+ ElementInstance item(int index) native "SVGElementInstanceList_item_Callback";
}
diff --git a/sdk/lib/utf/utf16.dart b/sdk/lib/utf/utf16.dart
index d1bd012..e37c603 100644
--- a/sdk/lib/utf/utf16.dart
+++ b/sdk/lib/utf/utf16.dart
@@ -62,15 +62,8 @@
Utf16BytesToCodeUnitsDecoder decoder = new Utf16BytesToCodeUnitsDecoder(bytes,
offset, length, replacementCodepoint);
List<int> codeunits = decoder.decodeRest();
- // TODO is16BitCodeUnit() is used to work around a bug with dart2js
- // (http://code.google.com/p/dart/issues/detail?id=1357). Consider
- // removing after this issue is resolved.
- if (_is16BitCodeUnit()) {
- return new String.fromCharCodes(codeunits);
- } else {
- return new String.fromCharCodes(
- _utf16CodeUnitsToCodepoints(codeunits, 0, null, replacementCodepoint));
- }
+ return new String.fromCharCodes(
+ _utf16CodeUnitsToCodepoints(codeunits, 0, null, replacementCodepoint));
}
/**
@@ -85,15 +78,8 @@
int replacementCodepoint = UNICODE_REPLACEMENT_CHARACTER_CODEPOINT]) {
List<int> codeunits = (new Utf16beBytesToCodeUnitsDecoder(bytes, offset,
length, stripBom, replacementCodepoint)).decodeRest();
- // TODO is16BitCodeUnit() is used to work around a bug with dart2js
- // (http://code.google.com/p/dart/issues/detail?id=1357). Consider
- // removing after this issue is resolved.
- if (_is16BitCodeUnit()) {
- return new String.fromCharCodes(codeunits);
- } else {
- return new String.fromCharCodes(
- _utf16CodeUnitsToCodepoints(codeunits, 0, null, replacementCodepoint));
- }
+ return new String.fromCharCodes(
+ _utf16CodeUnitsToCodepoints(codeunits, 0, null, replacementCodepoint));
}
/**
@@ -108,15 +94,8 @@
int replacementCodepoint = UNICODE_REPLACEMENT_CHARACTER_CODEPOINT]) {
List<int> codeunits = (new Utf16leBytesToCodeUnitsDecoder(bytes, offset,
length, stripBom, replacementCodepoint)).decodeRest();
- // TODO is16BitCodeUnit() is used to work around a bug with dart2js
- // (http://code.google.com/p/dart/issues/detail?id=1357). Consider
- // removing after this issue is resolved.
- if (_is16BitCodeUnit()) {
- return new String.fromCharCodes(codeunits);
- } else {
- return new String.fromCharCodes(
- _utf16CodeUnitsToCodepoints(codeunits, 0, null, replacementCodepoint));
- }
+ return new String.fromCharCodes(
+ _utf16CodeUnitsToCodepoints(codeunits, 0, null, replacementCodepoint));
}
/**
@@ -198,14 +177,7 @@
}
List<int> _stringToUtf16CodeUnits(String str) {
- // TODO is16BitCodeUnit() is used to work around a bug with dart2js
- // (http://code.google.com/p/dart/issues/detail?id=1357). Consider
- // removing after this issue is resolved.
- if (_is16BitCodeUnit()) {
- return str.charCodes;
- } else {
- return _codepointsToUtf16CodeUnits(str.charCodes);
- }
+ return _codepointsToUtf16CodeUnits(str.charCodes);
}
typedef _ListRangeIterator _CodeUnitsProvider();
@@ -304,7 +276,7 @@
utf16EncodedBytesIterator.skip(2 * count);
}
- abstract int decode();
+ int decode();
}
/**
diff --git a/sdk/lib/utf/utf32.dart b/sdk/lib/utf/utf32.dart
index 9cbfd7a..8472b52 100644
--- a/sdk/lib/utf/utf32.dart
+++ b/sdk/lib/utf/utf32.dart
@@ -261,7 +261,7 @@
utf32EncodedBytesIterator.skip(4 * count);
}
- abstract int decode();
+ int decode();
}
/**
diff --git a/sdk/lib/utf/utf_core.dart b/sdk/lib/utf/utf_core.dart
index a1cedce..8b1751d 100644
--- a/sdk/lib/utf/utf_core.dart
+++ b/sdk/lib/utf/utf_core.dart
@@ -8,8 +8,7 @@
*/
List<int> stringToCodepoints(String str) {
// Note: str.charCodes gives us 16-bit code units on all Dart implementations.
- // So we need to convert. The same is not true of "new String.fromCharCodes",
- // which accepts code points on the VM but not dart2js (dartbug.com/1357).
+ // So we need to convert.
return _utf16CodeUnitsToCodepoints(str.charCodes);
}
@@ -17,31 +16,7 @@
* Generate a string from the provided Unicode codepoints.
*/
String codepointsToString(List<int> codepoints) {
- // TODO _is16BitCodeUnit() is used to work around a bug with dart2js
- // (http://code.google.com/p/dart/issues/detail?id=1357). Consider
- // removing after this issue is resolved.
- if (_is16BitCodeUnit()) {
- return new String.fromCharCodes(
- _codepointsToUtf16CodeUnits(codepoints));
- } else {
- return new String.fromCharCodes(codepoints);
- }
-}
-
-/*
- * Test for presence of bug related to the use of UTF-16 code units for
- * Dart compiled to JS.
- */
-bool _test16BitCodeUnit = null;
-// TODO _is16BitCodeUnit() is used to work around a bug with dart2js
-// (http://code.google.com/p/dart/issues/detail?id=1357). Consider
-// removing after this issue is resolved.
-bool _is16BitCodeUnit() {
- if (_test16BitCodeUnit == null) {
- _test16BitCodeUnit = (new String.fromCharCodes([0x1D11E])) ==
- (new String.fromCharCodes([0xD11E]));
- }
- return _test16BitCodeUnit;
+ return new String.fromCharCodes(codepoints);
}
/**
diff --git a/tests/co19/co19-compiler.status b/tests/co19/co19-compiler.status
index b88fcc3..ea0e63a 100644
--- a/tests/co19/co19-compiler.status
+++ b/tests/co19/co19-compiler.status
@@ -21,7 +21,10 @@
Language/05_Variables/1_Evaluation_of_Implicit_Variable_Getters_A01_t05: Fail # TODO(analyzer-team): Please triage this failure.
Language/06_Functions/1_Function_Declaration_A02_t03: Fail # TODO(analyzer-team): Please triage this failure.
Language/06_Functions/1_Function_Declaration_A03_t03: Fail # TODO(analyzer-team): Please triage this failure.
+Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A01_t10: Fail # TODO(analyzer-team): Please triage this failure.
Language/06_Functions/2_Formal_Parameters_A02_t01: Fail # TODO(analyzer-team): Please triage this failure.
+Language/07_Classes/6_Constructors/2_Factories_A02_t01: Fail # TODO(analyzer-team): Please triage this failure.
+Language/07_Classes/6_Constructors/2_Factories_A02_t02: Fail # TODO(analyzer-team): Please triage this failure.
Language/07_Classes/6_Constructors/2_Factories_A05_t02: Fail # TODO(analyzer-team): Please triage this failure.
Language/07_Classes/6_Constructors/2_Factories_A05_t04: Fail # TODO(analyzer-team): Please triage this failure.
Language/08_Interfaces/5_Superinterfaces_A01_t02: Fail # TODO(analyzer-team): Please triage this failure.
@@ -30,49 +33,14 @@
Language/11_Expressions/01_Constants_A03_t01: Fail # TODO(analyzer-team): Please triage this failure.
Language/11_Expressions/01_Constants_A05_t01: Fail # TODO(analyzer-team): Please triage this failure.
Language/11_Expressions/01_Constants_A14_t01: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/05_Strings/1_String_Interpolation_A01_t06: Fail # TODO(analyzer-team): Please triage this failure.
+Language/11_Expressions/01_Constants_A20_t03: Fail # TODO(analyzer-team): Please triage this failure.
Language/11_Expressions/05_Strings/1_String_Interpolation_A01_t07: Fail # TODO(analyzer-team): Please triage this failure.
Language/11_Expressions/05_Strings/1_String_Interpolation_A01_t13: Fail # TODO(analyzer-team): Please triage this failure.
Language/11_Expressions/08_Throw_A05_t01: Fail # TODO(analyzer-team): Please triage this failure.
Language/11_Expressions/11_Instance_Creation/1_New_A02_t07: Fail # TODO(analyzer-team): Please triage this failure.
Language/11_Expressions/11_Instance_Creation/1_New_A06_t06: Fail # TODO(analyzer-team): Please triage this failure.
Language/11_Expressions/11_Instance_Creation/2_Const_A10_t01: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/11_Instance_Creation_A02_t01: Fail # TODO(analyzer-team): Please triage this failure.
Language/11_Expressions/18_Assignment_A05_t05: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/19_Conditional_A01_t14: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/19_Conditional_A01_t15: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/20_Logical_Boolean_Expressions_A01_t14: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/21_Bitwise_Expressions_A01_t16: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/21_Bitwise_Expressions_A01_t17: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/22_Equality_A01_t23: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/22_Equality_A01_t24: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/23_Relational_Expressions_A01_t22: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/23_Relational_Expressions_A01_t23: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/24_Shift_A01_t13: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/24_Shift_A01_t14: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/25_Additive_Expressions_A01_t11: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/25_Additive_Expressions_A01_t12: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/25_Additive_Expressions_A01_t13: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/25_Additive_Expressions_A01_t14: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/26_Multiplicative_Expressions_A01_t14: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/26_Multiplicative_Expressions_A01_t15: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/26_Multiplicative_Expressions_A01_t16: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/26_Multiplicative_Expressions_A01_t17: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/27_Unary_Expressions_A01_t04: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/27_Unary_Expressions_A01_t05: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/27_Unary_Expressions_A01_t17: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/27_Unary_Expressions_A01_t18: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/27_Unary_Expressions_A01_t19: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/27_Unary_Expressions_A01_t20: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/27_Unary_Expressions_A01_t21: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/27_Unary_Expressions_A01_t22: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/28_Postfix_Expressions_A01_t02: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/28_Postfix_Expressions_A01_t05: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/29_Assignable_Expressions_A01_t08: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/29_Assignable_Expressions_A01_t09: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/30_Identifier_Reference_A05_t04: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/30_Identifier_Reference_A06_t02: Fail # TODO(analyzer-team): Please triage this failure.
-Language/11_Expressions/30_Identifier_Reference_A07_t01: Fail # TODO(analyzer-team): Please triage this failure.
Language/11_Expressions/30_Identifier_Reference_A13_t01: Fail # TODO(analyzer-team): Please triage this failure.
Language/11_Expressions/31_Type_Test_A01_t02: Fail # TODO(analyzer-team): Please triage this failure.
Language/11_Expressions/31_Type_Test_A01_t04: Fail # TODO(analyzer-team): Please triage this failure.
@@ -90,38 +58,52 @@
Language/12_Statements/06_For_A01_t11: Fail # TODO(analyzer-team): Please triage this failure.
Language/12_Statements/09_Switch_A02_t03: Fail # TODO(analyzer-team): Please triage this failure.
Language/12_Statements/09_Switch_A06_t02: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A01_t51: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A01_t52: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A02_t03: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A02_t05: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A02_t12: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A02_t13: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A02_t15: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A02_t18: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A02_t19: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A02_t24: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A03_t02: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A03_t06: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A03_t22: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A03_t26: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A03_t42: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A03_t46: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A03_t62: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A03_t66: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A05_t02: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/2_Exports_A01_t02: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/2_Exports_A01_t03: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/2_Exports_A01_t17: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/2_Exports_A03_t01: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/2_Exports_A03_t02: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/2_Exports_A04_t01: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/2_Exports_A04_t02: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/2_Exports_A04_t04: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/2_Exports_A04_t05: Fail # TODO(analyzer-team): Please triage this failure.
+Language/13_Libraries_and_Scripts/1_Imports_A02_t29: Fail # TODO(analyzer-team): Please triage this failure.
+Language/13_Libraries_and_Scripts/1_Imports_A05_t01: Fail # TODO(analyzer-team): Please triage this failure.
+Language/13_Libraries_and_Scripts/2_Exports_A05_t01: Fail # TODO(analyzer-team): Please triage this failure.
+Language/13_Libraries_and_Scripts/4_Scripts_A01_t21: Fail # TODO(analyzer-team): Please triage this failure.
+Language/13_Libraries_and_Scripts/4_Scripts_A01_t22: Fail # TODO(analyzer-team): Please triage this failure.
+Language/13_Libraries_and_Scripts/4_Scripts_A01_t23: Fail # TODO(analyzer-team): Please triage this failure.
+Language/13_Libraries_and_Scripts/5_URIs_A01_t01: Fail # TODO(analyzer-team): Please triage this failure.
+Language/13_Libraries_and_Scripts/5_URIs_A01_t21: Fail # TODO(analyzer-team): Please triage this failure.
+
+# co19 issue 319
+Language/13_Libraries_and_Scripts/1_Imports_A01_t51: Fail, OK
+Language/13_Libraries_and_Scripts/1_Imports_A01_t52: Fail, OK
+Language/13_Libraries_and_Scripts/2_Exports_A01_t02: Fail, OK
+Language/13_Libraries_and_Scripts/2_Exports_A01_t03: Fail, OK
+
+# co19 issue 320
+Language/13_Libraries_and_Scripts/1_Imports_A02_t03: Fail, OK
+Language/13_Libraries_and_Scripts/1_Imports_A02_t05: Fail, OK
+Language/13_Libraries_and_Scripts/1_Imports_A02_t12: Fail, OK
+Language/13_Libraries_and_Scripts/1_Imports_A02_t13: Fail, OK
+Language/13_Libraries_and_Scripts/1_Imports_A02_t15: Fail, OK
+Language/13_Libraries_and_Scripts/1_Imports_A02_t18: Fail, OK
+Language/13_Libraries_and_Scripts/1_Imports_A02_t19: Fail, OK
+
+# issue 6822
+Language/13_Libraries_and_Scripts/1_Imports_A02_t24: Fail
+
+# issue 6823
+Language/13_Libraries_and_Scripts/1_Imports_A03_t06: Fail
+Language/13_Libraries_and_Scripts/1_Imports_A03_t26: Fail
+Language/13_Libraries_and_Scripts/1_Imports_A03_t46: Fail
+Language/13_Libraries_and_Scripts/1_Imports_A03_t66: Fail
+
+# co19 issue 324
+Language/13_Libraries_and_Scripts/2_Exports_A03_t01: Fail, OK
+Language/13_Libraries_and_Scripts/2_Exports_A03_t02: Fail, OK
+
+# issue 6824
+Language/13_Libraries_and_Scripts/2_Exports_A04_t02: Fail
+Language/13_Libraries_and_Scripts/2_Exports_A04_t05: Fail
+
+# issue 6825
+Language/13_Libraries_and_Scripts/2_Exports_A01_t17: Fail
+
+# wait for answer from Gilad
Language/13_Libraries_and_Scripts/2_Exports_A04_t06: Fail # TODO(analyzer-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/4_Scripts_A01_t16: Fail # TODO(analyzer-team): Please triage this failure.
-LibTest/core/Queue/Queue.from_A01_t02: Fail # TODO(analyzer-team): Please triage this failure.
-LibTest/core/Set/Set.from_A01_t02: Fail # TODO(analyzer-team): Please triage this failure.
Language/03_Overview/2_Privacy_A01_t08: pass # http://dartbug.com/5179
Language/03_Overview/2_Privacy_A01_t11: pass # http://dartbug.com/5179
@@ -160,216 +142,13 @@
Language/11_Expressions/30_Identifier_Reference_A05_t06: pass # http://dartbug.com/5179
Language/13_Libraries_and_Scripts/13_Libraries_and_Scripts_A05_t01: pass # http://dartbug.com/5179
-Language/07_Classes/3_Setters_A04_t03: Fail, OK # getter and method with the same name
-Language/07_Classes/3_Setters_A04_t06: Fail OK # getter and method with the same name
-
-# co19 issue 217
-Language/07_Classes/07_Classes_A07_t03: Fail, OK
-Language/07_Classes/07_Classes_A07_t06: Fail, OK
-
# co19 issue 298
-Language/03_Overview/1_Scoping_A03_t02: Fail, OK
-Language/03_Overview/2_Privacy_A01_t01: Fail, OK
-Language/03_Overview/2_Privacy_A01_t02: Fail, OK
-Language/03_Overview/2_Privacy_A01_t06: Fail, OK
Language/03_Overview/2_Privacy_A01_t07: Fail, OK
-Language/03_Overview/2_Privacy_A01_t12: Fail, OK
-Language/03_Overview/2_Privacy_A01_t16: Fail, OK
-Language/07_Classes/07_Classes_A02_t01: Fail, OK
-Language/07_Classes/07_Classes_A03_t01: Fail, OK
-Language/07_Classes/07_Classes_A02_t34: Fail, OK
-Language/07_Classes/07_Classes_A03_t04: Fail, OK
-Language/07_Classes/07_Classes_A03_t10: Fail, OK
-Language/07_Classes/07_Classes_A07_t10: Fail, OK
-Language/07_Classes/1_Instance_Methods_A05_t02: Fail, OK
-Language/07_Classes/9_Superclasses/1_Inheritance_and_Overriding_A02_t04: Fail, OK
-Language/08_Interfaces/5_Superinterfaces/1_Inheritance_and_Overriding_A01_t01: Fail, OK
-Language/08_Interfaces/5_Superinterfaces/1_Inheritance_and_Overriding_A02_t05: Fail, OK
-Language/11_Expressions/15_Method_Invocation/2_Cascaded_Invocation_A01_t01: Fail, OK
-Language/11_Expressions/15_Method_Invocation/3_Static_Invocation_A03_t07: Fail, OK
-Language/11_Expressions/16_Getter_Lookup_A02_t04: Fail, OK
-Language/11_Expressions/18_Assignment_A04_t05: Fail, OK
-Language/11_Expressions/23_Relational_Expressions_A01_t01: Fail, OK
-Language/11_Expressions/24_Shift_A01_t01: Fail, OK
-Language/11_Expressions/30_Identifier_Reference_A12_t01: Fail, OK
-Language/13_Libraries_and_Scripts/13_Libraries_and_Scripts_A01_t01: Fail, OK
-Language/13_Libraries_and_Scripts/1_Imports_A02_t02: Fail, OK
-Language/13_Libraries_and_Scripts/1_Imports_A02_t01: Fail, OK
-Language/13_Libraries_and_Scripts/1_Imports_A02_t04: Fail, OK
-Language/13_Libraries_and_Scripts/1_Imports_A02_t06: Fail, OK
-Language/13_Libraries_and_Scripts/1_Imports_A02_t11: Fail, OK
-Language/13_Libraries_and_Scripts/1_Imports_A02_t14: Fail, OK
Language/13_Libraries_and_Scripts/1_Imports_A02_t16: Fail, OK
Language/13_Libraries_and_Scripts/1_Imports_A02_t17: Fail, OK
-Language/13_Libraries_and_Scripts/1_Imports_A02_t20: Fail, OK
-Language/13_Libraries_and_Scripts/3_Parts_A02_t04: Fail, OK
-
-
-# co19 issue 218
-Language/10_Expressions/28_Identifier_Reference_A08_t38: Fail, OK
-
-# co19 issue 270
-Language/13_Libraries_and_Scripts/3_Includes_A01_t14: Fail, OK
-Language/13_Libraries_and_Scripts/3_Includes_A02_t03: Fail, OK
-Language/13_Libraries_and_Scripts/3_Includes_A02_t04: Fail, OK
-Language/13_Libraries_and_Scripts/4_Scripts_A01_t16: Fail, OK
-
-# co19 issue 303
-Language/05_Variables/05_Variables_A07_t09: Fail, OK
-Language/05_Variables/05_Variables_A08_t03: Fail, OK
-Language/05_Variables/05_Variables_A12_t06: Fail, OK
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A17_t01: Fail, OK
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A17_t02: Fail, OK
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A17_t03: Fail, OK
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A17_t04: Fail, OK
-Language/07_Classes/6_Constructors/1_Generative_Constructors_A18_t03: Fail, OK
-Language/07_Classes/6_Constructors/2_Factories_A01_t01: Fail, OK
-Language/07_Classes/6_Constructors/2_Factories_A06_t01: Fail, OK
-Language/07_Classes/6_Constructors/2_Factories_A06_t02: Fail, OK
-Language/07_Classes/6_Constructors/2_Factories_A06_t03: Fail, OK
-Language/07_Classes/6_Constructors/2_Factories_A06_t04: Fail, OK
-Language/07_Classes/9_Superclasses/1_Inheritance_and_Overriding_A01_t06: Fail, OK
-Language/09_Generics/09_Generics_A03_t01: Fail, OK
-Language/09_Generics/09_Generics_A04_t06: Fail, OK
-Language/11_Expressions/04_Booleans/1_Boolean_Conversion_A01_t02: Fail, OK
-Language/11_Expressions/04_Booleans/1_Boolean_Conversion_A01_t01: Fail, OK
-Language/11_Expressions/05_Strings/1_String_Interpolation_A01_t01: Fail, OK
-Language/11_Expressions/05_Strings_A18_t02: Fail, OK
-Language/11_Expressions/05_Strings_A18_t03: Fail, OK
-Language/11_Expressions/05_Strings_A18_t04: Fail, OK
-Language/11_Expressions/05_Strings_A18_t06: Fail, OK
-Language/11_Expressions/05_Strings_A18_t07: Fail, OK
-Language/11_Expressions/05_Strings_A18_t05: Fail, OK
-Language/11_Expressions/05_Strings_A18_t08: Fail, OK
-Language/11_Expressions/05_Strings_A18_t09: Fail, OK
-Language/11_Expressions/06_Lists_A09_t01: Fail, OK
-Language/11_Expressions/06_Lists_A09_t02: Fail, OK
-Language/11_Expressions/06_Lists_A09_t03: Fail, OK
-Language/11_Expressions/06_Lists_A09_t04: Fail, OK
-Language/11_Expressions/06_Lists_A09_t05: Fail, OK
-Language/11_Expressions/07_Maps_A10_t02: Fail, OK
-Language/11_Expressions/07_Maps_A10_t03: Fail, OK
-Language/11_Expressions/07_Maps_A10_t05: Fail, OK
-Language/11_Expressions/07_Maps_A10_t04: Fail, OK
-Language/11_Expressions/09_Function_Expressions_A03_t03: Fail, OK
-Language/11_Expressions/09_Function_Expressions_A03_t04: Fail, OK
-Language/11_Expressions/09_Function_Expressions_A04_t03: Fail, OK
-Language/11_Expressions/09_Function_Expressions_A04_t04: Fail, OK
-Language/11_Expressions/09_Function_Expressions_A05_t02: Fail, OK
-Language/11_Expressions/09_Function_Expressions_A05_t03: Fail, OK
-Language/11_Expressions/09_Function_Expressions_A05_t04: Fail, OK
-Language/11_Expressions/09_Function_Expressions_A05_t05: Fail, OK
-Language/11_Expressions/09_Function_Expressions_A06_t02: Fail, OK
-Language/11_Expressions/09_Function_Expressions_A06_t03: Fail, OK
-Language/11_Expressions/09_Function_Expressions_A06_t04: Fail, OK
-Language/11_Expressions/09_Function_Expressions_A06_t05: Fail, OK
-Language/11_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A02_t01: Fail, OK
-Language/11_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A03_t01: Fail, OK
-Language/11_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A05_t01: Fail, OK
-Language/11_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A05_t02: Fail, OK
-Language/11_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A05_t03: Fail, OK
-Language/11_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A05_t04: Fail, OK
-Language/11_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A08_t01: Fail, OK
-Language/11_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A08_t02: Fail, OK
-Language/11_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A08_t04: Fail, OK
-Language/11_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A08_t03: Fail, OK
-Language/11_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t02: Fail, OK
-Language/11_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A06_t02: Fail, OK
-Language/11_Expressions/18_Assignment_A02_t01: Fail, OK
-Language/11_Expressions/18_Assignment_A03_t01: Fail, OK
-Language/11_Expressions/18_Assignment_A04_t06: Fail, OK
-Language/11_Expressions/18_Assignment_A04_t07: Fail, OK
-Language/11_Expressions/18_Assignment_A06_t01: Fail, OK
-Language/11_Expressions/19_Conditional_A02_t03: Fail, OK
-Language/11_Expressions/19_Conditional_A02_t04: Fail, OK
-Language/11_Expressions/20_Logical_Boolean_Expressions_A03_t01: Fail, OK
-Language/11_Expressions/22_Equality_A10_t02: Fail, OK
-Language/11_Expressions/27_Unary_Expressions_A02_t03: Fail, OK
-Language/11_Expressions/30_Identifier_Reference_A03_t01: Fail, OK
-Language/11_Expressions/30_Identifier_Reference_A10_t02: Fail, OK
-Language/12_Statements/03_Variable_Declaration_A01_t01: Fail, OK
-Language/12_Statements/03_Variable_Declaration_A01_t02: Fail, OK
-Language/12_Statements/05_If_A05_t01: Fail, OK
-Language/12_Statements/05_If_A05_t02: Fail, OK
-Language/12_Statements/06_For/1_For_Loop_A01_t07: Fail, OK
-Language/12_Statements/06_For/1_For_Loop_A01_t08: Fail, OK
-Language/12_Statements/07_While_A02_t02: Fail, OK
-Language/12_Statements/07_While_A03_t01: Fail, OK
-Language/12_Statements/07_While_A03_t02: Fail, OK
-Language/12_Statements/07_While_A03_t03: Fail, OK
-Language/12_Statements/08_Do_A02_t03: Fail, OK
-Language/12_Statements/15_Assert_A02_t01: Fail, OK
-Language/12_Statements/15_Assert_A03_t01: Fail, OK
-Language/12_Statements/15_Assert_A03_t02: Fail, OK
-Language/12_Statements/15_Assert_A03_t04: Fail, OK
-Language/12_Statements/15_Assert_A03_t03: Fail, OK
-Language/12_Statements/15_Assert_A03_t05: Fail, OK
-Language/12_Statements/15_Assert_A03_t08: Fail, OK
-Language/12_Statements/15_Assert_A03_t06: Fail, OK
-Language/12_Statements/15_Assert_A03_t09: Fail, OK
-Language/13_Libraries_and_Scripts/4_Scripts_A01_t17: Fail, OK
-Language/13_Libraries_and_Scripts/4_Scripts_A03_t01: Fail, OK
-Language/13_Libraries_and_Scripts/4_Scripts_A03_t02: Fail, OK
-Language/14_Types/1_Static_Types_A02_t09: Fail, OK
-Language/14_Types/2_Dynamic_Type_System_A01_t01: Fail, OK
-Language/14_Types/4_Interface_Types_A08_t03: Fail, OK
-Language/14_Types/8_Parameterized_Types_A02_t01: Fail, OK
-LibTest/core/AssertionError/column_A01_t02: Fail, OK
-LibTest/core/AssertionError/failedAssertion_A01_t01: Fail, OK
-LibTest/core/AssertionError/line_A01_t02: Fail, OK
-LibTest/core/AssertionError/toString_A01_t01: Fail, OK
-LibTest/core/AssertionError/url_A01_t01: Fail, OK
-LibTest/core/double/ceil_A01_t01: Fail, OK
-LibTest/core/double/ceil_A01_t03: Fail, OK
-LibTest/core/double/ceil_A01_t06: Fail, OK
-LibTest/core/double/floor_A01_t01: Fail, OK
-LibTest/core/double/floor_A01_t03: Fail, OK
-LibTest/core/double/floor_A01_t06: Fail, OK
-LibTest/core/double/operator_remainder_A01_t01: Fail, OK
-LibTest/core/double/round_A01_t05: Fail, OK
-LibTest/core/double/toDouble_A01_t03: Fail, OK
-LibTest/core/double/toInt_A01_t05: Fail, OK
-LibTest/core/double/truncate_A01_t05: Fail, OK
-LibTest/core/Future/chain_A02_t05: Fail, OK
-LibTest/core/Future/transform_A02_t04: Fail, OK
-LibTest/core/int/operator_addition_A01_t01: Fail, OK
-LibTest/core/int/operator_division_A01_t01: Fail, OK
-LibTest/core/int/operator_GE_A01_t01: Fail, OK
-LibTest/core/int/operator_GT_A01_t01: Fail, OK
-LibTest/core/int/operator_LE_A01_t01: Fail, OK
-LibTest/core/int/operator_LT_A01_t01: Fail, OK
-LibTest/core/int/operator_remainder_A01_t02: Fail, OK
-LibTest/core/int/operator_subtraction_A01_t01: Fail, OK
-LibTest/core/int/remainder_A01_t02: Fail, OK
-LibTest/core/int/toDouble_A01_t01: Fail, OK
-LibTest/core/List/addAll_A04_t01: Fail, OK
-LibTest/core/List/every_A01_t01: Fail, OK
-LibTest/core/List/forEach_A01_t02: Fail, OK
-LibTest/core/List/getRange_A06_t01: Fail, OK
-LibTest/core/List/indexOf_A06_t01: Fail, OK
-LibTest/core/List/insertRange_A08_t01: Fail, OK
-LibTest/core/List/length_A07_t01: Fail, OK
-LibTest/core/List/List.from_A03_t02: Fail, OK
-LibTest/core/List/List_A04_t01: Fail, OK
-LibTest/core/List/operator_subscript_A03_t01: Fail, OK
-LibTest/core/List/operator_subscripted_assignment_A03_t01: Fail, OK
-LibTest/core/List/setRange_A05_t01: Fail, OK
-LibTest/core/TypeError/dstName_A01_t01: Fail, OK
-LibTest/core/TypeError/column_A01_t01: Fail, OK
-LibTest/core/TypeError/failedAssertion_A01_t01: Fail, OK
-LibTest/core/TypeError/dstType_A01_t01: Fail, OK
-LibTest/core/TypeError/line_A01_t01: Fail, OK
-LibTest/core/TypeError/srcType_A01_t01: Fail, OK
-LibTest/core/TypeError/toString_A01_t01: Fail, OK
-LibTest/core/TypeError/url_A01_t01: Fail, OK
Language/07_Classes/6_Constructors/2_Factories_A03_t01: Fail, OK # co19 issue 307
-LibTest/core/RegExp/RegExp_A01_t04: Fail, OK # co19 issue 314
-LibTest/core/String/contains_A01_t01: Fail, OK # co19 issue 314
-LibTest/core/String/contains_A01_t03: Fail, OK # co19 issue 314
-
-Language/10_Expressions/30_Type_Cast_A01_t04: Fail, OK # the expected error is not specified
Language/13_Libraries_and_Scripts/13_Libraries_and_Scripts_A05_t03: Fail, OK # contains syntax error
Language/13_Libraries_and_Scripts/13_Libraries_and_Scripts_A05_t04: Fail, OK # contains syntax error
Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A03_t02: Fail, OK # deprecated parameter syntax
@@ -382,10 +161,6 @@
Language/11_Expressions/14_Function_Invocation/4_Function_Expression_Invocation_A05_t02: Fail, OK # co19 issue 195
Language/13_Libraries_and_Scripts/13_Libraries_and_Scripts_A05_t01: Fail, OK # co19 issue 195
-# Rename "BadNumberFormatException" to "FormatException"
-# TODO(rnystrom): These can be enabled when
-# http://code.google.com/p/co19/issues/detail?id=167 is fixed.
-
Language/03_Overview/1_Scoping_A02_t28: Fail # language change 1031
Language/07_Classes/6_Constructors/1_Generative_Constructors_A15_t07: Fail # Issue 3323
Language/07_Classes/6_Constructors/3_Constant_Constructors_A05_t01: Fail # Issue 2477
@@ -395,21 +170,10 @@
Language/11_Expressions/01_Constants_A16_t02: Fail # Issue 1473
Language/11_Expressions/01_Constants_A16_t03: Fail # Issue 1473
Language/11_Expressions/01_Constants_A17_t03: Fail # Issue 1473
-Language/11_Expressions/05_Strings/1_String_Interpolation_A01_t05: Fail # language change 3368
Language/11_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A05_t03: Fail # Issue 3524
-Language/11_Expressions/19_Conditional_A01_t12: Fail # language change 3368
-Language/11_Expressions/19_Conditional_A01_t13: Fail # language change 3368
-Language/11_Expressions/20_Logical_Boolean_Expressions_A01_t12: Fail # language change 3368
-Language/11_Expressions/20_Logical_Boolean_Expressions_A01_t13: Fail # language change 3368
-Language/11_Expressions/21_Bitwise_Expressions_A01_t14: Fail # language change 3368
-Language/11_Expressions/21_Bitwise_Expressions_A01_t15: Fail # language change 3368
Language/11_Expressions/22_Equality_A01_t19: Fail # language change 3368
Language/11_Expressions/22_Equality_A01_t20: Fail # language change 3368
Language/11_Expressions/22_Equality_A02_t03: Fail, OK # co19 issue 169
-Language/11_Expressions/23_Relational_Expressions_A01_t20: Fail # language change 3368
-Language/11_Expressions/23_Relational_Expressions_A01_t21: Fail # language change 3368
-Language/11_Expressions/24_Shift_A01_t11: Fail # language change 3368
-Language/11_Expressions/24_Shift_A01_t12: Fail # language change 3368
# The following tests use hashCode() (function) instead of hashCode (getter).
# co19 issue 273
@@ -417,13 +181,6 @@
LibTest/core/String/hashCode_A01_t01: Pass, OK
LibTest/core/int/hashCode_A01_t01: Pass, OK
-LibTest/core/List/iterator_next_A02_t01: Fail, OK # co19 issue 288
-LibTest/core/Queue/removeFirst_A02_t01: Fail, OK # co19 issue 288
-LibTest/core/Queue/last_A02_t01: Fail, OK # co19 issue 288
-LibTest/core/Queue/removeLast_A02_t01: Fail, OK # co19 issue 288
-LibTest/core/Queue/first_A02_t01: Fail, OK # co19 issue 288
-LibTest/core/Queue/iterator_next_A02_t01: Fail, OK # co19 issue 288
-
Language/06_Functions/3_Type_of_a_Function_A01_t01: Fail, OK
Language/11_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A05_t07: Fail, OK
Language/11_Expressions/15_Method_Invocation/4_Super_Invocation_A03_t02: Fail, OK
@@ -439,23 +196,14 @@
Language/11_Expressions/15_Method_Invocation/2_Cascaded_Invocation_A02_t02: Fail, OK
Language/11_Expressions/15_Method_Invocation/3_Static_Invocation_A04_t03: Fail, OK
Language/11_Expressions/15_Method_Invocation/4_Super_Invocation_A02_t04: Fail, OK
-Language/11_Expressions/21_Bitwise_Expressions_A01_t15: Fail, OK
-Language/11_Expressions/19_Conditional_A01_t13: Fail, OK
-Language/11_Expressions/20_Logical_Boolean_Expressions_A01_t12: Fail, OK
-Language/11_Expressions/21_Bitwise_Expressions_A01_t14: Fail, OK
-Language/11_Expressions/23_Relational_Expressions_A01_t21: Fail, OK
Language/11_Expressions/22_Equality_A01_t19: Fail, OK
Language/11_Expressions/01_Constants_A17_t03: Fail, OK
Language/11_Expressions/05_Strings/1_String_Interpolation_A04_t02: Fail, OK
Language/11_Expressions/05_Strings/1_String_Interpolation_A03_t02: Fail, OK
-Language/11_Expressions/05_Strings/1_String_Interpolation_A01_t05: Fail, OK
-Language/11_Expressions/24_Shift_A01_t11: Fail, OK
-Language/11_Expressions/20_Logical_Boolean_Expressions_A01_t13: Fail, OK
Language/11_Expressions/22_Equality_A01_t20: Fail, OK
Language/11_Expressions/30_Identifier_Reference_A04_t07: Fail, OK
Language/11_Expressions/30_Identifier_Reference_A04_t05: Fail, OK
Language/11_Expressions/01_Constants_A16_t02: Fail, OK
-Language/11_Expressions/23_Relational_Expressions_A01_t20: Fail, OK
Language/11_Expressions/30_Identifier_Reference_A05_t06: Fail, OK
Language/11_Expressions/01_Constants_A15_t16: Fail, OK
Language/11_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t04: Fail, OK
@@ -464,10 +212,8 @@
Language/11_Expressions/14_Function_Invocation/4_Function_Expression_Invocation_A03_t01: Fail, OK
Language/11_Expressions/14_Function_Invocation/4_Function_Expression_Invocation_A02_t01: Fail, OK
Language/11_Expressions/14_Function_Invocation/3_Unqualified_Invocation_A01_t05: Fail, OK
-Language/11_Expressions/19_Conditional_A01_t12: Fail, OK
Language/11_Expressions/01_Constants_A16_t03: Fail, OK
Language/11_Expressions/01_Constants_A16_t01: Fail, OK
-Language/11_Expressions/24_Shift_A01_t12: Fail, OK
Language/07_Classes/6_Constructors/3_Constant_Constructors_A05_t02: Fail, OK
Language/07_Classes/6_Constructors/3_Constant_Constructors_A05_t03: Fail, OK
Language/07_Classes/6_Constructors/3_Constant_Constructors_A05_t01: Fail, OK
@@ -476,27 +222,5 @@
Language/03_Overview/2_Privacy_A01_t18: Fail, OK
Language/03_Overview/2_Privacy_A01_t08: Fail, OK
-LibTest/core/List/getRange_A04_t01: Fail, OK # co19 issue 290
-LibTest/core/List/insertRange_A06_t01: Fail, OK # co19 issue 290
-LibTest/core/List/last_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/List/length_A05_t01: Fail, OK # co19 issue 290
-LibTest/core/List/List_A01_t01: Fail, OK # co19 issue 290
-LibTest/core/List/operator_subscript_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/List/operator_subscripted_assignment_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/List/removeLast_A01_t02: Fail, OK # co19 issue 290
-LibTest/core/List/removeRange_A05_t01: Fail, OK # co19 issue 290
-LibTest/core/List/setRange_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/List/setRange_A02_t02: Fail, OK # co19 issue 290
-LibTest/core/List/setRange_A03_t01: Fail, OK # co19 issue 290
-LibTest/core/List/setRange_A03_t02: Fail, OK # co19 issue 290
-LibTest/core/Match/group_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/Match/groups_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/Match/operator_subscript_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/String/charCodeAt_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/String/contains_A01_t02: Fail, OK # co19 issue 290
-LibTest/core/String/operator_subscript_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/String/substring_A02_t01: Fail, OK # co19 issue 290
-
-
[ $runtime == drt && ($compiler == none || $compiler == frog) ]
*: Skip
diff --git a/tests/co19/co19-dart2dart.status b/tests/co19/co19-dart2dart.status
index 8d33d10..1614758 100644
--- a/tests/co19/co19-dart2dart.status
+++ b/tests/co19/co19-dart2dart.status
@@ -3,11 +3,6 @@
# BSD-style license that can be found in the LICENSE file.
[ $compiler == dart2dart ]
-# Factory redirection:
-Language/07_Classes/07_Classes_A03_t01: Fail, Pass # http://dartbug.com/6634 Passes in conservative renaming mode.
-Language/11_Expressions/11_Instance_Creation/1_New_A12_t02: Fail, Pass # http://dartbug.com/6634 Passes in conservative renaming mode.
-Language/11_Expressions/11_Instance_Creation/1_New_A12_t01: Fail, Pass # http://dartbug.com/6634 Passes in conservative renaming mode.
-
# Calling unresolved class constructor:
Language/03_Overview/2_Privacy_A01_t19: Fail
Language/03_Overview/2_Privacy_A01_t20: Fail
@@ -16,10 +11,6 @@
Language/11_Expressions/11_Instance_Creation/1_New_A06_t05: Fail
Language/11_Expressions/11_Instance_Creation/1_New_A06_t06: Fail
-# Renaming type from platform library:
-Language/09_Generics/09_Generics_A02_t01: Fail # http://dartbug.com/6633
-Language/14_Types/4_Interface_Types_A10_t03: Fail # http://dartbug.com/6633
-
Language/03_Overview/1_Scoping_A01_t39: Fail # http://dartbug.com/5519
Language/03_Overview/1_Scoping_A01_t40: Fail # http://dartbug.com/5519
Language/03_Overview/1_Scoping_A01_t41: Fail # http://dartbug.com/5519
@@ -28,7 +19,6 @@
Language/03_Overview/1_Scoping_A02_t07: Fail # inherited from dart2js
Language/03_Overview/1_Scoping_A02_t12: Fail # inherited from dart2js
Language/03_Overview/2_Privacy_A01_t06: Fail # New import syntax
-Language/03_Overview/2_Privacy_A01_t14: Fail # inherited from dart2js
Language/05_Variables/05_Variables_A01_t04: Fail # http://dartbug.com/5519
Language/05_Variables/05_Variables_A01_t05: Fail # http://dartbug.com/5519
Language/05_Variables/05_Variables_A01_t08: Fail # http://dartbug.com/5519
@@ -80,7 +70,6 @@
Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A01_t06: Fail # http://dartbug.com/5519
Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A01_t07: Fail # http://dartbug.com/5519
Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A01_t10: Fail # http://dartbug.com/5519
-Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A01_t11: Fail # http://dartbug.com/5519
Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A01_t14: Fail # http://dartbug.com/5519
Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A01_t15: Fail # http://dartbug.com/5519
Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A02_t01: Fail # http://dartbug.com/5519
@@ -96,7 +85,6 @@
Language/06_Functions/2_Formal_Parameters_A03_t05: Fail # http://dartbug.com/5519
Language/06_Functions/2_Formal_Parameters_A03_t06: Fail # http://dartbug.com/5519
Language/06_Functions/4_External_Functions_A01_t01: Fail # inherited from VM
-Language/07_Classes/6_Constructors/2_Factories_A01_t05: Fail # Inherited from dartjs
Language/07_Classes/07_Classes_A02_t02: Fail # http://dartbug.com/5519
Language/07_Classes/07_Classes_A02_t04: Fail # http://dartbug.com/5519
Language/07_Classes/07_Classes_A02_t11: Fail # http://dartbug.com/5519
@@ -104,13 +92,13 @@
Language/07_Classes/07_Classes_A03_t07: Fail # inherited from dart2js
Language/07_Classes/07_Classes_A03_t08: Fail # inherited from dart2js
Language/07_Classes/07_Classes_A03_t09: Fail # inherited from dart2js
+Language/07_Classes/07_Classes_A03_t10: Fail # http://dartbug.com/6687
Language/07_Classes/07_Classes_A04_t19: Fail # inherited from dart2js
Language/07_Classes/07_Classes_A04_t21: Fail # inherited from dart2js
Language/07_Classes/07_Classes_A04_t22: Fail # inherited from dart2js
Language/07_Classes/07_Classes_A04_t24: Fail # inherited from dart2js
Language/07_Classes/07_Classes_A04_t25: Fail # inherited from dart2js
Language/07_Classes/10_Superinterfaces_A04_t01: Fail # http://dartbug.com/5519
-Language/07_Classes/1_Instance_Methods/2_Operators_A02_t01: Fail # inherited from VM
Language/07_Classes/1_Instance_Methods/2_Operators_A03_t01: Fail # inherited from dart2js
Language/07_Classes/1_Instance_Methods/2_Operators_A03_t02: Fail # inherited from dart2js
Language/07_Classes/1_Instance_Methods/2_Operators_A04_t02: Fail # inherited from dart2js
@@ -136,10 +124,11 @@
Language/07_Classes/1_Instance_Methods/2_Operators_A07_t02: Fail # http://dartbug.com/5519
Language/07_Classes/1_Instance_Methods/2_Operators_A07_t03: Fail # inherited from dart2js
Language/07_Classes/1_Instance_Methods/2_Operators_A07_t04: Fail # http://dartbug.com/5519
-Language/07_Classes/1_Instance_Methods_A02_t01: Fail # http://dartbug.com/5519
Language/07_Classes/1_Instance_Methods_A02_t02: Fail # http://dartbug.com/5519
Language/07_Classes/1_Instance_Methods_A02_t05: Fail # http://dartbug.com/5519
Language/07_Classes/1_Instance_Methods_A06_t01: Fail # Inherited from dart2js
+Language/07_Classes/1_Instance_Methods_A06_t02: Fail # Inherited from dart2js
+Language/07_Classes/1_Instance_Methods_A07_t01: Fail # Inherited from dart2js
Language/07_Classes/2_Getters_A01_t03: Fail # inherited from VM
Language/07_Classes/2_Getters_A01_t04: Fail # http://dartbug.com/5519
Language/07_Classes/2_Getters_A01_t05: Fail # inherited from VM
@@ -160,7 +149,6 @@
Language/07_Classes/3_Setters_A04_t05: Fail # inherited from VM
Language/07_Classes/3_Setters_A04_t06: Fail # inherited from VM
Language/07_Classes/3_Setters_A04_t07: Fail # inherited from VM
-Language/07_Classes/3_Setters_A04_t08: Fail # inherited from VM
Language/07_Classes/4_Abstract_Instance_Members_A04_t01: Fail # http://dartbug.com/5519
Language/07_Classes/4_Abstract_Instance_Members_A04_t05: Fail # inherited from VM
Language/07_Classes/4_Abstract_Instance_Members_A04_t06: Fail # inherited from VM
@@ -169,6 +157,7 @@
Language/07_Classes/6_Constructors/1_Generative_Constructors_A15_t07: Fail # inherited from VM
Language/07_Classes/6_Constructors/1_Generative_Constructors_A16_t07: Fail # http://dartbug.com/6242
Language/07_Classes/6_Constructors/1_Generative_Constructors_A21_t01: Fail # http://dartbug.com/5519
+Language/07_Classes/6_Constructors/2_Factories_A01_t05: Fail # Inherited from dartjs
Language/07_Classes/6_Constructors/2_Factories_A05_t01: Fail # Inherited from dart2js
Language/07_Classes/6_Constructors/2_Factories_A05_t02: Fail # Inherited from dart2js
Language/07_Classes/6_Constructors/2_Factories_A05_t03: Fail # Inherited from dart2js
@@ -185,6 +174,11 @@
Language/07_Classes/6_Constructors/3_Constant_Constructors_A05_t02: Fail # inherited from VM
Language/07_Classes/6_Constructors/3_Constant_Constructors_A05_t03: Fail # inherited from VM
Language/07_Classes/6_Constructors_A01_t01: Fail # inherited from VM
+Language/07_Classes/6_Constructors_A01_t02: Fail # Inherited from dart2js
+Language/07_Classes/6_Constructors_A01_t03: Fail # Inherited from dart2js
+Language/07_Classes/6_Constructors_A01_t04: Fail # Inherited from dart2js
+Language/07_Classes/6_Constructors_A01_t05: Fail # Inherited from dart2js
+Language/07_Classes/6_Constructors_A01_t06: Fail # Inherited from dart2js
Language/07_Classes/6_Constructors_A02_t01: Fail # http://dartbug.com/5519
Language/11_Expressions/01_Constants_A03_t01: Fail # Inherited from dart2js
Language/11_Expressions/01_Constants_A03_t02: Fail # http://dartbug.com/5519
@@ -211,6 +205,7 @@
Language/11_Expressions/01_Constants_A13_t05: Fail # http://dartbug.com/5519
Language/11_Expressions/01_Constants_A14_t01: Fail # inherited from VM
Language/11_Expressions/01_Constants_A14_t01: Fail # inherited from dart2js
+Language/11_Expressions/01_Constants_A14_t02: Fail # http://dartbug.com/5810
Language/11_Expressions/01_Constants_A15_t06: Fail # http://dartbug.com/5519
Language/11_Expressions/01_Constants_A15_t07: Fail # http://dartbug.com/5519
Language/11_Expressions/01_Constants_A15_t08: Fail # http://dartbug.com/5519
@@ -235,13 +230,13 @@
Language/11_Expressions/01_Constants_A17_t02: Fail # http://dartbug.com/5519
Language/11_Expressions/01_Constants_A17_t03: Crash # inherited from VM
Language/11_Expressions/01_Constants_A17_t03: Fail # http://dartbug.com/5519
+Language/11_Expressions/01_Constants_A19_t02: Fail # http://dartbug.com/5810
+Language/11_Expressions/01_Constants_A19_t03: Fail # http://dartbug.com/5810
Language/11_Expressions/01_Constants_A19_t04: Fail # http://dartbug.com/5519
-Language/11_Expressions/01_Constants_A20_t01: Fail # http://dartbug.com/5810
Language/11_Expressions/01_Constants_A20_t02: Fail # http://dartbug.com/5810
+Language/11_Expressions/01_Constants_A20_t03: Fail # http://dartbug.com/5810
Language/11_Expressions/05_Strings/1_String_Interpolation_A01_t06: Fail # Inherited from dart2js
Language/11_Expressions/05_Strings/1_String_Interpolation_A01_t09: Fail, OK # co19 issue 210
-Language/11_Expressions/05_Strings/1_String_Interpolation_A03_t02: Fail # inherited from VM
-Language/11_Expressions/05_Strings/1_String_Interpolation_A04_t02: Fail # inherited from VM
Language/11_Expressions/05_Strings_A02_t01: Skip # co19 issue 90.
Language/11_Expressions/05_Strings_A02_t46: Fail # inherited from VM
Language/11_Expressions/05_Strings_A02_t48: Fail # inherited from VM
@@ -259,15 +254,16 @@
Language/11_Expressions/11_Instance_Creation/1_New_A02_t05: Fail # inherited from dart2js
Language/11_Expressions/11_Instance_Creation/1_New_A02_t06: Fail # inherited from dart2js
Language/11_Expressions/11_Instance_Creation/1_New_A02_t07: Fail # inherited from dart2js
+Language/11_Expressions/11_Instance_Creation/1_New_A03_t01: Fail # http://dartbug.com/6895
+Language/11_Expressions/11_Instance_Creation/1_New_A03_t02: Fail # http://dartbug.com/6895
+Language/11_Expressions/11_Instance_Creation/1_New_A04_t01: Fail # http://dartbug.com/6895
+Language/11_Expressions/11_Instance_Creation/1_New_A04_t02: Fail # http://dartbug.com/6895
Language/11_Expressions/11_Instance_Creation/1_New_A09_t09: Fail # inherited from VM
-Language/11_Expressions/11_Instance_Creation/1_New_A13_t04: Fail # Inherited from VM
-Language/11_Expressions/11_Instance_Creation/1_New_A14_t01: Fail # Inherited from dart2js
Language/11_Expressions/11_Instance_Creation/2_Const_A01_t02: Fail # http://dartbug.com/5519
Language/11_Expressions/11_Instance_Creation/2_Const_A06_t01: Fail # http://dartbug.com/5519
Language/11_Expressions/11_Instance_Creation/2_Const_A06_t02: Fail # http://dartbug.com/5519
Language/11_Expressions/11_Instance_Creation/2_Const_A10_t01: Fail # inherited from VM
Language/11_Expressions/14_Function_Invocation/2_Binding_Actuals_to_Formals_A04_t01: Fail # http://dartbug.com/5519
-Language/11_Expressions/14_Function_Invocation/4_Function_Expression_Invocation_A03_t01: Fail # inherited from VM
Language/11_Expressions/14_Function_Invocation/4_Function_Expression_Invocation_A05_t01: Fail # inherited from VM
Language/11_Expressions/14_Function_Invocation/4_Function_Expression_Invocation_A05_t02: Fail # inherited from VM
Language/11_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A05_t02: Fail # inherited from VM
@@ -275,19 +271,10 @@
Language/11_Expressions/15_Method_Invocation/3_Static_Invocation_A03_t03: Fail # inherited from VM
Language/11_Expressions/15_Method_Invocation/3_Static_Invocation_A03_t04: Fail # http://dartbug.com/5519
Language/11_Expressions/15_Method_Invocation/3_Static_Invocation_A03_t06: Fail # inherited from VM
-Language/11_Expressions/15_Method_Invocation/3_Static_Invocation_A04_t02: Fail # inherited from VM
-Language/11_Expressions/15_Method_Invocation/3_Static_Invocation_A04_t03: Fail # inherited from VM
Language/11_Expressions/15_Method_Invocation/3_Static_Invocation_A04_t08: Fail # inherited from VM
-Language/11_Expressions/15_Method_Invocation/3_Static_Invocation_A05_t01: Fail # inherited from VM
-Language/11_Expressions/15_Method_Invocation/3_Static_Invocation_A06_t02: Fail # inherited from VM
-Language/11_Expressions/15_Method_Invocation/4_Super_Invocation_A02_t04: Fail # co19 issue 251 or issue 5732
-Language/11_Expressions/15_Method_Invocation/4_Super_Invocation_A03_t02: Fail # co19 issue 251 or issue 5732
-Language/11_Expressions/15_Method_Invocation/4_Super_Invocation_A03_t03: Fail # co19 issue 251 or issue 5732
-Language/11_Expressions/15_Method_Invocation/4_Super_Invocation_A07_t01: Fail # co19 issue 251 or issue 5732
-Language/11_Expressions/15_Method_Invocation/4_Super_Invocation_A08_t02: Fail # co19 issue 251 or issue 5732
Language/11_Expressions/17_Getter_Invocation_A02_t01: Fail # inherited from VM
Language/11_Expressions/18_Assignment_A05_t02: Fail # inherited from VM
-Language/11_Expressions/18_Assignment_A05_t04: Fail # inherited from VM
+Language/11_Expressions/18_Assignment_A05_t04: Fail, Pass, OK # Fails in minified, depends on method names.
Language/11_Expressions/18_Assignment_A05_t05: Fail # inherited from VM
Language/11_Expressions/19_Conditional_A01_t14: Fail # Inherited from dart2js
Language/11_Expressions/19_Conditional_A01_t15: Fail # Inherited from dart2js
@@ -330,7 +317,6 @@
Language/11_Expressions/30_Identifier_Reference_A02_t01: Fail # Pseudo keyword "abstract".
Language/11_Expressions/30_Identifier_Reference_A04_t09: Fail # Inherited from dart2js
Language/11_Expressions/30_Identifier_Reference_A05_t01: Fail # Inherited from dart2js
-Language/11_Expressions/30_Identifier_Reference_A05_t04: Fail # Inherited from dart2js
Language/11_Expressions/30_Identifier_Reference_A05_t12: Fail # Inherited from dart2js
Language/11_Expressions/30_Identifier_Reference_A06_t01: Fail # Inherited from VM (error returning class name).
Language/11_Expressions/30_Identifier_Reference_A06_t02: Fail # Inherited from VM (error returning typedef).
@@ -372,47 +358,51 @@
Language/12_Statements/12_Labels_A03_t04: Fail # Inherited from dart2js
Language/12_Statements/14_Continue_A02_t12: Fail # Inherited from dart2js
Language/12_Statements/14_Continue_A02_t13: Fail # Inherited from dart2js
-Language/13_Libraries_and_Scripts/1_Imports_A02_t01: Fail # Inherited from dart2js
-Language/13_Libraries_and_Scripts/1_Imports_A02_t02: Fail # Inherited from dart2js
+Language/13_Libraries_and_Scripts/1_Imports_A02_t14: Fail # Inherited from dart2js
Language/13_Libraries_and_Scripts/1_Imports_A02_t16: Fail # Inherited from dart2js
Language/13_Libraries_and_Scripts/1_Imports_A02_t17: Fail # Inherited from dart2js
Language/13_Libraries_and_Scripts/1_Imports_A02_t18: Fail # Inherited from dart2js
-Language/13_Libraries_and_Scripts/1_Imports_A02_t19: Fail # Inherited from VM (does not throw NSME).
Language/13_Libraries_and_Scripts/1_Imports_A02_t28: Fail # Inherited from dart2js
-Language/13_Libraries_and_Scripts/1_Imports_A03_t02: Fail # Inherited from dart2js
-Language/13_Libraries_and_Scripts/1_Imports_A03_t22: Fail # Inherited from dart2js
-Language/13_Libraries_and_Scripts/1_Imports_A03_t42: Fail # Inherited from dart2js
-Language/13_Libraries_and_Scripts/1_Imports_A03_t62: Fail # Inherited from dart2js
-Language/13_Libraries_and_Scripts/2_Exports_A01_t07: Fail # Inherited from dart2js
-Language/13_Libraries_and_Scripts/2_Exports_A01_t15: Fail # Inherited from dart2js
-Language/13_Libraries_and_Scripts/2_Exports_A01_t16: Fail # Inherited from dart2js
-Language/13_Libraries_and_Scripts/2_Exports_A04_t04: Fail # Inherited from dart2js
+Language/13_Libraries_and_Scripts/1_Imports_A03_t31: Fail # Inherited from dart2js
+Language/13_Libraries_and_Scripts/1_Imports_A05_t01: Fail # Inherited from dart2js
Language/13_Libraries_and_Scripts/2_Exports_A04_t05: Fail # Inherited from dart2js
Language/13_Libraries_and_Scripts/2_Exports_A04_t06: Fail # Inherited from dart2js
Language/13_Libraries_and_Scripts/3_Parts_A03_t02: Fail # Inherited from dart2js
-Language/13_Libraries_and_Scripts/4_Scripts_A01_t16: Fail # Inherited from dart2js
+Language/13_Libraries_and_Scripts/4_Scripts_A01_t21: Fail # Inherited from dart2js
+Language/13_Libraries_and_Scripts/4_Scripts_A01_t22: Fail # Inherited from dart2js
+Language/13_Libraries_and_Scripts/4_Scripts_A01_t23: Fail # Inherited from dart2js
Language/13_Libraries_and_Scripts/4_Scripts_A03_t01: Fail # http://dartbug.com/5519
Language/13_Libraries_and_Scripts/4_Scripts_A03_t03: Fail # http://dartbug.com/5519
+Language/13_Libraries_and_Scripts/5_URIs_A01_t01: Fail # Inherited from dart2js
+Language/13_Libraries_and_Scripts/5_URIs_A01_t04: Fail # Inherited from dart2js
+Language/13_Libraries_and_Scripts/5_URIs_A01_t05: Fail # Inherited from dart2js
+Language/13_Libraries_and_Scripts/5_URIs_A01_t11: Fail # Inherited from dart2js
+Language/13_Libraries_and_Scripts/5_URIs_A01_t14: Fail # Inherited from dart2js
+Language/13_Libraries_and_Scripts/5_URIs_A01_t15: Fail # Inherited from dart2js
+Language/13_Libraries_and_Scripts/5_URIs_A01_t21: Fail # Inherited from dart2js
+Language/13_Libraries_and_Scripts/5_URIs_A01_t24: Fail # Inherited from dart2js
+Language/13_Libraries_and_Scripts/5_URIs_A01_t25: Fail # Inherited from dart2js
Language/14_Types/2_Dynamic_Type_System_A02_t01: Fail # inherited from VM
Language/14_Types/3_Type_Declarations/1_Typedef_A06_t01: Fail # http://dartbug.com/5519
Language/14_Types/3_Type_Declarations/1_Typedef_A06_t02: Fail # http://dartbug.com/5519
Language/14_Types/3_Type_Declarations/1_Typedef_A06_t03: Fail # http://dartbug.com/5519
Language/14_Types/3_Type_Declarations/1_Typedef_A06_t04: Fail # http://dartbug.com/5519
+Language/14_Types/3_Type_Declarations/1_Typedef_A06_t05: Fail # Inherited from dart2js
Language/14_Types/3_Type_Declarations/1_Typedef_A07_t01: Fail, Pass # inherited from dart2js: fails in minify, self-reference typedef check not performed
Language/14_Types/3_Type_Declarations/1_Typedef_A07_t02: Fail, Pass # inherited from dart2js: fails in minify, self-reference typedef check not performed
Language/14_Types/3_Type_Declarations/1_Typedef_A07_t03: Fail, Pass # inherited from dart2js: fails in minify, self-reference typedef check not performed
-Language/14_Types/5_Function_Types_A01_t05: Fail # inherited from dart2js
-Language/14_Types/5_Function_Types_A02_t01: Fail # inherited from VM
+Language/14_Types/3_Type_Declarations/1_Typedef_A07_t04: Fail # Inherited from dart2js
+Language/14_Types/5_Function_Types_A01_t03: Fail # Inherited from dart2js
+Language/14_Types/5_Function_Types_A06_t01: Fail # Inherited from dart2js
Language/15_Reference/1_Lexical_Rules/1_Reserved_Words_A40_t04: Fail # inherited from dart2js
Language/15_Reference/1_Lexical_Rules_A02_t06: Fail # inherited from dart2js
LibTest/core/Date/Date.fromMillisecondsSinceEpoch_A03_t01: Fail # Inherited from dart2js
LibTest/core/Date/Date.fromString_A03_t01: Fail, OK # Issue co19 - 121
LibTest/core/Date/toString_A02_t01: Fail, OK # inherited from VM
LibTest/core/Date/year_A01_t01: Fail, OK # inherited from VM
-LibTest/core/EmptyQueueException/EmptyQueueException_A01_t01: Fail, OK # co19 issue 288
-LibTest/core/EmptyQueueException/toString_A01_t01: Fail, OK # co19 issue 288
+LibTest/core/Future/chain_A03_t01: Fail, OK # co19 issue 328
+LibTest/core/Future/transform_A03_t01: Fail, OK # co19 issue 328
LibTest/core/LinkedHashMap/LinkedHashMap_class_A01_t01: Fail, OK # co19 issue 293
-LibTest/core/List/iterator_next_A02_t01: Fail, OK # co19 issue 288
LibTest/core/Map/getKeys_A01_t01: Fail, OK # co19 issue 293
LibTest/core/Map/getKeys_A01_t02: Fail, OK # co19 issue 293
LibTest/core/Map/getValues_A01_t01: Fail, OK # co19 issue 293
@@ -420,22 +410,13 @@
LibTest/core/Map/getValues_A01_t02: Fail, OK # co19 issue 293
LibTest/core/Match/operator_subscript_A01_t01: Fail # inherited from VM
LibTest/core/Match/operator_subscript_A01_t01: Fail, OK # co19 issue 294
-LibTest/core/NoMoreElementsException/NoMoreElementsException_A01_t01: Fail, OK # co19 issue 288
-LibTest/core/NoMoreElementsException/toString_A01_t01: Fail, OK # co19 issue 288
-LibTest/core/NoSuchMethodError/NoSuchMethodError_A01_t01: Fail, OK # co19 issue 300
-LibTest/core/NoSuchMethodError/toString_A01_t01: Fail, OK # co19 issue 300
-LibTest/core/Queue/Queue.from_A01_t02: Fail # Inherited from dart2js
-LibTest/core/Queue/first_A02_t01: Fail, OK # co19 issue 288
-LibTest/core/Queue/first_A02_t01: Fail, OK # co19 issue 291
-LibTest/core/Queue/iterator_next_A02_t01: Fail, OK # co19 issue 288
-LibTest/core/Queue/last_A02_t01: Fail, OK # co19 issue 288
-LibTest/core/Queue/last_A02_t01: Fail, OK # co19 issue 291
-LibTest/core/Queue/removeFirst_A02_t01: Fail, OK # co19 issue 288
-LibTest/core/Queue/removeLast_A02_t01: Fail, OK # co19 issue 288
LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A02_t01: Fail # inherited from VM
LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A02_t01: Fail, OK # co19 issue 294
+LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A01_t01: Fail # Inherited from dart2js
+LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A02_t01: Fail # Inherited from dart2js
LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A03_t01: Fail # inherited from VM
LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A04_t01: Fail # inherited from VM
+LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A06_t01: Fail # Inherited from dart2js
LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A06_t02: Fail
LibTest/core/RegExp/Pattern_semantics/firstMatch_DecimalEscape_A01_t02: Fail # inherited from VM
LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t01: Fail # inherited from VM
@@ -444,22 +425,8 @@
LibTest/core/RegExp/Pattern_semantics/firstMatch_Term_A03_t01: Fail # inherited from VM
LibTest/core/RegExp/Pattern_semantics/firstMatch_Term_A03_t01: Fail, OK # co19 issue 294
LibTest/core/RegExp/firstMatch_A01_t01: Fail, OK # co19 issue 294
-LibTest/core/Set/Set.from_A01_t02: Fail # Inherited from dart2js
-LibTest/core/Stopwatch/Stopwatch_A01_t01: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/elapsedInMs_A01_t01: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/elapsedInUs_A01_t01: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/elapsed_A01_t01: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/elapsed_A01_t02: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/elapsed_A01_t03: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/frequency_A01_t01: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/start_A01_t01: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/start_A01_t02: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/start_A01_t03: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/stop_A01_t01: Fail, OK # co19 issue 297
-LibTest/core/String/String_class_A02_t01: Fail, OK # co19 issue 284
-LibTest/core/String/charCodeAt_A01_t01: Fail, OK # co19 issue 284
-LibTest/core/String/charCodes_A01_t01: Fail, OK # co19 issue 284
LibTest/core/String/contains_A01_t02: Fail # inherited from VM
+LibTest/core/double/parse_A02_t01: Fail # Inherited from VM.
LibTest/core/double/toRadixString_A01_t01: Fail # inherited from VM
LibTest/core/int/operator_left_shift_A01_t02: Fail, OK # co19 issue 129
LibTest/core/int/toRadixString_A01_t01: Fail # inherited from VM
@@ -468,7 +435,6 @@
LibTest/isolate/SendPort/send_A02_t03: Fail, OK # co19 issue 293
LibTest/isolate/SendPort/send_A02_t04: Fail, OK # co19 issue 293
LibTest/isolate/isolate_api/port_A01_t01: Skip # Times out.
-
LibTest/isolate/isolate_api/spawnUri_A01_t01: Fail, OK # Problems with the test: encoded file name
LibTest/isolate/isolate_api/spawnUri_A01_t02: Fail, OK # Problems with the test: encoded file name
LibTest/isolate/isolate_api/spawnUri_A01_t03: Fail, OK # Problems with the test: encoded file name
@@ -476,45 +442,12 @@
LibTest/isolate/isolate_api/spawnUri_A01_t05: Fail, OK # Problems with the test: encoded file name
LibTest/math/Random/nextDouble_A01_t01: Fail # Inherited from VM.
LibTest/math/exp_A01_t01: Fail # Issue co19 - 44
-LibTest/math/parseDouble_A02_t01: Fail # Inherited from VM.
LibTest/math/pow_A01_t01: Fail # Inherited from VM.
LibTest/math/pow_A11_t01: Fail # Inherited from VM.
LibTest/math/pow_A13_t01: Fail # Inherited from VM.
LibTest/math/sin_A01_t01: Fail # Inherited from VM.
LibTest/math/tan_A01_t01: Fail # Issue co19 - 44
-Language/07_Classes/07_Classes_A01_t20: Fail # http://dartbug.com/6687
-Language/07_Classes/07_Classes_A02_t34: Fail # http://dartbug.com/6687
-Language/07_Classes/07_Classes_A03_t10: Fail # http://dartbug.com/6687
-
-LibTest/core/RegExp/RegExp_A01_t04: Fail, OK # co19 issue 314
-LibTest/core/String/contains_A01_t01: Fail, OK # co19 issue 314
-LibTest/core/String/contains_A01_t03: Fail, OK # co19 issue 314
-
-LibTest/core/NotImplementedException/NotImplementedException_A01_t01: Fail, OK # co19 issue 315
-LibTest/core/NotImplementedException/toString_A01_t01: Fail, OK # co19 issue 315
-
-LibTest/core/IndexOutOfRangeException/IndexOutOfRangeException_A01_t01: Fail, OK # co19 issue 290
-LibTest/core/IndexOutOfRangeException/toString_A01_t01: Fail, OK # co19 issue 290
-LibTest/core/List/getRange_A04_t01: Fail, OK # co19 issue 290
-LibTest/core/List/insertRange_A06_t01: Fail, OK # co19 issue 290
-LibTest/core/List/last_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/List/length_A05_t01: Fail, OK # co19 issue 290
-LibTest/core/List/List_A01_t01: Fail, OK # co19 issue 290
-LibTest/core/List/operator_subscript_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/List/operator_subscripted_assignment_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/List/removeLast_A01_t02: Fail, OK # co19 issue 290
-LibTest/core/List/removeRange_A05_t01: Fail, OK # co19 issue 290
-LibTest/core/List/setRange_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/List/setRange_A02_t02: Fail, OK # co19 issue 290
-LibTest/core/List/setRange_A03_t01: Fail, OK # co19 issue 290
-LibTest/core/List/setRange_A03_t02: Fail, OK # co19 issue 290
-LibTest/core/Match/group_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/Match/groups_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/Match/operator_subscript_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/String/charCodeAt_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/String/operator_subscript_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/String/substring_A02_t01: Fail, OK # co19 issue 290
[ $compiler == dart2dart && $system == windows ]
LibTest/core/double/operator_remainder_A01_t04: Fail # Result is NaN
diff --git a/tests/co19/co19-dart2js.status b/tests/co19/co19-dart2js.status
index 3675613..b878b65 100644
--- a/tests/co19/co19-dart2js.status
+++ b/tests/co19/co19-dart2js.status
@@ -2,7 +2,6 @@
# 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.
-
# Crashes first, please. Then untriaged bugs. There is a section below
# for co19 bugs.
[ $compiler == dart2js ]
@@ -35,6 +34,8 @@
Language/06_Functions/06_Functions_A01_t22: Fail # TODO(ahe): Please triage this failure.
Language/07_Classes/07_Classes_A03_t07: Fail # TODO(ahe): Please triage this failure.
Language/07_Classes/1_Instance_Methods_A06_t01: Fail # TODO(ahe): Please triage this failure.
+Language/07_Classes/1_Instance_Methods_A06_t02: Fail # TODO(ahe): Please triage this failure.
+Language/07_Classes/1_Instance_Methods_A07_t01: Fail # TODO(ahe): Please triage this failure.
Language/07_Classes/6_Constructors/2_Factories_A05_t01: Fail # TODO(ahe): Please triage this failure.
Language/07_Classes/6_Constructors/2_Factories_A05_t02: Fail # TODO(ahe): Please triage this failure.
Language/07_Classes/6_Constructors/2_Factories_A05_t03: Fail # TODO(ahe): Please triage this failure.
@@ -42,10 +43,16 @@
Language/07_Classes/6_Constructors/2_Factories_A07_t01: Fail # TODO(ahe): Please triage this failure.
Language/07_Classes/6_Constructors/3_Constant_Constructors_A05_t01: Fail # TODO(ahe): Please triage this failure.
Language/07_Classes/6_Constructors/3_Constant_Constructors_A05_t03: Fail # TODO(ahe): Please triage this failure.
+Language/07_Classes/6_Constructors_A01_t02: Fail # TODO(ahe): Please triage this failure.
+Language/07_Classes/6_Constructors_A01_t03: Fail # TODO(ahe): Please triage this failure.
+Language/07_Classes/6_Constructors_A01_t04: Fail # TODO(ahe): Please triage this failure.
+Language/07_Classes/6_Constructors_A01_t05: Fail # TODO(ahe): Please triage this failure.
+Language/07_Classes/6_Constructors_A01_t06: Fail # TODO(ahe): Please triage this failure.
Language/07_Classes/9_Superclasses/1_Inheritance_and_Overriding_A02_t03: Fail # TODO(ahe): Please triage this failure.
Language/09_Generics/09_Generics_A05_t01: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/01_Constants_A05_t01: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/01_Constants_A13_t06: Fail # TODO(ahe): Please triage this failure.
+Language/11_Expressions/01_Constants_A20_t03: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/05_Strings/1_String_Interpolation_A01_t06: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/08_Throw_A01_t01: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/08_Throw_A05_t01: Fail # TODO(ahe): Please triage this failure.
@@ -64,6 +71,7 @@
Language/11_Expressions/19_Conditional_A01_t14: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/19_Conditional_A01_t15: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/20_Logical_Boolean_Expressions_A01_t14: Fail # TODO(ahe): Please triage this failure.
+Language/11_Expressions/20_Logical_Boolean_Expressions_A01_t15: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/21_Bitwise_Expressions_A01_t16: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/21_Bitwise_Expressions_A01_t17: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/22_Equality_A01_t23: Fail # TODO(ahe): Please triage this failure.
@@ -82,9 +90,7 @@
Language/11_Expressions/27_Unary_Expressions_A01_t22: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/30_Identifier_Reference_A04_t09: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/30_Identifier_Reference_A05_t01: Fail # TODO(ahe): Please triage this failure.
-Language/11_Expressions/30_Identifier_Reference_A05_t04: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/30_Identifier_Reference_A05_t12: Fail # TODO(ahe): Please triage this failure.
-Language/11_Expressions/30_Identifier_Reference_A06_t02: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/31_Type_Test_A01_t02: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/31_Type_Test_A01_t04: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/31_Type_Test_A04_t01: Fail # TODO(ahe): Please triage this failure.
@@ -117,36 +123,68 @@
Language/12_Statements/12_Labels_A03_t04: Fail # TODO(ahe): Please triage this failure.
Language/12_Statements/14_Continue_A02_t12: Fail # TODO(ahe): Please triage this failure.
Language/12_Statements/14_Continue_A02_t13: Fail # TODO(ahe): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A02_t01: Fail # TODO(ahe): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A02_t02: Fail # TODO(ahe): Please triage this failure.
+Language/13_Libraries_and_Scripts/1_Imports_A02_t14: Fail # TODO(ahe): Please triage this failure.
Language/13_Libraries_and_Scripts/1_Imports_A02_t16: Fail # TODO(ahe): Please triage this failure.
Language/13_Libraries_and_Scripts/1_Imports_A02_t17: Fail # TODO(ahe): Please triage this failure.
Language/13_Libraries_and_Scripts/1_Imports_A02_t18: Fail # TODO(ahe): Please triage this failure.
Language/13_Libraries_and_Scripts/1_Imports_A02_t19: Fail # TODO(ahe): Please triage this failure.
Language/13_Libraries_and_Scripts/1_Imports_A02_t27: Fail # TODO(ahe): Please triage this failure.
Language/13_Libraries_and_Scripts/1_Imports_A02_t28: Fail # TODO(ahe): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A03_t02: Fail # TODO(ahe): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A03_t22: Fail # TODO(ahe): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A03_t42: Fail # TODO(ahe): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A03_t62: Fail # TODO(ahe): Please triage this failure.
-Language/13_Libraries_and_Scripts/2_Exports_A01_t07: Fail # TODO(ahe): Please triage this failure.
-Language/13_Libraries_and_Scripts/2_Exports_A01_t15: Fail # TODO(ahe): Please triage this failure.
-Language/13_Libraries_and_Scripts/2_Exports_A01_t16: Fail # TODO(ahe): Please triage this failure.
-Language/13_Libraries_and_Scripts/2_Exports_A04_t04: Fail # TODO(ahe): Please triage this failure.
+Language/13_Libraries_and_Scripts/1_Imports_A03_t31: Fail # TODO(ahe): Please triage this failure.
+Language/13_Libraries_and_Scripts/1_Imports_A03_t51: Fail # TODO(ahe): Please triage this failure.
+Language/13_Libraries_and_Scripts/1_Imports_A05_t01: Fail # TODO(ahe): Please triage this failure.
Language/13_Libraries_and_Scripts/2_Exports_A04_t05: Fail # TODO(ahe): Please triage this failure.
Language/13_Libraries_and_Scripts/2_Exports_A04_t06: Fail # TODO(ahe): Please triage this failure.
Language/13_Libraries_and_Scripts/3_Parts_A03_t02: Fail # TODO(ahe): Please triage this failure.
-Language/13_Libraries_and_Scripts/4_Scripts_A01_t16: Fail # TODO(ahe): Please triage this failure.
+Language/13_Libraries_and_Scripts/4_Scripts_A01_t21: Fail # TODO(ahe): Please triage this failure.
+Language/13_Libraries_and_Scripts/4_Scripts_A01_t22: Fail # TODO(ahe): Please triage this failure.
+Language/13_Libraries_and_Scripts/4_Scripts_A01_t23: Fail # TODO(ahe): Please triage this failure.
+Language/13_Libraries_and_Scripts/5_URIs_A01_t01: Fail # TODO(ahe): Please triage this failure.
+Language/13_Libraries_and_Scripts/5_URIs_A01_t04: Fail # TODO(ahe): Please triage this failure.
+Language/13_Libraries_and_Scripts/5_URIs_A01_t05: Fail # TODO(ahe): Please triage this failure.
+Language/13_Libraries_and_Scripts/5_URIs_A01_t11: Fail # TODO(ahe): Please triage this failure.
+Language/13_Libraries_and_Scripts/5_URIs_A01_t14: Fail # TODO(ahe): Please triage this failure.
+Language/13_Libraries_and_Scripts/5_URIs_A01_t15: Fail # TODO(ahe): Please triage this failure.
+Language/13_Libraries_and_Scripts/5_URIs_A01_t21: Fail # TODO(ahe): Please triage this failure.
+Language/13_Libraries_and_Scripts/5_URIs_A01_t24: Fail # TODO(ahe): Please triage this failure.
+Language/13_Libraries_and_Scripts/5_URIs_A01_t25: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/3_Type_Declarations/1_Typedef_A07_t05: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/3_Type_Declarations/1_Typedef_A07_t06: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/3_Type_Declarations/1_Typedef_A07_t07: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A01_t04: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A01_t10: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A02_t02: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A02_t03: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A02_t04: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A02_t05: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A02_t06: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A02_t07: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A02_t08: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A02_t09: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A02_t10: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A03_t01: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A03_t02: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A03_t03: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A03_t04: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A03_t06: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A03_t07: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A03_t08: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A03_t09: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A03_t10: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A03_t11: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A03_t12: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A03_t13: Fail # TODO(ahe): Please triage this failure.
+Language/14_Types/5_Function_Types_A06_t01: Fail # TODO(ahe): Please triage this failure.
Language/15_Reference/1_Lexical_Rules/1_Reserved_Words_A40_t04: Fail # TODO(ahe): Please triage this failure.
-LibTest/core/Queue/Queue.from_A01_t02: Fail # TODO(ahe): Please triage this failure.
-LibTest/core/Set/Set.from_A01_t02: Fail # TODO(ahe): Please triage this failure.
-LibTest/core/String/replaceAll_A02_t01: Fail # TODO(ahe): Please triage this failure.
-LibTest/core/String/replaceFirst_A02_t01: Fail # TODO(ahe): Please triage this failure.
+LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A01_t01: Fail # TODO(ahe): Please triage this failure.
+LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A02_t01: Fail # TODO(ahe): Please triage this failure.
+LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A06_t01: Fail # TODO(ahe): Please triage this failure.
LibTest/core/double/INFINITY_A01_t04: Fail # TODO(ahe): Please triage this failure.
LibTest/core/double/NEGATIVE_INFINITY_A01_t04: Fail # TODO(ahe): Please triage this failure.
+LibTest/core/double/parse_A01_t01: Fail # TODO(ahe): Please triage this failure.
+LibTest/isolate/ReceivePort/receive_A01_t02: Fail # TODO(ahe): Please triage this failure.
LibTest/math/Random/nextDouble_A01_t01: Fail # TODO(ahe): Please triage this failure.
LibTest/math/exp_A01_t01: Fail # TODO(ahe): Please triage this failure.
-LibTest/math/parseDouble_A01_t01: Fail # TODO(ahe): Please triage this failure.
LibTest/math/pow_A01_t01: Fail # TODO(ahe): Please triage this failure.
LibTest/math/pow_A11_t01: Fail # TODO(ahe): Please triage this failure.
LibTest/math/pow_A13_t01: Fail # TODO(ahe): Please triage this failure.
@@ -157,24 +195,10 @@
Language/07_Classes/6_Constructors/2_Factories_A01_t05: Fail
-LibTest/core/List/iterator_next_A02_t01: Fail, OK # co19 issue 288
-LibTest/core/Queue/iterator_next_A02_t01: Fail, OK # co19 issue 288
-LibTest/core/Queue/first_A02_t01: Fail, OK # co19 issue 288
-LibTest/core/Queue/removeLast_A02_t01: Fail, OK # co19 issue 288
-LibTest/core/Queue/last_A02_t01: Fail, OK # co19 issue 288
-LibTest/core/Queue/removeFirst_A02_t01: Fail, OK # co19 issue 288
-LibTest/core/NoMoreElementsException/NoMoreElementsException_A01_t01: Fail, OK # co19 issue 288
-LibTest/core/NoMoreElementsException/toString_A01_t01: Fail, OK # co19 issue 288
-LibTest/core/EmptyQueueException/EmptyQueueException_A01_t01: Fail, OK # co19 issue 288
-LibTest/core/EmptyQueueException/toString_A01_t01: Fail, OK # co19 issue 288
-
[ $compiler == dart2js && $unchecked ]
LibTest/core/Date/Date.fromMillisecondsSinceEpoch_A03_t01: Fail # TODO(ahe): Please triage this failure.
[ $compiler == dart2js && $runtime == jsshell ]
-Language/06_Functions/3_Type_of_a_Function_A01_t01: Fail # TODO(ahe): Triage these tests.
-Language/07_Classes/8_Static_Variables_A02_t01: Fail # TODO(ahe): Triage these tests.
-LibTest/core/Map/putIfAbsent_A01_t08: Fail # TODO(ahe): Triage these tests.
LibTest/core/double/round_A01_t01: Fail # TODO(ahe): Triage these tests.
LibTest/core/double/toStringAsExponential_A01_t07: Fail # TODO(ahe): Triage these tests.
LibTest/core/double/toStringAsFixed_A01_t05: Fail # TODO(ahe): Triage these tests.
@@ -193,12 +217,13 @@
Language/07_Classes/6_Constructors/2_Factories_A06_t04: Fail # TODO(ahe): Please triage this failure.
Language/09_Generics/09_Generics_A03_t01: Fail # TODO(ahe): Please triage this failure.
Language/09_Generics/09_Generics_A04_t06: Fail # TODO(ahe): Please triage this failure.
-Language/09_Generics/09_Generics_A05_t02: Fail # TODO(ahe): Please triage this failure.
+Language/11_Expressions/03_Numbers_A05_t02: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/06_Lists_A09_t01: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/06_Lists_A09_t04: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/06_Lists_A09_t05: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/07_Maps_A10_t04: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/07_Maps_A10_t05: Fail # TODO(ahe): Please triage this failure.
+Language/11_Expressions/07_Maps_A11_t01: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/09_Function_Expressions_A03_t03: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/09_Function_Expressions_A04_t03: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/09_Function_Expressions_A05_t02: Fail # TODO(ahe): Please triage this failure.
@@ -209,15 +234,20 @@
Language/11_Expressions/11_Instance_Creation/1_New_A11_t01: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/11_Instance_Creation/2_Const_A09_t02: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/11_Instance_Creation/2_Const_A09_t03: Fail # TODO(ahe): Please triage this failure.
+Language/11_Expressions/11_Instance_Creation_A05_t01: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/11_Instance_Creation_A05_t02: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/15_Method_Invocation/3_Static_Invocation_A03_t04: Fail # TODO(ahe): Please triage this failure.
+Language/11_Expressions/19_Conditional_A04_t03: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/20_Logical_Boolean_Expressions_A03_t01: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/27_Unary_Expressions_A02_t03: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/32_Type_Cast_A05_t03: Fail # TODO(ahe): Please triage this failure.
Language/11_Expressions/32_Type_Cast_A05_t05: Fail # TODO(ahe): Please triage this failure.
-Language/12_Statements/05_If_A02_t01: Fail # TODO(ahe): Please triage this failure.
Language/12_Statements/06_For/1_For_Loop_A01_t08: Fail # TODO(ahe): Please triage this failure.
Language/12_Statements/09_Switch_A05_t01: Fail # TODO(ahe): Please triage this failure.
+Language/13_Libraries_and_Scripts/1_Imports_A03_t06: Fail # TODO(ahe): Please triage this failure.
+Language/13_Libraries_and_Scripts/1_Imports_A03_t26: Fail # TODO(ahe): Please triage this failure.
+Language/13_Libraries_and_Scripts/1_Imports_A03_t46: Fail # TODO(ahe): Please triage this failure.
+Language/13_Libraries_and_Scripts/1_Imports_A03_t66: Fail # TODO(ahe): Please triage this failure.
Language/14_Types/4_Interface_Types_A08_t03: Fail # TODO(ahe): Please triage this failure.
Language/14_Types/8_Parameterized_Types_A02_t01: Fail # TODO(ahe): Please triage this failure.
LibTest/core/AssertionError/column_A01_t02: Fail # TODO(ahe): Please triage this failure.
@@ -227,9 +257,9 @@
LibTest/core/List/operator_subscript_A03_t01: Fail # TODO(ahe): Please triage this failure.
LibTest/core/List/operator_subscripted_assignment_A03_t01: Fail # TODO(ahe): Please triage this failure.
LibTest/core/Map/putIfAbsent_A01_t04: Fail # TODO(ahe): Please triage this failure.
-LibTest/core/Map/putIfAbsent_A01_t07: Fail # TODO(ahe): Please triage this failure.
-LibTest/core/Map/putIfAbsent_A01_t08: Fail # TODO(ahe): Please triage this failure.
LibTest/core/Queue/iterator_hasNext_A01_t01: Fail # TODO(ahe): Please triage this failure.
+LibTest/core/String/contains_A01_t01: Fail # TODO(ahe): Please triage this failure.
+LibTest/core/String/contains_A01_t03: Fail # TODO(ahe): Please triage this failure.
LibTest/core/TypeError/column_A01_t01: Fail # TODO(ahe): Please triage this failure.
LibTest/core/TypeError/dstName_A01_t01: Fail # TODO(ahe): Please triage this failure.
LibTest/core/TypeError/dstType_A01_t01: Fail # TODO(ahe): Please triage this failure.
@@ -247,12 +277,6 @@
Language/11_Expressions/15_Method_Invocation/4_Super_Invocation_A06_t01: Fail # Checked mode failure for noSuchMethod type.
Language/11_Expressions/15_Method_Invocation/4_Super_Invocation_A06_t02: Fail # Checked mode failure for noSuchMethod type.
-# These tests return an object from a void function.
-Language/14_Types/7_Type_Void_A04_t02: Fail, OK
-Language/14_Types/7_Type_Void_A04_t03: Fail, OK
-Language/14_Types/7_Type_Void_A04_t04: Fail, OK
-Language/14_Types/7_Type_Void_A04_t05: Fail, OK
-
Language/11_Expressions/11_Instance_Creation/1_New_A12_t02: Fail # http://dartbug.com/3970
@@ -273,21 +297,6 @@
# These tests need to be updated for new optional parameter syntax and semantics, co19 issue 258:
Language/07_Classes/1_Instance_Methods_A02_t05: Fail, OK
Language/07_Classes/6_Constructors/1_Generative_Constructors_A13_t01: Fail, OK
-Language/14_Types/5_Function_Types_A01_t21: Fail, OK
-
-LibTest/core/String/charCodes_A01_t01: Fail, OK # co19 issue 289
-
-LibTest/core/Stopwatch/Stopwatch_A01_t01: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/elapsed_A01_t03: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/elapsed_A01_t01: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/elapsed_A01_t02: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/elapsedInUs_A01_t01: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/elapsedInMs_A01_t01: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/start_A01_t01: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/start_A01_t02: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/start_A01_t03: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/stop_A01_t01: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/frequency_A01_t01: Fail, OK # co19 issue 297
LibTest/isolate/SendPort/send_A02_t02: Fail, OK # co19 issue 293
LibTest/isolate/SendPort/send_A02_t03: Fail, OK # co19 issue 293
@@ -313,8 +322,6 @@
LibTest/core/double/operator_remainder_A01_t04: Fail
[ $compiler == dart2js ]
-Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A01_t10: Fail # TODO(ahe): Enforce optional parameter semantics.
-Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A01_t11: Fail # TODO(ahe): Enforce optional parameter semantics.
Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A03_t03: Fail # TODO(ahe): Enforce optional parameter semantics.
Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A01_t01: Fail # http://dartbug.com/5026
Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A03_t04: Fail # TODO(ahe): Enforce optional parameter semantics.
@@ -332,19 +339,6 @@
Language/11_Expressions/22_Equality_A02_t03: Fail # Compile-time error: unexpected token 'equals'
Language/11_Expressions/05_Strings_A20_t01: Fail # Runtime error: Expect.identical(expected: <abyr, abyr
LibTest/isolate/isolate_api/spawnUri_A02_t01: Fail # Runtime error: Expect.throws() fails
-Language/11_Expressions/05_Strings/1_String_Interpolation_A03_t02: Fail # Runtime error: TypeError: Cannot call method '$call$0' of undefined
-Language/11_Expressions/05_Strings/1_String_Interpolation_A04_t02: Fail # Runtime error: TypeError: Cannot call method '$call$0' of undefined
-Language/11_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A08_t01: Fail # Runtime error: TypeError: Cannot call method '$call$0' of undefined
-Language/11_Expressions/15_Method_Invocation/3_Static_Invocation_A04_t02: Fail # Runtime error: TypeError: Cannot call method '$call$0' of undefined
-Language/11_Expressions/15_Method_Invocation/3_Static_Invocation_A04_t03: Fail # Runtime error: TypeError: Cannot call method '$call$0' of undefined
-Language/11_Expressions/15_Method_Invocation/3_Static_Invocation_A05_t01: Fail # Runtime error: TypeError: Cannot call method '$call$0' of undefined
-Language/11_Expressions/15_Method_Invocation/3_Static_Invocation_A06_t02: Fail # Runtime error: TypeError: Cannot call method '$call$0' of undefined
-Language/11_Expressions/15_Method_Invocation/4_Super_Invocation_A03_t02: Fail # Runtime error: TypeError: Cannot call method '$call$0' of undefined
-Language/11_Expressions/15_Method_Invocation/4_Super_Invocation_A03_t03: Fail # Runtime error: TypeError: Cannot call method '$call$0' of undefined
-Language/11_Expressions/15_Method_Invocation/4_Super_Invocation_A07_t01: Fail # Runtime error: TypeError: Cannot call method '$call$0' of undefined
-Language/11_Expressions/15_Method_Invocation/4_Super_Invocation_A08_t02: Fail # Runtime error: TypeError: Cannot call method '$call$0' of undefined
-Language/11_Expressions/15_Method_Invocation/4_Super_Invocation_A02_t04: Fail # Runtime error: TypeError: Cannot call method '$call$2' of undefined
-Language/11_Expressions/14_Function_Invocation/4_Function_Expression_Invocation_A03_t01: Fail # Runtime error: TypeError: Object 1 has no method '$call$0'
LibTest/isolate/isolate_api/spawnUri_A01_t01: Fail # Runtime error: UnsupportedError: Currently spawnUri is not supported without web workers.
LibTest/isolate/isolate_api/spawnUri_A01_t02: Fail # Runtime error: UnsupportedError: Currently spawnUri is not supported without web workers.
LibTest/isolate/isolate_api/spawnUri_A01_t03: Fail # Runtime error: UnsupportedError: Currently spawnUri is not supported without web workers.
@@ -390,9 +384,6 @@
Language/11_Expressions/22_Equality_A01_t01: Fail, OK # Function declaration takes precedence over function expression.
Language/11_Expressions/28_Postfix_Expressions_A01_t01: Fail, OK # A map literal cannot start an expression statement.
-LibTest/core/String/String_class_A02_t01: Pass, Fail, OK # issue 6418 compiler cancelled: Unhandled non-BMP character: U+10000
-LibTest/core/String/charCodeAt_A01_t01: Fail, OK # compiler cancelled: Unhandled non-BMP character: U+10000
-LibTest/core/String/charCodes_A01_t01: Fail, OK # compiler cancelled: Unhandled non-BMP character: U+10000
Language/06_Functions/1_Function_Declaration_A02_t03: Fail, OK # co19 issue 210
Language/06_Functions/1_Function_Declaration_A03_t03: Fail, OK # co19 issue 210
@@ -410,36 +401,10 @@
LibTest/core/int/hashCode_A01_t01: Fail, OK # co19 issue 308
-LibTest/core/NoSuchMethodError/NoSuchMethodError_A01_t01: Fail, OK # co19 issue 300
-LibTest/core/NoSuchMethodError/toString_A01_t01: Fail, OK # co19 issue 300
-
-LibTest/core/String/contains_A01_t01: Fail, OK # co19 issue 314
-LibTest/core/String/contains_A01_t03: Fail, OK # co19 issue 314
-
-LibTest/core/NotImplementedException/NotImplementedException_A01_t01: Fail, OK # co19 issue 315
-LibTest/core/NotImplementedException/toString_A01_t01: Fail, OK # co19 issue 315
-
-LibTest/core/IndexOutOfRangeException/IndexOutOfRangeException_A01_t01: Fail, OK # co19 issue 290
-LibTest/core/IndexOutOfRangeException/toString_A01_t01: Fail, OK # co19 issue 290
-LibTest/core/List/getRange_A04_t01: Fail, OK # co19 issue 290
-LibTest/core/List/insertRange_A06_t01: Fail, OK # co19 issue 290
-LibTest/core/List/last_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/List/length_A05_t01: Fail, OK # co19 issue 290
-LibTest/core/List/List_A01_t01: Fail, OK # co19 issue 290
-LibTest/core/List/operator_subscript_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/List/operator_subscripted_assignment_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/List/removeLast_A01_t02: Fail, OK # co19 issue 290
-LibTest/core/List/removeRange_A05_t01: Fail, OK # co19 issue 290
-LibTest/core/List/setRange_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/List/setRange_A02_t02: Fail, OK # co19 issue 290
-LibTest/core/List/setRange_A03_t01: Fail, OK # co19 issue 290
-LibTest/core/List/setRange_A03_t02: Fail, OK # co19 issue 290
-LibTest/core/Match/group_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/Match/groups_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/Match/operator_subscript_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/String/charCodeAt_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/String/operator_subscript_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/String/substring_A02_t01: Fail, OK # co19 issue 290
+Language/03_Overview/2_Privacy_A01_t11: Pass, OK # co19 issue 316
+Language/11_Expressions/14_Function_Invocation/4_Function_Expression_Invocation_A03_t01: Pass, OK # co19 issue 316
+LibTest/core/Future/chain_A03_t01: Fail, OK # co19 issue 328
+LibTest/core/Future/transform_A03_t01: Fail, OK # co19 issue 328
[ $compiler == dart2js && $jscl ]
LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A04_t01: Fail, Pass # issue 3333
@@ -475,7 +440,6 @@
LibTest/core/int/toDouble_A01_t01: Fail, OK # Requires big int.
LibTest/core/int/toRadixString_A01_t01: Fail, OK # Bad test: uses Expect.fail, Expect.throws, assumes case of result, and uses unsupported radixes.
LibTest/core/String/contains_A01_t02: Fail, OK # co19 issue 105.
-Language/07_Classes/1_Instance_Methods/2_Operators_A02_t01: Fail, OK # Expects negative result from bit-operation.
[ $compiler == dart2js && $system == macos ]
@@ -495,12 +459,9 @@
Language/03_Overview/1_Scoping_A02_t07: Fail # duplicate definition of f(var f){f();}
Language/03_Overview/1_Scoping_A02_t12: Fail # duplicate definition of x=42
Language/03_Overview/2_Privacy_A01_t06: Fail # cannot resolve type _inaccessibleFuncType
-Language/03_Overview/2_Privacy_A01_t11: Fail # internal error: super property read not implemented
-Language/03_Overview/2_Privacy_A01_t14: Fail # duplicate definition of _(var _)=> _
Language/11_Expressions/01_Constants_A12_t01: Fail # internal error: CompileTimeConstantEvaluator not implemented
Language/11_Expressions/22_Equality_A05_t01: Fail # != cannot be called on super
-Language/11_Expressions/27_Unary_Expressions_A01_t01: Fail # ! cannot be called on super
Language/11_Expressions/27_Unary_Expressions_A01_t10: Fail # cannot deal with super in complex assignments
Language/11_Expressions/30_Identifier_Reference_A02_t01: Fail # Pseudo keyword "abstract".
@@ -572,7 +533,6 @@
Language/07_Classes/1_Instance_Methods/2_Operators_A07_t02: Fail # Checks that a compile-time error is produced if a user-defined operator [] specifies an optional named parameter in addition to the required one.
Language/07_Classes/1_Instance_Methods/2_Operators_A07_t03: Fail # Checks that a compile-time error is produced if a user-defined operator []= specifies one optional named parameter.
Language/07_Classes/1_Instance_Methods/2_Operators_A07_t04: Fail # Checks that a compile-time error is produced if a user-defined operator []= specifies one optional named parameter in addition to the two required ones
-Language/07_Classes/1_Instance_Methods_A02_t01: Fail # Checks that a compile-time error is produced if m1 has fewer named parameters than m2 (2 vs 3) and neither have any required parameters.
Language/07_Classes/1_Instance_Methods_A02_t02: Fail # Checks that a compile-time error is produced if m1 has fewer named parameters than m2 (1 vs. 0) and neither have any required parameters.
Language/07_Classes/1_Instance_Methods_A02_t05: Fail # Checks that a compile-time error is produced if m1 has almost the same set of named parameters as m2 except for one of them having a different name.
Language/07_Classes/2_Getters_A01_t03: Fail # Checks that a compile-time error is produced if empty formal parameter list is present.
@@ -615,9 +575,6 @@
Language/11_Expressions/23_Relational_Expressions_A01_t13: Fail # Checks that a relational expression cannot be the operand of another relational expression.
Language/11_Expressions/30_Identifier_Reference_A07_t01: Fail # Checks that it is a compile-time error when a built-in identifier "abstract" is used as a type annotation of a local variable.
Language/12_Statements/03_Variable_Declaration_A04_t01: Fail # Checks that if the variable declaration is prefixed with the const modifier, then variable must be initialized to a constant expression.
-Language/14_Types/3_Type_Declarations/1_Typedef_A07_t01: Fail # Checks that self-referencing typedef is not allowed (return value type annotation has the same name as a type alias).
-Language/14_Types/3_Type_Declarations/1_Typedef_A07_t02: Fail # Checks that self-referencing typedef is not allowed (positional formal parameter type annotation has the same name as a type alias).
-Language/14_Types/3_Type_Declarations/1_Typedef_A07_t03: Fail # Checks that self-referencing typedef is not allowed (optional formal parameter type annotation has the same name as a type alias).
Language/15_Reference/1_Lexical_Rules_A02_t06: Fail # Checks that Unicode whitespaces other than WHITESPACE are not permitted in the source code. Checks symbol U+00a0.
@@ -631,8 +588,6 @@
Language/14_Types/2_Dynamic_Type_System_A02_t01: Fail # http://dartbug.com/5029
-Language/03_Overview/03_Overview_A01_t01: Fail # http://dartbug.com/3903
-
Language/07_Classes/3_Setters_A04_t01: Fail # http://dartbug.com/5023
Language/07_Classes/3_Setters_A04_t02: Fail # http://dartbug.com/5023
Language/07_Classes/3_Setters_A04_t03: Fail # http://dartbug.com/5023
@@ -640,7 +595,6 @@
Language/07_Classes/3_Setters_A04_t05: Fail # http://dartbug.com/5023
Language/07_Classes/3_Setters_A04_t06: Fail # http://dartbug.com/5023
Language/07_Classes/3_Setters_A04_t07: Fail # http://dartbug.com/5023
-Language/07_Classes/3_Setters_A04_t08: Fail # http://dartbug.com/5023
Language/14_Types/3_Type_Declarations/1_Typedef_A02_t01: Fail # http://dartbug.com/5022
Language/14_Types/3_Type_Declarations/1_Typedef_A02_t02: Fail # http://dartbug.com/5022
@@ -657,26 +611,12 @@
Language/14_Types/5_Function_Types_A01_t08: Fail # http://dartbug.com/5022
Language/14_Types/5_Function_Types_A01_t09: Fail # http://dartbug.com/5022
Language/14_Types/5_Function_Types_A01_t11: Fail # http://dartbug.com/5022
-Language/14_Types/5_Function_Types_A01_t12: Fail # http://dartbug.com/5022
-Language/14_Types/5_Function_Types_A01_t13: Fail # http://dartbug.com/5022
-Language/14_Types/5_Function_Types_A01_t14: Fail # http://dartbug.com/5022
-Language/14_Types/5_Function_Types_A01_t15: Fail # http://dartbug.com/5022
-Language/14_Types/5_Function_Types_A01_t16: Fail # http://dartbug.com/5022
-Language/14_Types/5_Function_Types_A01_t17: Fail # http://dartbug.com/5022
-Language/14_Types/5_Function_Types_A01_t18: Fail # http://dartbug.com/5022
-Language/14_Types/5_Function_Types_A01_t19: Fail # http://dartbug.com/5022
-Language/14_Types/5_Function_Types_A01_t20: Fail # http://dartbug.com/5022
-Language/14_Types/5_Function_Types_A01_t21: Fail # http://dartbug.com/5022
-Language/14_Types/5_Function_Types_A01_t22: Fail # http://dartbug.com/5022
-Language/14_Types/5_Function_Types_A01_t23: Fail # http://dartbug.com/5022
Language/13_Libraries_and_Scripts/4_Scripts_A03_t01: Fail # http://dartbug.com/5683
Language/13_Libraries_and_Scripts/4_Scripts_A03_t03: Fail # http://dartbug.com/5683
Language/13_Libraries_and_Scripts/13_Libraries_and_Scripts_A05_t02: Fail # http://dartbug.com/5713
-Language/07_Classes/07_Classes_A01_t20: Fail # http://dartbug.com/6687
-Language/07_Classes/07_Classes_A02_t34: Fail # http://dartbug.com/6687
Language/07_Classes/07_Classes_A03_t10: Fail # http://dartbug.com/6687
@@ -686,7 +626,6 @@
[ $compiler == dart2js ]
Language/14_Types/5_Function_Types_A02_t01: Fail # Expect.isTrue(false) fails.
-Language/14_Types/4_Interface_Types_A05_t03: Fail # http://dartbug.com/5020
Language/14_Types/4_Interface_Types_A08_t06: Fail # http://dartbug.com/5020
Language/14_Types/4_Interface_Types_A10_t01: Fail # http://dartbug.com/5020
Language/14_Types/4_Interface_Types_A10_t02: Fail # http://dartbug.com/5020
diff --git a/tests/co19/co19-runtime.status b/tests/co19/co19-runtime.status
index 068e299..60702b9 100644
--- a/tests/co19/co19-runtime.status
+++ b/tests/co19/co19-runtime.status
@@ -2,33 +2,10 @@
# 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.
-# These tests either wrongly expect a compile-time error or wrongly reject a type error in production mode, co19 issue 282:
-[ $compiler == none && $runtime == vm ]
-Language/13_Libraries_and_Scripts/1_Imports_A03_t05: Fail, OK
-Language/13_Libraries_and_Scripts/1_Imports_A03_t08: Fail, OK
-Language/13_Libraries_and_Scripts/1_Imports_A03_t25: Fail, OK
-Language/13_Libraries_and_Scripts/1_Imports_A03_t28: Fail, OK
-Language/13_Libraries_and_Scripts/1_Imports_A03_t45: Fail, OK
-Language/13_Libraries_and_Scripts/1_Imports_A03_t48: Fail, OK
-Language/13_Libraries_and_Scripts/1_Imports_A03_t65: Fail, OK
-Language/13_Libraries_and_Scripts/1_Imports_A03_t68: Fail, OK
-[ $compiler == none && $runtime == vm && $unchecked ]
-Language/13_Libraries_and_Scripts/1_Imports_A03_t02: Fail, OK
-Language/13_Libraries_and_Scripts/1_Imports_A03_t22: Fail, OK
-Language/13_Libraries_and_Scripts/1_Imports_A03_t42: Fail, OK
-Language/13_Libraries_and_Scripts/1_Imports_A03_t62: Fail, OK
-[ $compiler == none && $runtime == vm && $checked ]
-Language/13_Libraries_and_Scripts/1_Imports_A03_t06: Fail, OK
-Language/13_Libraries_and_Scripts/1_Imports_A03_t66: Fail, OK
-
-
[ $compiler == none && $runtime == vm ]
Language/13_Libraries_and_Scripts/1_Imports_A02_t21: Crash # TODO(vm-team): Please triage this crash.
Language/13_Libraries_and_Scripts/1_Imports_A02_t22: Crash # TODO(vm-team): Please triage this crash.
-Language/11_Expressions/30_Identifier_Reference_A05_t04: Fail, OK # co19 issue 302
-
-
Language/05_Variables/05_Variables_A05_t04: Fail # TODO(vm-team): Please triage this failure.
Language/05_Variables/05_Variables_A05_t11: Fail # TODO(vm-team): Please triage this failure.
Language/05_Variables/05_Variables_A05_t13: Fail # TODO(vm-team): Please triage this failure.
@@ -36,14 +13,12 @@
Language/05_Variables/05_Variables_A05_t15: Fail # TODO(vm-team): Please triage this failure.
Language/05_Variables/1_Evaluation_of_Implicit_Variable_Getters_A01_t02: Fail # TODO(vm-team): Please triage this failure.
Language/05_Variables/1_Evaluation_of_Implicit_Variable_Getters_A01_t05: Fail # TODO(vm-team): Please triage this failure.
-Language/07_Classes/07_Classes_A07_t03: Fail, OK # co19 issue 306
-Language/07_Classes/07_Classes_A07_t06: Fail, OK # co19 issue 306
+Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A01_t10: Fail # TODO(vm-team): Please triage this failure.
Language/07_Classes/2_Getters_A01_t03: Fail # Expects compile-time error when getter has empty parameter list.
Language/07_Classes/2_Getters_A01_t05: Fail # Expects compile-time error when getter has empty parameter list.
-Language/07_Classes/3_Setters_A04_t03: Fail, OK # Syntax error, issue 304
-Language/07_Classes/3_Setters_A04_t06: Fail, OK # Syntax error, issue 304
-Language/07_Classes/3_Setters_A04_t07: Fail, OK # test error, issue 305
-Language/07_Classes/3_Setters_A04_t08: Fail, OK # test error, issue 305
+Language/07_Classes/3_Setters_A04_t01: Fail # TODO(vm-team): Please triage this failure.
+Language/07_Classes/3_Setters_A04_t04: Fail # TODO(vm-team): Please triage this failure.
+Language/07_Classes/3_Setters_A04_t05: Fail # TODO(vm-team): Please triage this failure.
Language/07_Classes/4_Abstract_Instance_Members_A03_t02: Fail # TODO(vm-team): Please triage this failure.
Language/07_Classes/4_Abstract_Instance_Members_A03_t03: Fail # TODO(vm-team): Please triage this failure.
Language/07_Classes/4_Abstract_Instance_Members_A03_t04: Fail # TODO(vm-team): Please triage this failure.
@@ -63,6 +38,8 @@
Language/11_Expressions/01_Constants_A05_t01: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/01_Constants_A06_t01: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/01_Constants_A14_t01: Fail # TODO(vm-team): Please triage this failure.
+Language/11_Expressions/01_Constants_A20_t02: Fail # TODO(vm-team): Please triage this failure.
+Language/11_Expressions/01_Constants_A20_t03: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/05_Strings/1_String_Interpolation_A01_t04: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/05_Strings/1_String_Interpolation_A01_t05: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/05_Strings/1_String_Interpolation_A01_t06: Fail # TODO(vm-team): Please triage this failure.
@@ -72,12 +49,10 @@
Language/11_Expressions/11_Instance_Creation/1_New_A02_t05: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/11_Instance_Creation/1_New_A09_t09: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/11_Instance_Creation/2_Const_A10_t01: Fail # TODO(vm-team): Please triage this failure.
-Language/11_Expressions/14_Function_Invocation/4_Function_Expression_Invocation_A03_t01: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/14_Function_Invocation/4_Function_Expression_Invocation_A05_t02: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/15_Method_Invocation/3_Static_Invocation_A04_t08: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/17_Getter_Invocation_A02_t01: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/18_Assignment_A05_t02: Fail # TODO(vm-team): Please triage this failure.
-Language/11_Expressions/18_Assignment_A05_t04: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/18_Assignment_A05_t05: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/19_Conditional_A01_t10: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/19_Conditional_A01_t11: Fail # TODO(vm-team): Please triage this failure.
@@ -90,6 +65,7 @@
Language/11_Expressions/20_Logical_Boolean_Expressions_A01_t12: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/20_Logical_Boolean_Expressions_A01_t13: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/20_Logical_Boolean_Expressions_A01_t14: Fail # TODO(vm-team): Please triage this failure.
+Language/11_Expressions/20_Logical_Boolean_Expressions_A01_t15: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/21_Bitwise_Expressions_A01_t12: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/21_Bitwise_Expressions_A01_t13: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/21_Bitwise_Expressions_A01_t14: Fail # TODO(vm-team): Please triage this failure.
@@ -147,11 +123,6 @@
Language/11_Expressions/30_Identifier_Reference_A08_t02: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/31_Type_Test_A01_t02: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/31_Type_Test_A01_t04: Fail # TODO(vm-team): Please triage this failure.
-Language/11_Expressions/31_Type_Test_A05_t01: Fail # TODO(vm-team): Please triage this failure.
-Language/11_Expressions/31_Type_Test_A05_t02: Fail # TODO(vm-team): Please triage this failure.
-Language/11_Expressions/31_Type_Test_A05_t03: Fail # TODO(vm-team): Please triage this failure.
-Language/11_Expressions/32_Type_Cast_A04_t01: Fail # TODO(vm-team): Please triage this failure.
-Language/11_Expressions/32_Type_Cast_A04_t02: Fail # TODO(vm-team): Please triage this failure.
Language/12_Statements/04_Local_Function_Declaration_A02_t02: Fail # TODO(vm-team): Please triage this failure.
Language/12_Statements/06_For_A01_t11: Fail # TODO(vm-team): Please triage this failure.
Language/12_Statements/09_Switch_A01_t02: Fail # TODO(vm-team): Please triage this failure.
@@ -163,28 +134,25 @@
Language/12_Statements/09_Switch_A06_t02: Fail # TODO(vm-team): Please triage this failure.
Language/12_Statements/10_Try_A11_t01: Fail # TODO(vm-team): Please triage this failure.
Language/12_Statements/12_Labels_A01_t03: Fail # TODO(vm-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/13_Libraries_and_Scripts_A03_t01: Fail # TODO(vm-team): Please triage this failure.
Language/13_Libraries_and_Scripts/13_Libraries_and_Scripts_A05_t04: Fail # TODO(vm-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A02_t01: Fail, OK # co 19 issue 313
-Language/13_Libraries_and_Scripts/1_Imports_A02_t02: Fail, OK # co 19 issue 313
-Language/13_Libraries_and_Scripts/1_Imports_A02_t16: Fail # TODO(vm-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A02_t17: Fail # TODO(vm-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A02_t18: Fail # TODO(vm-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/1_Imports_A02_t19: Fail # TODO(vm-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/2_Exports_A01_t15: Fail, OK # co19 issue 311.
-Language/13_Libraries_and_Scripts/2_Exports_A01_t16: Fail, OK # co19 issue 312.
+Language/13_Libraries_and_Scripts/1_Imports_A02_t29: Fail # TODO(vm-team): Please triage this failure.
+Language/13_Libraries_and_Scripts/1_Imports_A05_t01: Fail # TODO(vm-team): Please triage this failure.
Language/13_Libraries_and_Scripts/2_Exports_A04_t02: Fail # TODO(vm-team): Please triage this failure.
Language/13_Libraries_and_Scripts/2_Exports_A04_t03: Fail # TODO(vm-team): Please triage this failure.
Language/13_Libraries_and_Scripts/2_Exports_A04_t05: Fail # TODO(vm-team): Please triage this failure.
Language/13_Libraries_and_Scripts/2_Exports_A04_t06: Fail # TODO(vm-team): Please triage this failure.
-Language/13_Libraries_and_Scripts/4_Scripts_A01_t16: Fail # TODO(vm-team): Please triage this failure.
-Language/14_Types/5_Function_Types_A02_t01: Fail # TODO(vm-team): Please triage this failure.
-LibTest/core/Queue/Queue.from_A01_t02: Fail # TODO(vm-team): Please triage this failure.
-LibTest/core/Set/Set.from_A01_t02: Fail # TODO(vm-team): Please triage this failure.
+Language/13_Libraries_and_Scripts/4_Scripts_A01_t20: Fail # TODO(vm-team): Please triage this failure.
+Language/13_Libraries_and_Scripts/5_URIs_A01_t01: Fail # TODO(vm-team): Please triage this failure.
+Language/13_Libraries_and_Scripts/5_URIs_A01_t11: Fail # TODO(vm-team): Please triage this failure.
+Language/13_Libraries_and_Scripts/5_URIs_A01_t21: Fail # TODO(vm-team): Please triage this failure.
+Language/14_Types/5_Function_Types_A06_t01: Fail # TODO(vm-team): Please triage this failure.
+LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A01_t01: Fail # TODO(vm-team): Please triage this failure.
+LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A02_t01: Fail # TODO(vm-team): Please triage this failure.
+LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A06_t01: Fail # TODO(vm-team): Please triage this failure.
+LibTest/core/double/parse_A02_t01: Fail # TODO(vm-team): Please triage this failure.
LibTest/isolate/isolate_api/spawnUri_A01_t03: Fail # TODO(vm-team): Please triage this failure.
LibTest/isolate/isolate_api/spawnUri_A01_t04: Fail # TODO(vm-team): Please triage this failure.
LibTest/math/Random/nextDouble_A01_t01: Fail # TODO(vm-team): Please triage this failure.
-LibTest/math/parseDouble_A02_t01: Fail # TODO(vm-team): Please triage this failure.
LibTest/math/pow_A01_t01: Fail # TODO(vm-team): Please triage this failure.
LibTest/math/pow_A11_t01: Fail # TODO(vm-team): Please triage this failure.
LibTest/math/pow_A13_t01: Fail # TODO(vm-team): Please triage this failure.
@@ -192,49 +160,25 @@
LibTest/isolate/isolate_api/port_A01_t01: Skip # Times out.
-LibTest/core/String/String_class_A02_t01: Fail, OK # co19 issue 284
-LibTest/core/String/charCodeAt_A01_t01: Fail, OK # co19 issue 284
-LibTest/core/String/charCodes_A01_t01: Fail, OK # co19 issue 284
-
Language/06_Functions/1_Function_Declaration_A02_t03: Fail # issue 6058
Language/06_Functions/1_Function_Declaration_A03_t03: Fail # issue 6058
Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A03_t01: Fail # issue 6085
Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A03_t02: Fail # issue 6085
Language/06_Functions/2_Formal_Parameters/2_Optional_Formals_A03_t03: Fail # issue 6085
-LibTest/core/EmptyQueueException/EmptyQueueException_A01_t01: Fail, OK # co19 issue 288
-LibTest/core/EmptyQueueException/toString_A01_t01: Fail, OK # co19 issue 288
-LibTest/core/List/iterator_next_A02_t01: Fail, OK # co19 issue 288
-LibTest/core/NoMoreElementsException/NoMoreElementsException_A01_t01: Fail, OK # co19 issue 288
-LibTest/core/NoMoreElementsException/toString_A01_t01: Fail, OK # co19 issue 288
-LibTest/core/Queue/iterator_next_A02_t01: Fail, OK # co19 issue 288
-LibTest/core/Queue/removeFirst_A02_t01: Fail, OK # co19 issue 288
-LibTest/core/Queue/removeLast_A02_t01: Fail, OK # co19 issue 288
-
-LibTest/core/NoSuchMethodError/NoSuchMethodError_A01_t01: Fail, OK # co19 issue 300
-LibTest/core/NoSuchMethodError/toString_A01_t01: Fail, OK # co19 issue 300
[ $compiler == none && $runtime == vm && $checked ]
-Language/12_Statements/05_If_A02_t01: Fail # TODO(vm-team): Please triage this failure.
Language/12_Statements/09_Switch_A05_t01: Fail # TODO(vm-team): Please triage this failure.
-Language/14_Types/7_Type_Void_A04_t02: Fail # TODO(vm-team): Please triage this failure.
-Language/14_Types/7_Type_Void_A04_t03: Fail # TODO(vm-team): Please triage this failure.
-Language/14_Types/7_Type_Void_A04_t04: Fail # TODO(vm-team): Please triage this failure.
-Language/14_Types/7_Type_Void_A04_t05: Fail # TODO(vm-team): Please triage this failure.
-LibTest/core/Map/putIfAbsent_A01_t07: Fail # TODO(vm-team): Please triage this failure.
-LibTest/core/Map/putIfAbsent_A01_t08: Fail # TODO(vm-team): Please triage this failure.
-
-Language/14_Types/7_Type_Void_A04_t02: Fail, OK # co19 issue 158
-Language/14_Types/7_Type_Void_A04_t03: Fail, OK # co19 issue 158
-Language/14_Types/7_Type_Void_A04_t04: Fail, OK # co19 issue 158
-Language/14_Types/7_Type_Void_A04_t05: Fail, OK # co19 issue 158
+Language/14_Types/5_Function_Types_A03_t12: Fail # TODO(vm-team): Please triage this failure.
Language/11_Expressions/11_Instance_Creation_A05_t02: Fail # co19 issue 234
[ $compiler == none && $runtime == vm && $unchecked ]
-Language/14_Types/2_Dynamic_Type_System_A02_t01: Fail # TODO(vm-team): Please triage this failure.
+Language/13_Libraries_and_Scripts/1_Imports_A03_t31: Fail # TODO(vm-team): Please triage this failure.
LibTest/core/Date/Date.fromMillisecondsSinceEpoch_A03_t01: Fail # TODO(vm-team): Please triage this failure.
+Language/11_Expressions/11_Instance_Creation/2_Const_A03_t01: Fail, OK # co19 issue 282
+Language/11_Expressions/11_Instance_Creation/2_Const_A03_t02: Fail, OK # co19 issue 282
[ $compiler == none && $runtime == vm ]
# Not properly reporting exception in initializer expressions
@@ -270,7 +214,6 @@
Language/11_Expressions/07_Maps_A01_t01: Skip # co19 issue 91: map literals illegal at statement beginning.
Language/11_Expressions/14_Function_Invocation/4_Function_Expression_Invocation_A05_t01: Fail # issue 1604.
-Language/11_Expressions/27_Unary_Expressions_A01_t01: Fail # issue 1288 (unary super operator call)
LibTest/core/List/every_A03_t01: Skip # Promise removed (co19 issue #79)
LibTest/core/List/filter_A03_t01: Skip # Promise removed (co19 issue #79)
@@ -286,31 +229,8 @@
# New failures
LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A06_t02: Fail
-LibTest/core/NotImplementedException/NotImplementedException_A01_t01: Fail, OK # co19 issue 315
-LibTest/core/NotImplementedException/toString_A01_t01: Fail, OK # co19 issue 315
-
-LibTest/core/IndexOutOfRangeException/IndexOutOfRangeException_A01_t01: Fail, OK # co19 issue 290
-LibTest/core/IndexOutOfRangeException/toString_A01_t01: Fail, OK # co19 issue 290
-LibTest/core/List/getRange_A04_t01: Fail, OK # co19 issue 290
-LibTest/core/List/insertRange_A06_t01: Fail, OK # co19 issue 290
-LibTest/core/List/last_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/List/length_A05_t01: Fail, OK # co19 issue 290
-LibTest/core/List/List_A01_t01: Fail, OK # co19 issue 290
-LibTest/core/List/operator_subscript_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/List/operator_subscripted_assignment_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/List/removeLast_A01_t02: Fail, OK # co19 issue 290
-LibTest/core/List/removeRange_A05_t01: Fail, OK # co19 issue 290
-LibTest/core/List/setRange_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/List/setRange_A02_t02: Fail, OK # co19 issue 290
-LibTest/core/List/setRange_A03_t01: Fail, OK # co19 issue 290
-LibTest/core/List/setRange_A03_t02: Fail, OK # co19 issue 290
-LibTest/core/Match/group_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/Match/groups_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/Match/operator_subscript_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/String/charCodeAt_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/String/operator_subscript_A02_t01: Fail, OK # co19 issue 290
-LibTest/core/String/substring_A02_t01: Fail, OK # co19 issue 290
-
+LibTest/core/Future/chain_A03_t01: Fail, OK # co19 issue 328
+LibTest/core/Future/transform_A03_t01: Fail, OK # co19 issue 328
[ $compiler == none && $runtime == vm ]
LibTest/core/Date/Date.fromString_A03_t01: Fail # Issue co19 - 121
@@ -367,32 +287,14 @@
LibTest/core/Map/getValues_A01_t02: Fail, OK # co19 issue 293
LibTest/core/Map/getValues_A01_t01: Fail, OK # co19 issue 293
-LibTest/core/Stopwatch/Stopwatch_A01_t01: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/elapsed_A01_t03: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/elapsed_A01_t01: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/elapsed_A01_t02: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/elapsedInUs_A01_t01: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/elapsedInMs_A01_t01: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/start_A01_t01: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/start_A01_t02: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/start_A01_t03: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/stop_A01_t01: Fail, OK # co19 issue 297
-LibTest/core/Stopwatch/frequency_A01_t01: Fail, OK # co19 issue 297
-
LibTest/core/Match/operator_subscript_A01_t01: Fail, OK # co19 issue 294
LibTest/core/RegExp/firstMatch_A01_t01: Fail, OK # co19 issue 294
LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A02_t01: Fail, OK # co19 issue 294
LibTest/core/RegExp/Pattern_semantics/firstMatch_Term_A03_t01: Fail, OK # co19 issue 294
-LibTest/core/Queue/first_A02_t01: Fail, OK # co19 issue 291
-LibTest/core/Queue/last_A02_t01: Fail, OK # co19 issue 291
-
Language/11_Expressions/07_Maps_A07_t03: Fail, OK # co19 issue 287
Language/11_Expressions/07_Maps_A04_t02: Fail, OK # co19 issue 287
-LibTest/core/RegExp/RegExp_A01_t04: Fail, OK # co19 issue 314
-LibTest/core/String/contains_A01_t01: Fail, OK # co19 issue 314
-
LibTest/core/Map/getValues_A01_t02: Fail, OK # co19 issue 287
[ $compiler == none && $runtime == vm ]
@@ -408,13 +310,7 @@
[ $compiler == none && $runtime == vm ]
Language/07_Classes/07_Classes_A02_t29: Fail
Language/07_Classes/07_Classes_A02_t31: Fail
-Language/11_Expressions/05_Strings/1_String_Interpolation_A03_t02: Fail
-Language/11_Expressions/05_Strings/1_String_Interpolation_A04_t02: Fail
Language/11_Expressions/05_Strings_A20_t01: Fail
-Language/11_Expressions/15_Method_Invocation/3_Static_Invocation_A04_t02: Fail # Issue 1604, exception should be NoSuchMethodException instead of ObjectNotClosureException
-Language/11_Expressions/15_Method_Invocation/3_Static_Invocation_A04_t03: Fail # Issue 1604, exception should be NoSuchMethodException instead of ObjectNotClosureException
-Language/11_Expressions/15_Method_Invocation/3_Static_Invocation_A05_t01: Fail # Issue 1604, exception should be NoSuchMethodException instead of ObjectNotClosureException
-Language/11_Expressions/15_Method_Invocation/3_Static_Invocation_A06_t02: Fail # Issue 1604, exception should be NoSuchMethodException instead of ObjectNotClosureException
LibTest/isolate/ReceivePort/receive_A01_t02: Fail
LibTest/isolate/isolate_api/spawnUri_A01_t03: Crash
LibTest/isolate/isolate_api/spawnUri_A01_t04: Crash
@@ -425,18 +321,6 @@
Language/11_Expressions/15_Method_Invocation/1_Ordinary_Invocation_A05_t03: Fail
-# function 'func' not found in super class, getter 'func' should be invoked first.
-Language/11_Expressions/15_Method_Invocation/4_Super_Invocation_A02_t04: Fail # co19 issue 251 or issue 5732
-Language/11_Expressions/15_Method_Invocation/4_Super_Invocation_A03_t02: Fail # co19 issue 251 or issue 5732
-Language/11_Expressions/15_Method_Invocation/4_Super_Invocation_A03_t03: Fail # co19 issue 251 or issue 5732
-Language/11_Expressions/15_Method_Invocation/4_Super_Invocation_A07_t01: Fail # co19 issue 251 or issue 5732
-Language/11_Expressions/15_Method_Invocation/4_Super_Invocation_A08_t02: Fail # co19 issue 251 or issue 5732
-
-
-# invalid operator overloading
-Language/07_Classes/1_Instance_Methods/2_Operators_A02_t01: Fail
-
-
# parameter name or type expected
Language/07_Classes/6_Constructors/1_Generative_Constructors_A15_t07: Fail
diff --git a/tests/compiler/dart2js/array_static_intercept_test.dart b/tests/compiler/dart2js/array_static_intercept_test.dart
index d75efea..a5b343a 100644
--- a/tests/compiler/dart2js/array_static_intercept_test.dart
+++ b/tests/compiler/dart2js/array_static_intercept_test.dart
@@ -15,6 +15,6 @@
main() {
String generated = compile(TEST_ONE, entry: 'foo');
Expect.isTrue(generated.contains(r'.add$1('));
- Expect.isTrue(generated.contains(r'.removeLast('));
+ Expect.isTrue(generated.contains(r'.removeLast$0('));
Expect.isTrue(generated.contains(r'.get$length('));
}
diff --git a/tests/compiler/dart2js/builtin_interceptor_test.dart b/tests/compiler/dart2js/builtin_interceptor_test.dart
index f5a9b2f..90cdfcc 100644
--- a/tests/compiler/dart2js/builtin_interceptor_test.dart
+++ b/tests/compiler/dart2js/builtin_interceptor_test.dart
@@ -6,10 +6,12 @@
const String TEST_ONE = r"""
foo(String a) {
+ // Make sure the string class is registered.
+ var c = 'foo';
// index into the parameter and move into a loop to make sure we'll get a
// type guard.
for (int i = 0; i < 1; i++) {
- print(a[0]);
+ print(a[0] + c);
}
return a.length;
}
@@ -35,7 +37,7 @@
main() {
String generated = compile(TEST_ONE, entry: 'foo');
- Expect.isTrue(generated.contains("return a.length;"));
+ Expect.isTrue(generated.contains("a.length"));
generated = compile(TEST_TWO, entry: 'foo');
Expect.isTrue(generated.contains("return 3;"));
@@ -44,5 +46,6 @@
Expect.isTrue(generated.contains("return 3;"));
generated = compile(TEST_FOUR, entry: 'foo');
- Expect.isTrue(generated.contains("push(2);"));
+ // TODO(6829): Re-enable this test.
+ // Expect.isTrue(generated.contains("push(2);"));
}
diff --git a/tests/compiler/dart2js/class_codegen_test.dart b/tests/compiler/dart2js/class_codegen_test.dart
index 6f751c7..51b2d07 100644
--- a/tests/compiler/dart2js/class_codegen_test.dart
+++ b/tests/compiler/dart2js/class_codegen_test.dart
@@ -64,14 +64,14 @@
twoClasses() {
String generated = compileAll(TEST_ONE);
- Expect.isTrue(generated.contains('\$.A = {"": [],\n "super": "Object"'));
- Expect.isTrue(generated.contains('\$.B = {"": [],\n "super": "Object"'));
+ Expect.isTrue(generated.contains('\$.A = {\n "super": "Object"'));
+ Expect.isTrue(generated.contains('\$.B = {\n "super": "Object"'));
}
subClass() {
checkOutput(String generated) {
- Expect.isTrue(generated.contains('\$.A = {"": [],\n "super": "Object"'));
- Expect.isTrue(generated.contains('\$.B = {"": [],\n "super": "A"'));
+ Expect.isTrue(generated.contains('\$.A = {\n "super": "Object"'));
+ Expect.isTrue(generated.contains('\$.B = {\n "super": "A"'));
}
checkOutput(compileAll(TEST_TWO));
diff --git a/tests/compiler/dart2js/constant_folding_test.dart b/tests/compiler/dart2js/constant_folding_test.dart
index f803b25..482b8da 100644
--- a/tests/compiler/dart2js/constant_folding_test.dart
+++ b/tests/compiler/dart2js/constant_folding_test.dart
@@ -46,6 +46,6 @@
regexp = new RegExp(r'4 === c');
Expect.isTrue(regexp.hasMatch(generated));
- regexp = new RegExp("'foo' === d");
+ regexp = new RegExp('"foo" === d');
Expect.isTrue(regexp.hasMatch(generated));
}
diff --git a/tests/compiler/dart2js/dart_backend_test.dart b/tests/compiler/dart2js/dart_backend_test.dart
index 026e015..b6824c6 100644
--- a/tests/compiler/dart2js/dart_backend_test.dart
+++ b/tests/compiler/dart2js/dart_backend_test.dart
@@ -692,6 +692,22 @@
continuation: (String result) { Expect.equals(expectedResult, result); });
}
+testUnresolvedNamedConstructor() {
+ var src = '''
+class A {
+ A() {}
+}
+
+main() {
+ new A();
+ new A.named();
+}
+''';
+ var expectedResult = "class A{A(){}}main(){new A();new p_Unresolved();}";
+ testDart2Dart(src,
+ continuation: (String result) { Expect.equals(expectedResult, result); });
+}
+
main() {
testSimpleFileUnparse();
testTopLevelField();
@@ -722,4 +738,5 @@
testDeclarationTypePlaceholders();
testPlatformLibraryMemberNamesAreFixed();
testConflictsWithCoreLib();
+ testUnresolvedNamedConstructor();
}
diff --git a/tests/compiler/dart2js/mock_compiler.dart b/tests/compiler/dart2js/mock_compiler.dart
index 0d327af..42b0300 100644
--- a/tests/compiler/dart2js/mock_compiler.dart
+++ b/tests/compiler/dart2js/mock_compiler.dart
@@ -48,13 +48,13 @@
assertHelper(a){}''';
const String DEFAULT_INTERCEPTORSLIB = r'''
- add$1(receiver, value) {}
- get$length(receiver) {}
- filter(receiver, predicate) {}
- removeLast(receiver) {}
- iterator(receiver) {}
- next(receiver) {}
- hasNext(receiver) {}''';
+ class JSArray {
+ var length;
+ }
+ class JSString {
+ var length;
+ }
+ getInterceptor(x) {}''';
const String DEFAULT_CORELIB = r'''
print(var obj) {}
diff --git a/tests/compiler/dart2js/no_constructor_body_test.dart b/tests/compiler/dart2js/no_constructor_body_test.dart
index ea1a6b2..2193286 100644
--- a/tests/compiler/dart2js/no_constructor_body_test.dart
+++ b/tests/compiler/dart2js/no_constructor_body_test.dart
@@ -18,5 +18,5 @@
main() {
String generated = compileAll(TEST);
Expect.isTrue(
- generated.contains('\$.A = {"": [],\n "super": "Object"\n}'));
+ generated.contains('\$.A = {\n "super": "Object"\n}'));
}
diff --git a/tests/compiler/dart2js/no_duplicate_constructor_body_test.dart b/tests/compiler/dart2js/no_duplicate_constructor_body_test.dart
index 8e4eae6..67fa8fc 100644
--- a/tests/compiler/dart2js/no_duplicate_constructor_body_test.dart
+++ b/tests/compiler/dart2js/no_duplicate_constructor_body_test.dart
@@ -16,7 +16,7 @@
main() {
String generated = compileAll(CODE);
- RegExp regexp = new RegExp(r'\$.A = {"":');
+ RegExp regexp = new RegExp(r'\$.A = {\n "super"');
Iterator<Match> matches = regexp.allMatches(generated).iterator();
checkNumberOfMatches(matches, 1);
}
diff --git a/tests/compiler/dart2js/resolver_test.dart b/tests/compiler/dart2js/resolver_test.dart
index 42ae534..95e5b47 100644
--- a/tests/compiler/dart2js/resolver_test.dart
+++ b/tests/compiler/dart2js/resolver_test.dart
@@ -85,9 +85,9 @@
visitor.visit(definition.type);
InterfaceType type = visitor.mapping.getType(definition.type);
Expect.equals(definition.type.typeArguments.length(),
- length(type.arguments));
+ length(type.typeArguments));
int index = 0;
- Link<DartType> arguments = type.arguments;
+ Link<DartType> arguments = type.typeArguments;
while (!arguments.isEmpty) {
Expect.equals(true, index < expectedElements.length);
Expect.equals(expectedElements[index], arguments.head.element);
diff --git a/tests/compiler/dart2js/type_substitution_test.dart b/tests/compiler/dart2js/type_substitution_test.dart
new file mode 100644
index 0000000..8c841cc
--- /dev/null
+++ b/tests/compiler/dart2js/type_substitution_test.dart
@@ -0,0 +1,183 @@
+// Copyright (c) 2012, 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 type_substitution_test;
+
+import "../../../sdk/lib/_internal/compiler/implementation/dart2jslib.dart";
+import "../../../sdk/lib/_internal/compiler/implementation/elements/elements.dart";
+import "../../../sdk/lib/_internal/compiler/implementation/tree/tree.dart";
+import "../../../sdk/lib/_internal/compiler/implementation/util/util.dart";
+import "compiler_helper.dart";
+import "parser_helper.dart";
+import "dart:uri";
+
+DartType getElementType(compiler, String name) {
+ var element = findElement(compiler, name);
+ Expect.isNotNull(element);
+ if (identical(element.kind, ElementKind.CLASS)) {
+ element.ensureResolved(compiler);
+ }
+ return element.computeType(compiler);
+}
+
+DartType getType(compiler, String name) {
+ var clazz = findElement(compiler, "Class");
+ clazz.ensureResolved(compiler);
+ var element = clazz.buildScope().lookup(buildSourceString(name));
+ Expect.isNotNull(element);
+ Expect.equals(element.kind, ElementKind.FUNCTION);
+ FunctionSignature signature = element.computeSignature(compiler);
+
+ // Function signatures are used to be to provide void types (only occuring as
+ // as return types) and (inlined) function types (only occuring as method
+ // parameter types).
+ //
+ // Only a single type is used from each signature. That is, it is not the
+ // intention to check the whole signatures against eachother.
+ if (signature.requiredParameterCount == 0) {
+ // If parameters is empty, use return type.
+ return signature.returnType;
+ } else {
+ // Otherwise use the first argument type.
+ return signature.requiredParameters.head.computeType(compiler);
+ }
+}
+
+int length(Link link) {
+ int count = 0;
+ while (!link.isEmpty) {
+ count++;
+ link = link.tail;
+ }
+ return count;
+}
+
+/**
+ * Test that substitution of [parameters] by [arguments] in the type found
+ * through [name1] is the same as the type found through [name2].
+ */
+bool test(compiler, arguments, parameters,
+ String name1, String name2) {
+ DartType type1 = getType(compiler, name1);
+ DartType type2 = getType(compiler, name2);
+ DartType subst = type1.subst(arguments, parameters);
+ print('$type1.subst($arguments,$parameters)=$subst');
+ Expect.equals(type2, subst,
+ "$type1.subst($arguments,$parameters)=$subst != $type2");
+}
+
+
+void main() {
+ var uri = new Uri.fromComponents(scheme: 'source');
+ var compiler = compilerFor(
+ r"""
+ typedef void Typedef1<X,Y>(X x1, Y y2);
+ typedef void Typedef2<Z>(Z z1);
+
+ class Class<T,S> {
+ void void1() {}
+ void void2() {}
+ void dynamic1(dynamic a) {}
+ void dynamic2(dynamic b) {}
+ void int1(int a) {}
+ void int2(int a) {}
+ void String1(String a) {}
+ void String2(String a) {}
+ void ListInt1(List<int> a) {}
+ void ListInt2(List<int> b) {}
+ void ListT1(List<T> a) {}
+ void ListT2(List<int> b) {}
+ void ListS1(List<S> a) {}
+ void ListS2(List<String> b) {}
+ void ListListT1(List<List<T>> a) {}
+ void ListListT2(List<List<int>> b) {}
+ void ListRaw1(List a) {}
+ void ListRaw2(List b) {}
+ void ListDynamic1(List<dynamic> a) {}
+ void ListDynamic2(List<dynamic> b) {}
+ void MapIntString1(Map<T,S> a) {}
+ void MapIntString2(Map<int,String> b) {}
+ void MapTString1(Map<T,String> a) {}
+ void MapTString2(Map<int,String> b) {}
+ void MapDynamicString1(Map<dynamic,String> a) {}
+ void MapDynamicString2(Map<dynamic,String> b) {}
+ void TypeVarT1(T t1) {}
+ void TypeVarT2(int t2) {}
+ void TypeVarS1(S s1) {}
+ void TypeVarS2(String s2) {}
+ void Function1a(int a(String s1)) {}
+ void Function2a(int b(String s2)) {}
+ void Function1b(void a(T t1, S s1)) {}
+ void Function2b(void b(int t2, String s2)) {}
+ void Function1c(void a(dynamic t1, dynamic s1)) {}
+ void Function2c(void b(dynamic t2, dynamic s2)) {}
+ void Typedef1a(Typedef1<T,S> a) {}
+ void Typedef2a(Typedef1<int,String> b) {}
+ void Typedef1b(Typedef1<dynamic,dynamic> a) {}
+ void Typedef2b(Typedef1<dynamic,dynamic> b) {}
+ void Typedef1c(Typedef1 a) {}
+ void Typedef2c(Typedef1 b) {}
+ void Typedef1d(Typedef2<T> a) {}
+ void Typedef2d(Typedef2<int> b) {}
+ void Typedef1e(Typedef2<S> a) {}
+ void Typedef2e(Typedef2<String> b) {}
+ }
+
+ void main() {}
+ """,
+ uri);
+ compiler.runCompiler(uri);
+
+ DartType Class_T_S = getElementType(compiler, "Class");
+ Expect.isNotNull(Class_T_S);
+ Expect.identical(Class_T_S.kind, TypeKind.INTERFACE);
+ Expect.equals(2, length(Class_T_S.typeArguments));
+
+ DartType T = Class_T_S.typeArguments.head;
+ Expect.isNotNull(T);
+ Expect.identical(T.kind, TypeKind.TYPE_VARIABLE);
+
+ DartType S = Class_T_S.typeArguments.tail.head;
+ Expect.isNotNull(S);
+ Expect.identical(S.kind, TypeKind.TYPE_VARIABLE);
+
+ DartType intType = getType(compiler, "int1");
+ Expect.isNotNull(intType);
+ Expect.identical(intType.kind, TypeKind.INTERFACE);
+
+ DartType StringType = getType(compiler, "String1");
+ Expect.isNotNull(StringType);
+ Expect.identical(StringType.kind, TypeKind.INTERFACE);
+
+ var parameters = new Link<DartType>.fromList(<DartType>[T, S]);
+ var arguments = new Link<DartType>.fromList(<DartType>[intType, StringType]);
+
+ // TODO(johnniwinther): Create types directly from strings to improve test
+ // readability.
+
+ test(compiler, arguments, parameters, "void1", "void2");
+ test(compiler, arguments, parameters, "dynamic1", "dynamic2");
+ test(compiler, arguments, parameters, "int1", "int2");
+ test(compiler, arguments, parameters, "String1", "String2");
+ test(compiler, arguments, parameters, "ListInt1", "ListInt2");
+ test(compiler, arguments, parameters, "ListT1", "ListT2");
+ test(compiler, arguments, parameters, "ListS1", "ListS2");
+ test(compiler, arguments, parameters, "ListListT1", "ListListT2");
+ test(compiler, arguments, parameters, "ListRaw1", "ListRaw2");
+ test(compiler, arguments, parameters, "ListDynamic1", "ListDynamic2");
+ test(compiler, arguments, parameters, "MapIntString1", "MapIntString2");
+ test(compiler, arguments, parameters, "MapTString1", "MapTString2");
+ test(compiler, arguments, parameters,
+ "MapDynamicString1", "MapDynamicString2");
+ test(compiler, arguments, parameters, "TypeVarT1", "TypeVarT2");
+ test(compiler, arguments, parameters, "TypeVarS1", "TypeVarS2");
+ test(compiler, arguments, parameters, "Function1a", "Function2a");
+ test(compiler, arguments, parameters, "Function1b", "Function2b");
+ test(compiler, arguments, parameters, "Function1c", "Function2c");
+ test(compiler, arguments, parameters, "Typedef1a", "Typedef2a");
+ test(compiler, arguments, parameters, "Typedef1b", "Typedef2b");
+ test(compiler, arguments, parameters, "Typedef1c", "Typedef2c");
+ test(compiler, arguments, parameters, "Typedef1d", "Typedef2d");
+ test(compiler, arguments, parameters, "Typedef1e", "Typedef2e");
+}
diff --git a/tests/compiler/dart2js/value_range_test.dart b/tests/compiler/dart2js/value_range_test.dart
index 3a78bdc..177eae5 100644
--- a/tests/compiler/dart2js/value_range_test.dart
+++ b/tests/compiler/dart2js/value_range_test.dart
@@ -64,7 +64,7 @@
return a.removeLast();
}
""",
-KEPT,
+REMOVED, // TODO(6829): Put it back to KEPT
"""
main() {
@@ -211,8 +211,7 @@
class Object {}
class Type {}
class Function {}
- interface List default ListImplementation { List([length]);}
- class ListImplementation { factory List([length]) => null; }
+ class List { List([length]); }
abstract class Map {}
class Closure {}
class Null {}
diff --git a/tests/compiler/dart2js_extra/dart2js_extra.status b/tests/compiler/dart2js_extra/dart2js_extra.status
index 4743a49..9e569d2 100644
--- a/tests/compiler/dart2js_extra/dart2js_extra.status
+++ b/tests/compiler/dart2js_extra/dart2js_extra.status
@@ -7,7 +7,6 @@
statements_test: Fail
typed_locals_test: Fail
no_such_method_test: Fail # Wrong InvocationMirror.memberName.
-break_test: Fail # Complex control flow TODO(ngeoffray): investigating
[ $compiler == dart2js && $checked ]
parameter_bailout_test: Fail, OK
diff --git a/tests/compiler/dart2js_extra/first_class_types_hashcode_test.dart b/tests/compiler/dart2js_extra/first_class_types_hashcode_test.dart
new file mode 100644
index 0000000..26b5c13
--- /dev/null
+++ b/tests/compiler/dart2js_extra/first_class_types_hashcode_test.dart
@@ -0,0 +1,23 @@
+// Copyright (c) 2012, 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.
+
+// Check that Type instances work with maps. This behavior is not required by
+// the specification.
+
+class A {}
+
+class B<T> {}
+
+main() {
+ Map<Type, String> map = new Map<Type, String>();
+ Type a = new A().runtimeType;
+ Type b1 = new B<int>().runtimeType;
+ Type b2 = new B<String>().runtimeType;
+ map[a] = 'A';
+ map[b1] = 'B<int>';
+ map[b2] = 'B<String>';
+ Expect.equals('A', map[new A().runtimeType]);
+ Expect.equals('B<int>', map[new B<int>().runtimeType]);
+ Expect.equals('B<String>', map[new B<String>().runtimeType]);
+}
diff --git a/tests/compiler/dart2js_extra/hash_code_test.dart b/tests/compiler/dart2js_extra/hash_code_test.dart
index 5db341b..869c60b 100644
--- a/tests/compiler/dart2js_extra/hash_code_test.dart
+++ b/tests/compiler/dart2js_extra/hash_code_test.dart
@@ -2,10 +2,80 @@
// 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.
-// dart2js specific test to make sure String.hashCode behaves as
+// dart2js specific test to make sure hashCode on intercepted types behaves as
// intended.
+
+class Hasher {
+ confuse(x) => [1, 'x', true, null, x].last;
+ hash(x) => confuse(x).hashCode;
+}
+
+// Hashing via [hash] should be forced to use the general interceptor, but the
+// local x.hashCode calls might be optimized.
+var hash = new Hasher().hash;
+
+check(value1, value2) {
+ var h1 = hash(value1);
+ var h2 = hash(value2);
+
+ Expect.isTrue(h1 is int);
+ Expect.isTrue(h2 is int);
+ Expect.isFalse(h1 == h2);
+
+ // We expect that the hash function is reasonable quality - there are some
+ // difference in the low bits.
+ Expect.isFalse((h1 & 0xf) == (h2 & 0xf));
+
+ // Quality check - the values should be SMIs for efficient arithmetic.
+ Expect.equals((h1 & 0x1fffffff), h1);
+ Expect.equals((h2 & 0x1fffffff), h2);
+}
+
+bools() {
+ check(true, false);
+
+ Expect.equals(true.hashCode, hash(true)); // First can be optimized.
+ Expect.equals(false.hashCode, hash(false));
+}
+
+ints() {
+ var i1 = 100;
+ var i2 = 101;
+ check(i1, i2);
+ Expect.equals(i1.hashCode, hash(i1));
+ Expect.equals(i2.hashCode, hash(i2));
+}
+
+lists() {
+ var list1 = [];
+ var list2 = [];
+ check(list1, list2);
+
+ Expect.equals(list1.hashCode, hash(list1));
+ Expect.equals(list2.hashCode, hash(list2));
+}
+
+strings() {
+ var str1 = 'a';
+ var str2 = 'b';
+ var str3 = 'c';
+ check(str1, str2);
+ check(str1, str3);
+ check(str2, str3);
+
+ Expect.equals(str1.hashCode, hash(str1));
+ Expect.equals(str2.hashCode, hash(str2));
+ Expect.equals(str3.hashCode, hash(str3));
+
+ Expect.equals(0xA2E9442, 'a'.hashCode);
+ Expect.equals(0x0DB819B, 'b'.hashCode);
+ Expect.equals(0xEBA5D59, 'c'.hashCode);
+}
+
main() {
- Expect.equals(67633152, 'a'.hashCode);
- Expect.equals(37224448, 'b'.hashCode);
+ bools();
+ ints();
+ lists();
+ strings();
}
diff --git a/tests/compiler/dart2js_foreign/dart2js_foreign.status b/tests/compiler/dart2js_foreign/dart2js_foreign.status
index 1b70a56..d383e88 100644
--- a/tests/compiler/dart2js_foreign/dart2js_foreign.status
+++ b/tests/compiler/dart2js_foreign/dart2js_foreign.status
@@ -32,8 +32,6 @@
native_method_rename2_test: Fail # TODO(ahe): Convert to metadata syntax.
native_method_rename3_test: Fail # TODO(ahe): Convert to metadata syntax.
native_method_with_keyword_name_test: Fail # TODO(ahe): Convert to metadata syntax.
-native_missing_method1_test: Fail # TODO(ahe): Convert to metadata syntax.
-native_missing_method2_test: Fail # TODO(ahe): Convert to metadata syntax.
native_named_constructors2_test: Fail # TODO(ahe): Convert to metadata syntax.
native_named_constructors3_test: Fail # TODO(ahe): Convert to metadata syntax.
native_no_such_method_exception2_test: Fail # TODO(ahe): Convert to metadata syntax.
diff --git a/tests/compiler/dart2js_native/dart2js_native.status b/tests/compiler/dart2js_native/dart2js_native.status
index bbe5431..94108e9 100644
--- a/tests/compiler/dart2js_native/dart2js_native.status
+++ b/tests/compiler/dart2js_native/dart2js_native.status
@@ -4,3 +4,6 @@
[ $compiler == dartc || $browser ]
*: Skip
+
+[ $compiler == dart2js ]
+native_null_closure_frog_test: Fail
diff --git a/tests/corelib/core_runtime_types_test.dart b/tests/corelib/core_runtime_types_test.dart
index e3d94ce..c40b781 100644
--- a/tests/corelib/core_runtime_types_test.dart
+++ b/tests/corelib/core_runtime_types_test.dart
@@ -47,7 +47,6 @@
static assertTypeError(void f()) {
Expect.throws(f, (exception) => (exception is TypeError) ||
(exception is NoSuchMethodError) ||
- (exception is NullPointerException) ||
(exception is ArgumentError));
}
diff --git a/tests/corelib/corelib.status b/tests/corelib/corelib.status
index 356cedf..f48942d 100644
--- a/tests/corelib/corelib.status
+++ b/tests/corelib/corelib.status
@@ -2,18 +2,22 @@
# 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.
+reg_exp_unicode_2_test: Fail # Bug 6592
+
[ $compiler == none ]
-unicode_test: Fail # Bug 5163868
+unicode_test: Fail # Bug 6706
*dartc_test: Skip
compare_to2_test: Fail # Bug 4018
null_test: Fail # Bug 5511
-null_nosuchmethod_test: Fail # Bug 5518
apply_test: Fail # Bug 5670
apply2_test: Fail # Bug 5670
[ $runtime == ff || $runtime == ie9 || $runtime == jsshell ]
unicode_test: Fail
+[ $compiler == dart2js && ($runtime == chrome || $runtime == drt || $runtime == d8 || $runtime == safari) ]
+string_trim_unicode_test: Fail # V8 bug 2408
+
[ $runtime == opera ]
core_runtime_types_test: Fail
date_time7_test: Fail
@@ -25,6 +29,9 @@
[ $runtime == safari && ($system == linux || $system == windows) ]
*: Skip
+[ $runtime == vm ]
+string_trim_unicode_test: Fail # Bug 6569
+
[ $arch == simarm ]
*: Skip
@@ -34,6 +41,7 @@
[ $compiler == dart2js ]
math_parse_double_test: Fail # Expect.equals(expected: <78187493520>, actual: <0>)
math_test: Fail # issue 3333
+surrogate_pair_toUpper_test: Fail # Issue 6707
# Bad test, assumes RegExp.allMatches returns a Collection.
reg_exp_all_matches_test: Fail, OK # NoSuchMethodError : method not found: 'forEach'
@@ -44,8 +52,6 @@
compare_to2_test: Fail, OK # Requires bigint support.
string_base_vm_test: Fail, OK # VM specific test.
-null_nosuchmethod_test: Fail # Bug 5513
-
[ $compiler == dart2js && $runtime == none ]
*: Fail, Pass # TODO(ahe): Triage these tests.
@@ -61,7 +67,6 @@
apply_test: Fail # inherited from VM
apply2_test: Fail # inherited from VM
compare_to2_test: Fail # inherited from VM
-null_nosuchmethod_test: Fail # inherited from VM
null_test: Fail # inherited from VM
unicode_test: Fail # inherited from VM
diff --git a/tests/corelib/expando_test.dart b/tests/corelib/expando_test.dart
index 318c630..c6b65d8 100644
--- a/tests/corelib/expando_test.dart
+++ b/tests/corelib/expando_test.dart
@@ -62,7 +62,7 @@
static testIllegal() {
Expando<int> expando = new Expando<int>();
Expect.throws(() => expando[null], (exception)
- => exception is NullPointerException);
+ => exception is ArgumentError);
Expect.throws(() => expando['string'], (exception)
=> exception is ArgumentError);
Expect.throws(() => expando['string'], (exception)
diff --git a/tests/corelib/future_test.dart b/tests/corelib/future_test.dart
index 9ed1db5..1916ddd 100644
--- a/tests/corelib/future_test.dart
+++ b/tests/corelib/future_test.dart
@@ -565,6 +565,92 @@
Expect.equals("transformed value", transformedFuture.value);
}
+// Tests for branching exceptions
+
+testExceptionTravelsAlongBothBranches() {
+ var results = <int>[];
+
+ var completer = new Completer();
+ var branch1 = completer.future.transform((_) => null);
+ var branch2 = completer.future.transform((_) => null);
+
+ branch1.handleException((e) {
+ results.add(1);
+ return true;
+ });
+
+ branch2.handleException((e) {
+ results.add(2);
+ return true;
+ });
+
+ completer.completeException("error");
+ Expect.setEquals([1, 2], results);
+}
+
+testExceptionTravelsAlongBothBranchesAfterComplete() {
+ var results = <int>[];
+
+ var completer = new Completer();
+ completer.completeException("error");
+
+ var branch1 = completer.future.transform((_) => null);
+ var branch2 = completer.future.transform((_) => null);
+
+ branch1.handleException((e) {
+ results.add(1);
+ return true;
+ });
+
+ branch2.handleException((e) {
+ results.add(2);
+ return true;
+ });
+
+ Expect.setEquals([1, 2], results);
+}
+
+testExceptionIsHandledInBaseAndBranch() {
+ var results = <String>[];
+
+ var completer = new Completer();
+ var branch = completer.future.transform((_) => null);
+
+ completer.future.handleException((e) {
+ results.add("base");
+ return true;
+ });
+
+ branch.handleException((e) {
+ results.add("branch");
+ return true;
+ });
+
+ completer.completeException("error");
+ Expect.setEquals(["base", "branch"], results);
+}
+
+testExceptionIsHandledInBaseAndBranchAfterComplete() {
+ var results = <String>[];
+
+ var completer = new Completer();
+ completer.completeException("error");
+
+ var branch = completer.future.transform((_) => null);
+
+ completer.future.handleException((e) {
+ results.add("base");
+ return true;
+ });
+
+ branch.handleException((e) {
+ results.add("branch");
+ return true;
+ });
+
+ Expect.setEquals(["base", "branch"], results);
+}
+
main() {
testImmediate();
testNeverComplete();
@@ -605,4 +691,8 @@
testTransformExceptionThrows();
testTransformExceptionReturns();
testTransformExceptionReturnsAFuture();
+ testExceptionTravelsAlongBothBranches();
+ testExceptionTravelsAlongBothBranchesAfterComplete();
+ testExceptionIsHandledInBaseAndBranch();
+ testExceptionIsHandledInBaseAndBranchAfterComplete();
}
diff --git a/tests/corelib/list_first_test.dart b/tests/corelib/list_first_test.dart
new file mode 100644
index 0000000..cdd718b
--- /dev/null
+++ b/tests/corelib/list_first_test.dart
@@ -0,0 +1,18 @@
+// Copyright (c) 2012, 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.
+
+void test(List list) {
+ if (list.isEmpty) {
+ Expect.throws(() => list.first, (e) => e is RangeError);
+ } else {
+ Expect.equals(list[0], list.first);
+ }
+}
+
+main() {
+ test([1, 2, 3]);
+ test(const ["foo", "bar"]);
+ test([]);
+ test(const []);
+}
diff --git a/tests/corelib/null_nosuchmethod_test.dart b/tests/corelib/null_nosuchmethod_test.dart
index 2d6514c..7ae7540 100644
--- a/tests/corelib/null_nosuchmethod_test.dart
+++ b/tests/corelib/null_nosuchmethod_test.dart
@@ -8,15 +8,15 @@
var x;
// Non-existing method calls noSuchMethod.
Expect.throws(() => x.foo(),
- (e) => e is NullPointerException);
+ (e) => e is NoSuchMethodError);
// Calling noSuchMethod directly.
Expect.throws(() => x.noSuchMethod("foo", []),
- (e) => e is NullPointerException);
+ (e) => e is NoSuchMethodError);
// Closurizing noSuchMethod and calling it.
var nsm = x.noSuchMethod;
Expect.notEquals(null, nsm);
Expect.throws(() => nsm("foo", []),
- (e) => e is NullPointerException);
+ (e) => e is NoSuchMethodError);
}
diff --git a/tests/corelib/reg_exp4_test.dart b/tests/corelib/reg_exp4_test.dart
index 41d8f50..bef3397 100644
--- a/tests/corelib/reg_exp4_test.dart
+++ b/tests/corelib/reg_exp4_test.dart
@@ -6,42 +6,42 @@
main() {
try {
RegExp ex = new RegExp(null);
- Expect.fail("Expected: NullPointerException got: no exception");
- } on Exception catch (ex) {
- if (!(ex is NullPointerException)) {
- Expect.fail("Expected: NullPointerException got: ${ex}");
+ Expect.fail("Expected: ArgumentError got: no exception");
+ } catch (ex) {
+ if (!(ex is ArgumentError)) {
+ Expect.fail("Expected: ArgumentError got: ${ex}");
}
}
try {
new RegExp(r"^\w+$").hasMatch(null);
- Expect.fail("Expected: NullPointerException got: no exception");
- } on Exception catch (ex) {
- if (!(ex is NullPointerException)) {
- Expect.fail("Expected: NullPointerException got: ${ex}");
+ Expect.fail("Expected: ArgumentError got: no exception");
+ } catch (ex) {
+ if (!(ex is ArgumentError)) {
+ Expect.fail("Expected: ArgumentError got: ${ex}");
}
}
try {
new RegExp(r"^\w+$").firstMatch(null);
- Expect.fail("Expected: NullPointerException got: no exception");
- } on Exception catch (ex) {
- if (!(ex is NullPointerException)) {
- Expect.fail("Expected: NullPointerException got: ${ex}");
+ Expect.fail("Expected: ArgumentError got: no exception");
+ } catch (ex) {
+ if (!(ex is ArgumentError)) {
+ Expect.fail("Expected: ArgumentError got: ${ex}");
}
}
try {
new RegExp(r"^\w+$").allMatches(null);
- Expect.fail("Expected: NullPointerException got: no exception");
- } on Exception catch (ex) {
- if (!(ex is NullPointerException)) {
- Expect.fail("Expected: NullPointerException got: ${ex}");
+ Expect.fail("Expected: ArgumentError got: no exception");
+ } catch (ex) {
+ if (!(ex is ArgumentError)) {
+ Expect.fail("Expected: ArgumentError got: ${ex}");
}
}
try {
new RegExp(r"^\w+$").stringMatch(null);
- Expect.fail("Expected: NullPointerException got: no exception");
- } on Exception catch (ex) {
- if (!(ex is NullPointerException)) {
- Expect.fail("Expected: NullPointerException got: ${ex}");
+ Expect.fail("Expected: ArgumentError got: no exception");
+ } catch (ex) {
+ if (!(ex is ArgumentError)) {
+ Expect.fail("Expected: ArgumentError got: ${ex}");
}
}
}
diff --git a/tests/corelib/reg_exp5_test.dart b/tests/corelib/reg_exp5_test.dart
index 17217a8..56002ca 100644
--- a/tests/corelib/reg_exp5_test.dart
+++ b/tests/corelib/reg_exp5_test.dart
@@ -7,9 +7,9 @@
String str = "";
try {
RegExp ex = new RegExp(str);
- } on Exception catch (e) {
- if (!(e is NullPointerException)) {
- Expect.fail("Expected: NullPointerException got: ${e}");
+ } catch (e) {
+ if (!(e is ArgumentError)) {
+ Expect.fail("Expected: ArgumentError got: ${e}");
}
}
Expect.isFalse(new RegExp(r"^\w+$").hasMatch(str));
diff --git a/tests/corelib/safe_to_string_test.dart b/tests/corelib/safe_to_string_test.dart
index 70d6624..dd80be1 100644
--- a/tests/corelib/safe_to_string_test.dart
+++ b/tests/corelib/safe_to_string_test.dart
@@ -3,19 +3,19 @@
// BSD-style license that can be found in the LICENSE file.
main() {
- Expect.stringEquals('1', NoSuchMethodError.safeToString(1));
- Expect.stringEquals('0.5', NoSuchMethodError.safeToString(0.5));
- Expect.stringEquals('"1"', NoSuchMethodError.safeToString("1"));
- Expect.stringEquals('"\'"', NoSuchMethodError.safeToString("'"));
- Expect.stringEquals('"\'\'"', NoSuchMethodError.safeToString("''"));
- Expect.stringEquals(r'"\""', NoSuchMethodError.safeToString('"'));
- Expect.stringEquals(r'"\"\""', NoSuchMethodError.safeToString('""'));
+ Expect.stringEquals('1', Error.safeToString(1));
+ Expect.stringEquals('0.5', Error.safeToString(0.5));
+ Expect.stringEquals('"1"', Error.safeToString("1"));
+ Expect.stringEquals('"\'"', Error.safeToString("'"));
+ Expect.stringEquals('"\'\'"', Error.safeToString("''"));
+ Expect.stringEquals(r'"\""', Error.safeToString('"'));
+ Expect.stringEquals(r'"\"\""', Error.safeToString('""'));
- Expect.stringEquals(r'"\\\"\n\r"', NoSuchMethodError.safeToString('\\"\n\r'));
+ Expect.stringEquals(r'"\\\"\n\r"', Error.safeToString('\\"\n\r'));
- Expect.stringEquals('null', NoSuchMethodError.safeToString(null));
- Expect.stringEquals('true', NoSuchMethodError.safeToString(true));
- Expect.stringEquals('false', NoSuchMethodError.safeToString(false));
+ Expect.stringEquals('null', Error.safeToString(null));
+ Expect.stringEquals('true', Error.safeToString(true));
+ Expect.stringEquals('false', Error.safeToString(false));
Expect.stringEquals("Instance of 'Object'",
- NoSuchMethodError.safeToString(new Object()));
+ Error.safeToString(new Object()));
}
diff --git a/tests/corelib/string_from_list_test.dart b/tests/corelib/string_from_list_test.dart
index acd0f5c..ec43592 100644
--- a/tests/corelib/string_from_list_test.dart
+++ b/tests/corelib/string_from_list_test.dart
@@ -9,11 +9,16 @@
Expect.equals("", new String.fromCharCodes(const []));
Expect.equals("AB", new String.fromCharCodes([65, 66]));
Expect.equals("AB", new String.fromCharCodes(const [65, 66]));
+ Expect.equals("Ærø", new String.fromCharCodes(const [0xc6, 0x72, 0xf8]));
+ Expect.equals("\u{1234}", new String.fromCharCodes([0x1234]));
+ Expect.equals("\u{12345}*", new String.fromCharCodes([0x12345, 42]));
Expect.equals("", new String.fromCharCodes(new List()));
- var a = new List();
- a.add(65);
- a.add(66);
- Expect.equals("AB", new String.fromCharCodes(a));
+ {
+ var a = new List();
+ a.add(65);
+ a.add(66);
+ Expect.equals("AB", new String.fromCharCodes(a));
+ }
}
}
diff --git a/tests/corelib/string_test.dart b/tests/corelib/string_test.dart
index a5ba35b..1518181 100644
--- a/tests/corelib/string_test.dart
+++ b/tests/corelib/string_test.dart
@@ -193,6 +193,8 @@
Expect.equals(5, "strstr".lastIndexOf("r", 5));
Expect.equals(2, "strstr".lastIndexOf("r", 4));
Expect.equals(2, "strstr".lastIndexOf("r", 3));
+ Expect.equals(5, "strstr".lastIndexOf("r"));
+ Expect.equals(5, "strstr".lastIndexOf("r"), null);
String str = "hello";
for (int i = 0; i < 10; i++) {
diff --git a/tests/html/cssstyledeclaration_test.dart b/tests/html/cssstyledeclaration_test.dart
index 3822e07..1383561 100644
--- a/tests/html/cssstyledeclaration_test.dart
+++ b/tests/html/cssstyledeclaration_test.dart
@@ -49,7 +49,7 @@
test('CSS property empty getters and setters', () {
var style = createTestStyle();
expect(style.border, equals(""));
-
+
style.border = "1px solid blue";
style.border = "";
expect(style.border, equals(""));
@@ -70,7 +70,7 @@
test('Browser prefixes', () {
var element = new DivElement();
element.style.transform = 'translateX(10px)';
- document.body.elements.add(element);
+ document.body.children.add(element);
element.getComputedStyle('').then(expectAsync1(
(CSSStyleDeclaration style) {
@@ -84,7 +84,7 @@
// IE9 requires an extra poke for some properties to get applied.
test('IE9 Invalidation', () {
var element = new DivElement();
- document.body.elements.add(element);
+ document.body.children.add(element);
// Need to wait one tick after the element has been added to the page.
window.setTimeout(expectAsync0(() {
diff --git a/tests/html/documentfragment_test.dart b/tests/html/documentfragment_test.dart
index 71b92c4..cd47c38 100644
--- a/tests/html/documentfragment_test.dart
+++ b/tests/html/documentfragment_test.dart
@@ -60,23 +60,23 @@
group('constructors', () {
test('0-argument makes an empty fragment', () {
final fragment = new DocumentFragment();
- expect(fragment.elements, equals([]));
+ expect(fragment.children, equals([]));
});
test('.html parses input as HTML', () {
final fragment = new DocumentFragment.html('<a>foo</a>');
- expect(fragment.elements[0], isAnchorElement);
+ expect(fragment.children[0], isAnchorElement);
});
// test('.svg parses input as SVG', () {
// final fragment = new DocumentFragment.svg('<a>foo</a>');
- // expect(fragment.elements[0] is SVGAElement, isTrue);
+ // expect(fragment.children[0] is SVGAElement, isTrue);
// });
// TODO(nweiz): enable this once XML is ported.
// test('.xml parses input as XML', () {
// final fragment = new DocumentFragment.xml('<a>foo</a>');
- // expect(fragment.elements[0] is XMLElement, isTrue);
+ // expect(fragment.children[0] is XMLElement, isTrue);
// });
});
@@ -104,13 +104,13 @@
expectUnsupported(() => emptyFragment.webkitRegionOverflow = "foo");
});
- group('elements', () {
+ group('children', () {
var fragment;
- var elements;
+ var children;
init() {
fragment = new DocumentFragment();
- elements = fragment.elements;
+ children = fragment.children;
fragment.nodes.addAll(
[new Text("1"), new Element.tag("A"), new Element.tag("B"),
new Text("2"), new Element.tag("I"), new Text("3"),
@@ -118,66 +118,66 @@
};
test('is initially empty', () {
- elements = new DocumentFragment().elements;
- expect(elements, equals([]));
- expect(elements.isEmpty, isTrue);
+ children = new DocumentFragment().children;
+ expect(children, equals([]));
+ expect(children.isEmpty, isTrue);
});
test('filters out non-element nodes', () {
init();
expect(_nodeStrings(fragment.nodes),
orderedEquals(["1", "A", "B", "2", "I", "3", "U"]));
- expect(_nodeStrings(elements),
+ expect(_nodeStrings(children),
orderedEquals(["A", "B", "I", "U"]));
});
- test('only indexes elements, not other nodes', () {
+ test('only indexes children, not other nodes', () {
init();
- elements[1] = new Element.tag("BR");
+ children[1] = new Element.tag("BR");
expect(_nodeStrings(fragment.nodes),
orderedEquals(["1", "A", "BR", "2", "I", "3", "U"]));
- expect(_nodeStrings(elements),
+ expect(_nodeStrings(children),
orderedEquals(["A", "BR", "I", "U"]));
});
- test('adds to both elements and nodes', () {
+ test('adds to both children and nodes', () {
init();
- elements.add(new Element.tag("UL"));
+ children.add(new Element.tag("UL"));
expect(_nodeStrings(fragment.nodes),
orderedEquals(["1", "A", "B", "2", "I", "3", "U", "UL"]));
- expect(_nodeStrings(elements),
+ expect(_nodeStrings(children),
orderedEquals(["A", "B", "I", "U", "UL"]));
});
- test('removes only elements, from both elements and nodes', () {
+ test('removes only children, from both children and nodes', () {
init();
- expect(elements.removeLast().tagName, equals('U'));
+ expect(children.removeLast().tagName, equals('U'));
expect(_nodeStrings(fragment.nodes),
orderedEquals(["1", "A", "B", "2", "I", "3"]));
- expect(_nodeStrings(elements),
+ expect(_nodeStrings(children),
orderedEquals(["A", "B", "I"]));
- expect(elements.removeLast().tagName, "I");
- expect(_nodeStrings(fragment.nodes),
+ expect(children.removeLast().tagName, "I");
+ expect(_nodeStrings(fragment.nodes),
equals(["1", "A", "B", "2", "3"]));
- expect(_nodeStrings(elements), equals(["A", "B"]));
+ expect(_nodeStrings(children), equals(["A", "B"]));
});
test('accessors are wrapped', () {
init();
- expect(elements[0].tagName, "A");
- expect(_nodeStrings(elements.filter((e) => e.tagName == "I")), ["I"]);
- expect(elements.every((e) => e is Element), isTrue);
- expect(elements.some((e) => e.tagName == "U"), isTrue);
- expect(elements.isEmpty, isFalse);
- expect(elements.length, 4);
- expect(elements[2].tagName, "I");
- expect(elements.last.tagName, "U");
+ expect(children[0].tagName, "A");
+ expect(_nodeStrings(children.filter((e) => e.tagName == "I")), ["I"]);
+ expect(children.every((e) => e is Element), isTrue);
+ expect(children.some((e) => e.tagName == "U"), isTrue);
+ expect(children.isEmpty, isFalse);
+ expect(children.length, 4);
+ expect(children[2].tagName, "I");
+ expect(children.last.tagName, "U");
});
- test('setting elements overwrites nodes as well', () {
+ test('setting children overwrites nodes as well', () {
init();
- fragment.elements = [new Element.tag("DIV"), new Element.tag("HEAD")];
+ fragment.children = [new Element.tag("DIV"), new Element.tag("HEAD")];
expect(_nodeStrings(fragment.nodes), equals(["DIV", "HEAD"]));
});
});
diff --git a/tests/html/element_add_test.dart b/tests/html/element_add_test.dart
index 4156ca5..ef911fdd 100644
--- a/tests/html/element_add_test.dart
+++ b/tests/html/element_add_test.dart
@@ -22,22 +22,22 @@
test('htmlelement', () {
var el = new DivElement();
el.addHtml('<span></span>');
- expect(el.elements.length, equals(1));
- var span = el.elements[0];
+ expect(el.children.length, equals(1));
+ var span = el.children[0];
expect(span, isSpanElement);
el.addHtml('<div></div>');
- expect(el.elements.length, equals(2));
+ expect(el.children.length, equals(2));
// Validate that the first item is still first.
- expect(el.elements[0], equals(span));
- expect(el.elements[1], isDivElement);
+ expect(el.children[0], equals(span));
+ expect(el.children[1], isDivElement);
});
test('documentFragment', () {
var fragment = new DocumentFragment();
fragment.addHtml('<span>something</span>');
- expect(fragment.elements.length, equals(1));
- expect(fragment.elements[0], isSpanElement);
+ expect(fragment.children.length, equals(1));
+ expect(fragment.children[0], isSpanElement);
});
});
@@ -45,8 +45,8 @@
test('htmlelement', () {
var el = new DivElement();
el.addText('foo');
- // No elements were created.
- expect(el.elements.length, equals(0));
+ // No children were created.
+ expect(el.children.length, equals(0));
// One text node was added.
expect(el.nodes.length, equals(1));
});
@@ -54,8 +54,8 @@
test('documentFragment', () {
var fragment = new DocumentFragment();
fragment.addText('foo');
- // No elements were created.
- expect(fragment.elements.length, equals(0));
+ // No children were created.
+ expect(fragment.children.length, equals(0));
// One text node was added.
expect(fragment.nodes.length, equals(1));
});
@@ -66,48 +66,48 @@
var parent = new DivElement();
var child = new DivElement();
var newChild = new SpanElement();
- parent.elements.add(child);
+ parent.children.add(child);
child.insertAdjacentElement('beforebegin', newChild);
- expect(parent.elements.length, 2);
- expect(parent.elements[0], isSpanElement);
+ expect(parent.children.length, 2);
+ expect(parent.children[0], isSpanElement);
});
test('afterend', () {
var parent = new DivElement();
var child = new DivElement();
var newChild = new SpanElement();
- parent.elements.add(child);
+ parent.children.add(child);
child.insertAdjacentElement('afterend', newChild);
- expect(parent.elements.length, 2);
- expect(parent.elements[1], isSpanElement);
+ expect(parent.children.length, 2);
+ expect(parent.children[1], isSpanElement);
});
test('afterbegin', () {
var parent = new DivElement();
var child = new DivElement();
var newChild = new SpanElement();
- parent.elements.add(child);
+ parent.children.add(child);
parent.insertAdjacentElement('afterbegin', newChild);
- expect(parent.elements.length, 2);
- expect(parent.elements[0], isSpanElement);
+ expect(parent.children.length, 2);
+ expect(parent.children[0], isSpanElement);
});
test('beforeend', () {
var parent = new DivElement();
var child = new DivElement();
var newChild = new SpanElement();
- parent.elements.add(child);
+ parent.children.add(child);
parent.insertAdjacentElement('beforeend', newChild);
- expect(parent.elements.length, 2);
- expect(parent.elements[1], isSpanElement);
+ expect(parent.children.length, 2);
+ expect(parent.children[1], isSpanElement);
});
});
@@ -115,45 +115,45 @@
test('beforebegin', () {
var parent = new DivElement();
var child = new DivElement();
- parent.elements.add(child);
+ parent.children.add(child);
child.insertAdjacentHTML('beforebegin', '<span></span>');
- expect(parent.elements.length, 2);
- expect(parent.elements[0], isSpanElement);
+ expect(parent.children.length, 2);
+ expect(parent.children[0], isSpanElement);
});
test('afterend', () {
var parent = new DivElement();
var child = new DivElement();
- parent.elements.add(child);
+ parent.children.add(child);
child.insertAdjacentHTML('afterend', '<span></span>');
- expect(parent.elements.length, 2);
- expect(parent.elements[1], isSpanElement);
+ expect(parent.children.length, 2);
+ expect(parent.children[1], isSpanElement);
});
test('afterbegin', () {
var parent = new DivElement();
var child = new DivElement();
- parent.elements.add(child);
+ parent.children.add(child);
parent.insertAdjacentHTML('afterbegin', '<span></span>');
- expect(parent.elements.length, 2);
- expect(parent.elements[0], isSpanElement);
+ expect(parent.children.length, 2);
+ expect(parent.children[0], isSpanElement);
});
test('beforeend', () {
var parent = new DivElement();
var child = new DivElement();
- parent.elements.add(child);
+ parent.children.add(child);
parent.insertAdjacentHTML('beforeend', '<span></span>');
- expect(parent.elements.length, 2);
- expect(parent.elements[1], isSpanElement);
+ expect(parent.children.length, 2);
+ expect(parent.children[1], isSpanElement);
});
});
@@ -161,7 +161,7 @@
test('beforebegin', () {
var parent = new DivElement();
var child = new DivElement();
- parent.elements.add(child);
+ parent.children.add(child);
child.insertAdjacentText('beforebegin', 'test');
@@ -172,7 +172,7 @@
test('afterend', () {
var parent = new DivElement();
var child = new DivElement();
- parent.elements.add(child);
+ parent.children.add(child);
child.insertAdjacentText('afterend', 'test');
@@ -183,7 +183,7 @@
test('afterbegin', () {
var parent = new DivElement();
var child = new DivElement();
- parent.elements.add(child);
+ parent.children.add(child);
parent.insertAdjacentText('afterbegin', 'test');
@@ -194,7 +194,7 @@
test('beforeend', () {
var parent = new DivElement();
var child = new DivElement();
- parent.elements.add(child);
+ parent.children.add(child);
parent.insertAdjacentText('beforeend', 'test');
diff --git a/tests/html/element_test.dart b/tests/html/element_test.dart
index a3e6acd..2a5d460 100644
--- a/tests/html/element_test.dart
+++ b/tests/html/element_test.dart
@@ -6,7 +6,7 @@
import '../../pkg/unittest/lib/unittest.dart';
import '../../pkg/unittest/lib/html_individual_config.dart';
import 'dart:html';
-import 'dart:svg';
+import 'dart:svg' as svg;
expectLargeRect(ClientRect rect) {
expect(rect.top, 0);
@@ -90,8 +90,8 @@
final element = new Element.tag("div");
element.style.width = '200px';
element.style.height = '200px';
- container.elements.add(element);
- document.body.elements.add(container);
+ container.children.add(element);
+ document.body.children.add(container);
expect(element.clientWidth, greaterThan(100));
expect(element.clientHeight, greaterThan(100));
@@ -149,7 +149,7 @@
'<thead><tr><td>foo</td></tr></thead>', 'foo',
(element) => element is TableSectionElement));
});
-
+
group('constructors', () {
test('error', () {
expect(() => new Element.html('<br/><br/>'), throwsArgumentError);
@@ -283,7 +283,7 @@
// '<someunknown>foo</someunknown>', 'foo',
// (element) => element is UnknownElement));
});
-
+
group('eventListening', () {
test('eventListeners', () {
final element = new Element.tag('div');
@@ -466,47 +466,47 @@
});
});
- group('elements', () {
+ group('children', () {
test('is a subset of nodes', () {
var el = new Element.html("<div>Foo<br/><img/></div>");
expect(el.nodes.length, 3);
- expect(el.elements.length, 2);
- expect(el.nodes[1], el.elements[0]);
- expect(el.nodes[2], el.elements[1]);
+ expect(el.children.length, 2);
+ expect(el.nodes[1], el.children[0]);
+ expect(el.nodes[2], el.children[1]);
});
test('changes when an element is added to nodes', () {
var el = new Element.html("<div>Foo<br/><img/></div>");
el.nodes.add(new Element.tag('hr'));
- expect(el.elements.length, 3);
- expect(el.elements[2], isHRElement);
- expect(el.nodes[3], el.elements[2]);
+ expect(el.children.length, 3);
+ expect(el.children[2], isHRElement);
+ expect(el.nodes[3], el.children[2]);
});
test('changes nodes when an element is added', () {
var el = new Element.html("<div>Foo<br/><img/></div>");
- el.elements.add(new Element.tag('hr'));
+ el.children.add(new Element.tag('hr'));
expect(el.nodes.length, 4);
expect(el.nodes[3], isHRElement);
- expect(el.elements[2], el.nodes[3]);
+ expect(el.children[2], el.nodes[3]);
});
test('last', () {
var el = makeElementWithChildren();
- expect(el.elements.last, isInputElement);
+ expect(el.children.last, isInputElement);
});
test('forEach', () {
var els = [];
var el = makeElementWithChildren();
- el.elements.forEach((n) => els.add(n));
+ el.children.forEach((n) => els.add(n));
expect(els[0], isBRElement);
expect(els[1], isImageElement);
expect(els[2], isInputElement);
});
test('filter', () {
- var filtered = makeElementWithChildren().elements.
+ var filtered = makeElementWithChildren().children.
filter((n) => n is ImageElement);
expect(1, filtered.length);
expect(filtered[0], isImageElement);
@@ -515,57 +515,57 @@
test('every', () {
var el = makeElementWithChildren();
- expect(el.elements.every((n) => n is Element), isTrue);
- expect(el.elements.every((n) => n is InputElement), isFalse);
+ expect(el.children.every((n) => n is Element), isTrue);
+ expect(el.children.every((n) => n is InputElement), isFalse);
});
test('some', () {
var el = makeElementWithChildren();
- expect(el.elements.some((n) => n is InputElement), isTrue);
- expect(el.elements.some((n) => n is SVGElement), isFalse);
+ expect(el.children.some((n) => n is InputElement), isTrue);
+ expect(el.children.some((n) => n is svg.SvgElement), isFalse);
});
test('isEmpty', () {
- expect(makeElement().elements.isEmpty, isTrue);
- expect(makeElementWithChildren().elements.isEmpty, isFalse);
+ expect(makeElement().children.isEmpty, isTrue);
+ expect(makeElementWithChildren().children.isEmpty, isFalse);
});
test('length', () {
- expect(makeElement().elements.length, 0);
- expect(makeElementWithChildren().elements.length, 3);
+ expect(makeElement().children.length, 0);
+ expect(makeElementWithChildren().children.length, 3);
});
test('[]', () {
var el = makeElementWithChildren();
- expect(el.elements[0], isBRElement);
- expect(el.elements[1], isImageElement);
- expect(el.elements[2], isInputElement);
+ expect(el.children[0], isBRElement);
+ expect(el.children[1], isImageElement);
+ expect(el.children[2], isInputElement);
});
test('[]=', () {
var el = makeElementWithChildren();
- el.elements[1] = new Element.tag('hr');
- expect(el.elements[0], isBRElement);
- expect(el.elements[1], isHRElement);
- expect(el.elements[2], isInputElement);
+ el.children[1] = new Element.tag('hr');
+ expect(el.children[0], isBRElement);
+ expect(el.children[1], isHRElement);
+ expect(el.children[2], isInputElement);
});
test('add', () {
var el = makeElement();
- el.elements.add(new Element.tag('hr'));
- expect(el.elements.last, isHRElement);
+ el.children.add(new Element.tag('hr'));
+ expect(el.children.last, isHRElement);
});
test('addLast', () {
var el = makeElement();
- el.elements.addLast(new Element.tag('hr'));
- expect(el.elements.last, isHRElement);
+ el.children.addLast(new Element.tag('hr'));
+ expect(el.children.last, isHRElement);
});
test('iterator', () {
var els = [];
var el = makeElementWithChildren();
- for (var subel in el.elements) {
+ for (var subel in el.children) {
els.add(subel);
}
expect(els[0], isBRElement);
@@ -575,36 +575,36 @@
test('addAll', () {
var el = makeElementWithChildren();
- el.elements.addAll([
+ el.children.addAll([
new Element.tag('span'),
new Element.tag('a'),
new Element.tag('h1')
]);
- expect(el.elements[0], isBRElement);
- expect(el.elements[1], isImageElement);
- expect(el.elements[2], isInputElement);
- expect(el.elements[3], isSpanElement);
- expect(el.elements[4], isAnchorElement);
- expect(el.elements[5], isHeadingElement);
+ expect(el.children[0], isBRElement);
+ expect(el.children[1], isImageElement);
+ expect(el.children[2], isInputElement);
+ expect(el.children[3], isSpanElement);
+ expect(el.children[4], isAnchorElement);
+ expect(el.children[5], isHeadingElement);
});
test('clear', () {
var el = makeElementWithChildren();
- el.elements.clear();
- expect(el.elements, equals([]));
+ el.children.clear();
+ expect(el.children, equals([]));
});
test('removeLast', () {
var el = makeElementWithChildren();
- expect(el.elements.removeLast(), isInputElement);
- expect(el.elements.length, 2);
- expect(el.elements.removeLast(), isImageElement);
- expect(el.elements.length, 1);
+ expect(el.children.removeLast(), isInputElement);
+ expect(el.children.length, 2);
+ expect(el.children.removeLast(), isImageElement);
+ expect(el.children.length, 1);
});
test('getRange', () {
var el = makeElementWithChildren();
- expect(el.elements.getRange(1, 1), isElementList);
+ expect(el.children.getRange(1, 1), isElementList);
});
});
@@ -664,7 +664,7 @@
test('some', () {
var el = getQueryAll();
expect(el.some((n) => n is SpanElement), isTrue);
- expect(el.some((n) => n is SVGElement), isFalse);
+ expect(el.some((n) => n is svg.SvgElement), isFalse);
});
test('isEmpty', () {
@@ -725,7 +725,7 @@
});
group('_ElementList', () {
- List<Element> makeElList() => makeElementWithChildren().elements;
+ List<Element> makeElList() => makeElementWithChildren().children;
test('filter', () {
var filtered = makeElList().filter((n) => n is ImageElement);
diff --git a/tests/html/hidden_dom_1_test.dart b/tests/html/hidden_dom_1_test.dart
index 318bf4b..b2a51bd 100644
--- a/tests/html/hidden_dom_1_test.dart
+++ b/tests/html/hidden_dom_1_test.dart
@@ -10,7 +10,7 @@
useHtmlConfiguration();
test('test1', () {
- document.body.elements.add(new Element.html(r'''
+ document.body.children.add(new Element.html(r'''
<div id='div1'>
Hello World!
</div>'''));
diff --git a/tests/html/hidden_dom_2_test.dart b/tests/html/hidden_dom_2_test.dart
index a2cb124..1c1bad5 100644
--- a/tests/html/hidden_dom_2_test.dart
+++ b/tests/html/hidden_dom_2_test.dart
@@ -10,7 +10,7 @@
useHtmlConfiguration();
test('test1', () {
- document.body.elements.add(new Element.html(r'''
+ document.body.children.add(new Element.html(r'''
<div id='div1'>
Hello World!
</div>'''));
diff --git a/tests/html/html.status b/tests/html/html.status
index f49b807..49e137f 100644
--- a/tests/html/html.status
+++ b/tests/html/html.status
@@ -77,8 +77,6 @@
inner_frame_test: Skip
isolates_test: Skip
js_interop_2_test: Fail
-js_interop_3_test: Fail
-js_interop_4_test: Fail
localstorage_test: Fail
measurement_test: Fail, Pass
messageevent_test: Fail
@@ -137,8 +135,6 @@
indexeddb_3_test: Fail
indexeddb_4_test: Fail
js_interop_2_test: Fail
-js_interop_3_test: Fail
-js_interop_4_test: Fail
messageevent_test: Fail
mutationobserver_test: Fail
postmessage_structured_test: Skip # BUG(5685): times out.
@@ -183,11 +179,13 @@
datalistelement_test: Pass,Fail
document_test: Fail
dom_constructors_test: Fail
+element_test/additionalConstructors: Fail
element_test/attributes: Fail, Crash
+element_test/constructors: Fail
element_test/elements: Crash
element_test/eventListening: Fail
element_test/_ElementList: Fail, Crash
-element_test/queryAll: Crash
+element_test/queryAll: Fail, Crash
element_add_test: Fail
element_constructor_1_test: Fail
element_webkit_test: Fail
@@ -199,10 +197,11 @@
serialized_script_value_test: Fail
svgelement2_test: Fail
svgelement_test/constructors: Crash
+svgelement_test/css: Crash
svgelement_test/additionalConstructors: Fail
svgelement_test/elementget: Fail
svgelement_test/elementset: Fail
-svgelement_test/innerHTML: Crash
+svgelement_test/innerHTML: Crash, Fail
svgelement_test/outerHTML: Fail
svgelement_test/svg: Fail
url_test: Fail
diff --git a/tests/html/htmlcollection_test.dart b/tests/html/htmlcollection_test.dart
index 32a31d9..ad993ff 100644
--- a/tests/html/htmlcollection_test.dart
+++ b/tests/html/htmlcollection_test.dart
@@ -38,7 +38,7 @@
Element root = insertTestDiv();
List<Element> eachChecked =
- document.query('#allChecked').elements;
+ document.query('#allChecked').children;
expect(eachChecked, isList);
@@ -48,13 +48,13 @@
Element root = insertTestDiv();
List<Element> eachChecked =
- document.query('#allChecked').elements;
+ document.query('#allChecked').children;
List<Element> someChecked =
- document.query('#someChecked').elements;
+ document.query('#someChecked').children;
List<Element> noneChecked =
- document.query('#noneChecked').elements;
+ document.query('#noneChecked').children;
expect(eachChecked.length, 4);
expect(someChecked.length, 4);
@@ -73,13 +73,13 @@
Element root = insertTestDiv();
List<Element> eachChecked =
- document.query('#allChecked').elements;
+ document.query('#allChecked').children;
List<Element> someChecked =
- document.query('#someChecked').elements;
+ document.query('#someChecked').children;
List<Element> noneChecked =
- document.query('#noneChecked').elements;
+ document.query('#noneChecked').children;
expect(eachChecked.length, 4);
expect(someChecked.length, 4);
@@ -98,13 +98,13 @@
Element root = insertTestDiv();
List<Element> eachChecked =
- document.query('#allChecked').elements;
+ document.query('#allChecked').children;
List<Element> someChecked =
- document.query('#someChecked').elements;
+ document.query('#someChecked').children;
List<Element> noneChecked =
- document.query('#noneChecked').elements;
+ document.query('#noneChecked').children;
expect(eachChecked.length, 4);
expect(someChecked.length, 4);
@@ -123,10 +123,10 @@
Element root = insertTestDiv();
List<Element> someChecked =
- document.query('#someChecked').elements;
+ document.query('#someChecked').children;
List<Element> emptyDiv =
- document.query('#emptyDiv').elements;
+ document.query('#emptyDiv').children;
expect(someChecked.length, 4);
expect(emptyDiv.length, 0);
@@ -149,13 +149,13 @@
Element root = insertTestDiv();
List<Element> eachChecked =
- document.query('#allChecked').elements;
+ document.query('#allChecked').children;
List<Element> someChecked =
- document.query('#someChecked').elements;
+ document.query('#someChecked').children;
List<Element> noneChecked =
- document.query('#noneChecked').elements;
+ document.query('#noneChecked').children;
expect(eachChecked.length, 4);
expect(someChecked.length, 4);
@@ -183,13 +183,13 @@
Element root = insertTestDiv();
List<Element> eachChecked =
- document.query('#allChecked').elements;
+ document.query('#allChecked').children;
List<Element> someChecked =
- document.query('#someChecked').elements;
+ document.query('#someChecked').children;
List<Element> noneChecked =
- document.query('#noneChecked').elements;
+ document.query('#noneChecked').children;
expect(eachChecked.length, 4);
expect(someChecked.length, 4);
@@ -208,7 +208,7 @@
Element root = insertTestDiv();
List<Element> someChecked =
- document.query('#someChecked').elements;
+ document.query('#someChecked').children;
expect(someChecked.length, 4);
@@ -220,10 +220,10 @@
Element root = insertTestDiv();
List<Element> someChecked =
- document.query('#someChecked').elements;
+ document.query('#someChecked').children;
List<Element> noneChecked =
- document.query('#noneChecked').elements;
+ document.query('#noneChecked').children;
expect(someChecked.length, 4);
expect(noneChecked.length, 4);
@@ -249,10 +249,10 @@
Element root = insertTestDiv();
List<Element> someChecked =
- document.query('#someChecked').elements;
+ document.query('#someChecked').children;
List<Element> noneChecked =
- document.query('#noneChecked').elements;
+ document.query('#noneChecked').children;
expect(someChecked.length, 4);
expect(noneChecked.length, 4);
diff --git a/tests/html/indexeddb_1_test.dart b/tests/html/indexeddb_1_test.dart
index d55494c..8eda6c4 100644
--- a/tests/html/indexeddb_1_test.dart
+++ b/tests/html/indexeddb_1_test.dart
@@ -15,7 +15,7 @@
fail(e) {
guardAsync(() {
- throw const Exception('IndexedDB failure');
+ throw new Exception('IndexedDB failure');
});
}
@@ -91,7 +91,7 @@
fail(e) {
guardAsync(() {
- throw const Exception('IndexedDB failure');
+ throw new Exception('IndexedDB failure');
});
}
diff --git a/tests/html/indexeddb_2_test.dart b/tests/html/indexeddb_2_test.dart
index 0054f0e..be3c3c1 100644
--- a/tests/html/indexeddb_2_test.dart
+++ b/tests/html/indexeddb_2_test.dart
@@ -19,7 +19,7 @@
fail(e) {
guardAsync(() {
- throw const Exception('IndexedDB failure');
+ throw new Exception('IndexedDB failure');
});
}
diff --git a/tests/html/node_test.dart b/tests/html/node_test.dart
index 7197a42..01ac3c3 100644
--- a/tests/html/node_test.dart
+++ b/tests/html/node_test.dart
@@ -6,7 +6,7 @@
import '../../pkg/unittest/lib/unittest.dart';
import '../../pkg/unittest/lib/html_individual_config.dart';
import 'dart:html';
-import 'dart:svg';
+import 'dart:svg' as svg;
Node makeNode() => new Element.tag('div');
Node makeNodeWithChildren() =>
@@ -95,7 +95,7 @@
test('some', () {
var node = makeNodeWithChildren();
expect(node.nodes.some((n) => n is Comment), isTrue);
- expect(node.nodes.some((n) => n is SVGElement), isFalse);
+ expect(node.nodes.some((n) => n is svg.SvgElement), isFalse);
});
test('isEmpty', () {
diff --git a/tests/html/selectelement_test.dart b/tests/html/selectelement_test.dart
index 9de1d68..300e29e 100644
--- a/tests/html/selectelement_test.dart
+++ b/tests/html/selectelement_test.dart
@@ -21,7 +21,7 @@
new OptionElement('data', 'two', false, true),
new OptionElement(),
];
- element.elements.addAll(options);
+ element.children.addAll(options);
expect(element.selectedOptions.length, 1);
expect(element.selectedOptions[0], equals(options[4]));
});
@@ -37,7 +37,7 @@
new OptionElement('data', 'two', false, true),
new OptionElement(),
];
- element.elements.addAll(options);
+ element.children.addAll(options);
expect(element.selectedOptions.length, 2);
expect(element.selectedOptions[0], equals(options[2]));
expect(element.selectedOptions[1], equals(options[4]));
@@ -51,7 +51,7 @@
new OptionElement('data', 'two', false, true),
new OptionElement(),
];
- element.elements.addAll(options);
+ element.children.addAll(options);
// Use last to make sure that the list was correctly wrapped.
expect(element.options.last, equals(options[3]));
});
diff --git a/tests/html/shadow_dom_layout_test.dart b/tests/html/shadow_dom_layout_test.dart
index a316a2c..ec809ca 100644
--- a/tests/html/shadow_dom_layout_test.dart
+++ b/tests/html/shadow_dom_layout_test.dart
@@ -11,7 +11,7 @@
// ordered blue, red, green down the page.
main() {
var div = new DivElement();
- document.body.elements.add(div);
+ document.body.children.add(div);
// build some DOM elements
var bluebox = _colorBox('blue', 40, 20);
diff --git a/tests/html/svg_1_test.dart b/tests/html/svg_1_test.dart
index 997a361..a6bfc44 100644
--- a/tests/html/svg_1_test.dart
+++ b/tests/html/svg_1_test.dart
@@ -2,14 +2,14 @@
import '../../pkg/unittest/lib/unittest.dart';
import '../../pkg/unittest/lib/html_config.dart';
import 'dart:html';
-import 'dart:svg';
+import 'dart:svg' as svg;
// Test that SVG is present in dart:html API
main() {
useHtmlConfiguration();
- var isSVGElement = predicate((x) => x is SVGElement, 'is a SVGElement');
+ var isSvgElement = predicate((x) => x is svg.SvgElement, 'is a SvgElement');
test('simpleRect', () {
var div = new Element.tag('div');
@@ -24,7 +24,7 @@
var e = document.query('#svg1');
expect(e, isNotNull);
- SVGRectElement r = document.query('#rect1');
+ svg.RectElement r = document.query('#rect1');
expect(r.x.baseVal.value, 10);
expect(r.y.baseVal.value, 20);
expect(r.height.baseVal.value, 40);
@@ -34,13 +34,13 @@
test('trailing newline', () {
// Ensures that we handle SVG with trailing newlines.
- var logo = new SVGElement.svg("""
+ var logo = new svg.SvgElement.svg("""
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<path/>
</svg>
""");
- expect(logo, isSVGElement);
+ expect(logo, isSvgElement);
});
}
diff --git a/tests/html/svg_2_test.dart b/tests/html/svg_2_test.dart
index 11500d3..2b12818 100644
--- a/tests/html/svg_2_test.dart
+++ b/tests/html/svg_2_test.dart
@@ -2,7 +2,7 @@
import '../../pkg/unittest/lib/unittest.dart';
import '../../pkg/unittest/lib/html_config.dart';
import 'dart:html';
-import 'dart:svg';
+import 'dart:svg' as svg;
// Test that SVG elements explicitly implement the IDL interfaces (is-checks
// only, see SVGTest3 for behavioural tests).
@@ -23,43 +23,44 @@
useHtmlConfiguration();
var isElement = predicate((x) => x is Element, 'is an Element');
- var isSVGElement = predicate((x) => x is SVGElement, 'is a SVGElement');
- var isSVGSVGElement =
- predicate((x) => x is SVGSVGElement, 'is a SVGSVGElement');
+ var isSvgElement = predicate((x) => x is svg.SvgElement, 'is a SvgElement');
+ var isSvgSvgElement =
+ predicate((x) => x is svg.SvgSvgElement, 'is a SvgSvgElement');
var isNode = predicate((x) => x is Node, 'is a Node');
- var isSVGTests = predicate((x) => x is SVGTests, 'is a SVGTests');
- var isSVGLangSpace = predicate((x) => x is SVGLangSpace, 'is a SVGLangSpace');
- var isSVGExternalResourcesRequired =
- predicate((x) => x is SVGExternalResourcesRequired,
- 'is a SVGExternalResourcesRequired');
- var isSVGStylable = predicate((x) => x is SVGStylable, 'is a SVGStylable');
- var isSVGTransformable =
- predicate((x) => x is SVGTransformable, 'is a SVGTransformable');
- var isSVGLocatable = predicate((x) => x is SVGLocatable, 'is a SVGLocatable');
- var isSVGNumber = predicate((x) => x is SVGNumber, 'is a SVGNumber');
- var isSVGRect = predicate((x) => x is SVGRect, 'is a SVGRect');
+ var isSvgTests = predicate((x) => x is svg.Tests, 'is a svg.Tests');
+ var isSvgLangSpace = predicate((x) => x is svg.LangSpace, 'is a svg.LangSpace');
+ var isSvgExternalResourcesRequired =
+ predicate((x) => x is svg.ExternalResourcesRequired,
+ 'is a svg.ExternalResourcesRequired');
+ var isSvgStylable = predicate((x) => x is svg.Stylable, 'is a svg.Stylable');
+ var isSvgTransformable =
+ predicate((x) => x is svg.Transformable, 'is a svg.Transformable');
+ var isSvgLocatable =
+ predicate((x) => x is svg.Locatable, 'is a svg.Locatable');
+ var isSvgNumber = predicate((x) => x is svg.Number, 'is a svg.Number');
+ var isSvgRect = predicate((x) => x is svg.Rect, 'is a svg.Rect');
test('rect_isChecks', () {
var div = insertTestDiv();
var r = document.query('#rect1');
// Direct inheritance chain
- expect(r, isSVGElement);
+ expect(r, isSvgElement);
expect(r, isElement);
expect(r, isNode);
// Other implemented interfaces.
- expect(r, isSVGTests);
- expect(r, isSVGLangSpace);
- expect(r, isSVGExternalResourcesRequired);
- expect(r, isSVGStylable);
- expect(r, isSVGTransformable);
- expect(r, isSVGLocatable);
+ expect(r, isSvgTests);
+ expect(r, isSvgLangSpace);
+ expect(r, isSvgExternalResourcesRequired);
+ expect(r, isSvgStylable);
+ expect(r, isSvgTransformable);
+ expect(r, isSvgLocatable);
// Interfaces not implemented.
- expect(r, isNot(isSVGNumber));
- expect(r, isNot(isSVGRect));
- expect(r, isNot(isSVGSVGElement));
+ expect(r, isNot(isSvgNumber));
+ expect(r, isNot(isSvgRect));
+ expect(r, isNot(isSvgSvgElement));
div.remove();
});
diff --git a/tests/html/svg_3_test.dart b/tests/html/svg_3_test.dart
index b5762d2..d5a4e4f 100644
--- a/tests/html/svg_3_test.dart
+++ b/tests/html/svg_3_test.dart
@@ -2,7 +2,7 @@
import '../../pkg/unittest/lib/unittest.dart';
import '../../pkg/unittest/lib/html_config.dart';
import 'dart:html';
-import 'dart:svg';
+import 'dart:svg' as svg;
// Test that SVG elements have the operations advertised through all the IDL
// interfaces. This is a 'duck typing' test, and does not explicitly use 'is'
@@ -12,15 +12,15 @@
var isString = predicate((x) => x is String, 'is a String');
var isStringList = predicate((x) => x is List<String>, 'is a List<String>');
- var isSVGMatrix = predicate((x) => x is SVGMatrix, 'is a SVGMatrix');
- var isSVGAnimatedBoolean =
- predicate((x) => x is SVGAnimatedBoolean, 'is an SVGAnimatedBoolean');
- var isSVGAnimatedString =
- predicate((x) => x is SVGAnimatedString, 'is an SVGAnimatedString');
- var isSVGRect = predicate((x) => x is SVGRect, 'is a SVGRect');
- var isSVGAnimatedTransformList =
- predicate((x) => x is SVGAnimatedTransformList,
- 'is an SVGAnimatedTransformList');
+ var isSvgMatrix = predicate((x) => x is svg.Matrix, 'is a svg.Matrix');
+ var isSvgAnimatedBoolean =
+ predicate((x) => x is svg.AnimatedBoolean, 'is an svg.AnimatedBoolean');
+ var isSvgAnimatedString =
+ predicate((x) => x is svg.AnimatedString, 'is an svg.AnimatedString');
+ var isSvgRect = predicate((x) => x is svg.Rect, 'is a svg.Rect');
+ var isSvgAnimatedTransformList =
+ predicate((x) => x is svg.AnimatedTransformList,
+ 'is an svg.AnimatedTransformList');
var isCSSStyleDeclaration =
predicate((x) => x is CSSStyleDeclaration, 'is a CSSStyleDeclaration');
var isCSSValue = predicate((x) => x is CSSValue, 'is a CSSValue');
@@ -39,9 +39,9 @@
useHtmlConfiguration();
/**
- * Verifies that [e] supports the operations on the SVGTests interface.
+ * Verifies that [e] supports the operations on the svg.Tests interface.
*/
- checkSVGTests(e) {
+ checkSvgTests(e) {
// Just check that the operations seem to exist.
var rx = e.requiredExtensions;
expect(rx, isStringList);
@@ -55,9 +55,9 @@
}
/**
- * Verifies that [e] supports the operations on the SVGLangSpace interface.
+ * Verifies that [e] supports the operations on the svg.LangSpace interface.
*/
- checkSVGLangSpace(e) {
+ checkSvgLangSpace(e) {
// Just check that the attribtes seem to exist.
var lang = e.xmllang;
e.xmllang = lang;
@@ -71,21 +71,21 @@
/**
* Verifies that [e] supports the operations on the
- * SVGExternalResourcesRequired interface.
+ * svg.ExternalResourcesRequired interface.
*/
- checkSVGExternalResourcesRequired(e) {
+ checkSvgExternalResourcesRequired(e) {
var b = e.externalResourcesRequired;
- expect(b, isSVGAnimatedBoolean);
+ expect(b, isSvgAnimatedBoolean);
expect(b.baseVal, isFalse);
expect(b.animVal, isFalse);
}
/**
- * Verifies that [e] supports the operations on the SVGStylable interface.
+ * Verifies that [e] supports the operations on the svg.Stylable interface.
*/
- checkSVGStylable(e) {
+ checkSvgStylable(e) {
var className = e.$dom_svgClassName;
- expect(className, isSVGAnimatedString);
+ expect(className, isSvgAnimatedString);
var s = e.style;
expect(s, isCSSStyleDeclaration);
@@ -95,33 +95,33 @@
}
/**
- * Verifies that [e] supports the operations on the SVGLocatable interface.
+ * Verifies that [e] supports the operations on the svg.Locatable interface.
*/
- checkSVGLocatable(e) {
+ checkSvgLocatable(e) {
var v1 = e.farthestViewportElement;
var v2 = e.nearestViewportElement;
expect(v1, same(v2));
var bbox = e.getBBox();
- expect(bbox, isSVGRect);
+ expect(bbox, isSvgRect);
var ctm = e.getCTM();
- expect(ctm, isSVGMatrix);
+ expect(ctm, isSvgMatrix);
var sctm = e.getScreenCTM();
- expect(sctm, isSVGMatrix);
+ expect(sctm, isSvgMatrix);
var xf2e = e.getTransformToElement(e);
- expect(xf2e, isSVGMatrix);
+ expect(xf2e, isSvgMatrix);
}
/**
- * Verifies that [e] supports the operations on the SVGTransformable
+ * Verifies that [e] supports the operations on the svg.Transformable
* interface.
*/
- checkSVGTransformable(e) {
+ checkSvgTransformable(e) {
var trans = e.transform;
- expect(trans, isSVGAnimatedTransformList);
+ expect(trans, isSvgAnimatedTransformList);
}
testRect(name, checker) {
@@ -133,12 +133,12 @@
});
}
- testRect('rect_SVGTests', checkSVGTests);
- testRect('rect_SVGLangSpace', checkSVGLangSpace);
- testRect('rect_SVGExternalResourcesRequired',
- checkSVGExternalResourcesRequired);
- testRect('rect_SVGStylable', checkSVGStylable);
- testRect('rect_SVGLocatable', checkSVGLocatable);
- testRect('rect_SVGTransformable', checkSVGTransformable);
+ testRect('rect_SvgTests', checkSvgTests);
+ testRect('rect_SvgLangSpace', checkSvgLangSpace);
+ testRect('rect_SvgExternalResourcesRequired',
+ checkSvgExternalResourcesRequired);
+ testRect('rect_SvgStylable', checkSvgStylable);
+ testRect('rect_SvgLocatable', checkSvgLocatable);
+ testRect('rect_SvgTransformable', checkSvgTransformable);
}
diff --git a/tests/html/svgelement_test.dart b/tests/html/svgelement_test.dart
index 6787d3c..e41c35614 100644
--- a/tests/html/svgelement_test.dart
+++ b/tests/html/svgelement_test.dart
@@ -2,17 +2,17 @@
// 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 SVGElementTest;
+library SvgElementTest;
import '../../pkg/unittest/lib/unittest.dart';
import '../../pkg/unittest/lib/html_individual_config.dart';
import 'dart:html';
-import 'dart:svg';
+import 'dart:svg' as svg;
main() {
useHtmlIndividualConfiguration();
- var isSVGSVGElement =
- predicate((x) => x is SVGSVGElement, 'is a SVGSVGElement');
+ var isSvgSvgElement =
+ predicate((x) => x is svg.SvgSvgElement, 'is a SvgSvgElement');
Collection<String> _nodeStrings(Collection<Node> input) {
final out = new List<String>();
@@ -29,131 +29,131 @@
testConstructor(String tagName, Function isExpectedClass) {
test(tagName, () {
- expect(isExpectedClass(new SVGElement.tag(tagName)), isTrue);
+ expect(isExpectedClass(new svg.SvgElement.tag(tagName)), isTrue);
expect(isExpectedClass(
- new SVGElement.svg('<$tagName></$tagName>')), isTrue);
+ new svg.SvgElement.svg('<$tagName></$tagName>')), isTrue);
});
}
group('additionalConstructors', () {
group('svg', () {
test('valid', () {
- final svg = """
+ final svgContent = """
<svg version="1.1">
<circle></circle>
<path></path>
</svg>""";
- final el = new SVGElement.svg(svg);
- expect(el, isSVGSVGElement);
+ final el = new svg.SvgElement.svg(svgContent);
+ expect(el, isSvgSvgElement);
expect(el.innerHTML, "<circle></circle><path></path>");
- expect(el.outerHTML, svg);
+ expect(el.outerHTML, svgContent);
});
test('has no parent', () =>
- expect(new SVGElement.svg('<circle/>').parent, isNull)
+ expect(new svg.SvgElement.svg('<circle/>').parent, isNull)
);
test('empty', () {
- expect(() => new SVGElement.svg(""), throwsArgumentError);
+ expect(() => new svg.SvgElement.svg(""), throwsArgumentError);
});
test('too many elements', () {
- expect(() => new SVGElement.svg("<circle></circle><path></path>"),
+ expect(() => new svg.SvgElement.svg("<circle></circle><path></path>"),
throwsArgumentError);
});
});
- testConstructor('altGlyphDef', (e) => e is SVGAltGlyphDefElement);
- testConstructor('altGlyph', (e) => e is SVGAltGlyphElement);
- testConstructor('animateColor', (e) => e is SVGAnimateColorElement);
- testConstructor('animate', (e) => e is SVGAnimateElement);
+ testConstructor('altGlyphDef', (e) => e is svg.AltGlyphDefElement);
+ testConstructor('altGlyph', (e) => e is svg.AltGlyphElement);
+ testConstructor('animateColor', (e) => e is svg.AnimateColorElement);
+ testConstructor('animate', (e) => e is svg.AnimateElement);
// WebKit doesn't recognize animateMotion
- // testConstructor('animateMotion', (e) => e is SVGAnimateMotionElement);
- testConstructor('animateTransform', (e) => e is SVGAnimateTransformElement);
- testConstructor('cursor', (e) => e is SVGCursorElement);
- testConstructor('feBlend', (e) => e is SVGFEBlendElement);
- testConstructor('feColorMatrix', (e) => e is SVGFEColorMatrixElement);
+ // testConstructor('animateMotion', (e) => e is svg.AnimateMotionElement);
+ testConstructor('animateTransform', (e) => e is svg.AnimateTransformElement);
+ testConstructor('cursor', (e) => e is svg.CursorElement);
+ testConstructor('feBlend', (e) => e is svg.FEBlendElement);
+ testConstructor('feColorMatrix', (e) => e is svg.FEColorMatrixElement);
testConstructor('feComponentTransfer',
- (e) => e is SVGFEComponentTransferElement);
- testConstructor('feConvolveMatrix', (e) => e is SVGFEConvolveMatrixElement);
+ (e) => e is svg.FEComponentTransferElement);
+ testConstructor('feConvolveMatrix', (e) => e is svg.FEConvolveMatrixElement);
testConstructor('feDiffuseLighting',
- (e) => e is SVGFEDiffuseLightingElement);
+ (e) => e is svg.FEDiffuseLightingElement);
testConstructor('feDisplacementMap',
- (e) => e is SVGFEDisplacementMapElement);
- testConstructor('feDistantLight', (e) => e is SVGFEDistantLightElement);
- testConstructor('feDropShadow', (e) => e is SVGFEDropShadowElement);
- testConstructor('feFlood', (e) => e is SVGFEFloodElement);
- testConstructor('feFuncA', (e) => e is SVGFEFuncAElement);
- testConstructor('feFuncB', (e) => e is SVGFEFuncBElement);
- testConstructor('feFuncG', (e) => e is SVGFEFuncGElement);
- testConstructor('feFuncR', (e) => e is SVGFEFuncRElement);
- testConstructor('feGaussianBlur', (e) => e is SVGFEGaussianBlurElement);
- testConstructor('feImage', (e) => e is SVGFEImageElement);
- testConstructor('feMerge', (e) => e is SVGFEMergeElement);
- testConstructor('feMergeNode', (e) => e is SVGFEMergeNodeElement);
- testConstructor('feOffset', (e) => e is SVGFEOffsetElement);
- testConstructor('fePointLight', (e) => e is SVGFEPointLightElement);
+ (e) => e is svg.FEDisplacementMapElement);
+ testConstructor('feDistantLight', (e) => e is svg.FEDistantLightElement);
+ testConstructor('feDropShadow', (e) => e is svg.FEDropShadowElement);
+ testConstructor('feFlood', (e) => e is svg.FEFloodElement);
+ testConstructor('feFuncA', (e) => e is svg.FEFuncAElement);
+ testConstructor('feFuncB', (e) => e is svg.FEFuncBElement);
+ testConstructor('feFuncG', (e) => e is svg.FEFuncGElement);
+ testConstructor('feFuncR', (e) => e is svg.FEFuncRElement);
+ testConstructor('feGaussianBlur', (e) => e is svg.FEGaussianBlurElement);
+ testConstructor('feImage', (e) => e is svg.FEImageElement);
+ testConstructor('feMerge', (e) => e is svg.FEMergeElement);
+ testConstructor('feMergeNode', (e) => e is svg.FEMergeNodeElement);
+ testConstructor('feOffset', (e) => e is svg.FEOffsetElement);
+ testConstructor('fePointLight', (e) => e is svg.FEPointLightElement);
testConstructor('feSpecularLighting',
- (e) => e is SVGFESpecularLightingElement);
- testConstructor('feSpotLight', (e) => e is SVGFESpotLightElement);
- testConstructor('feTile', (e) => e is SVGFETileElement);
- testConstructor('feTurbulence', (e) => e is SVGFETurbulenceElement);
- testConstructor('filter', (e) => e is SVGFilterElement);
- testConstructor('font', (e) => e is SVGFontElement);
- testConstructor('font-face', (e) => e is SVGFontFaceElement);
- testConstructor('font-face-format', (e) => e is SVGFontFaceFormatElement);
- testConstructor('font-face-name', (e) => e is SVGFontFaceNameElement);
- testConstructor('font-face-src', (e) => e is SVGFontFaceSrcElement);
- testConstructor('font-face-uri', (e) => e is SVGFontFaceUriElement);
- testConstructor('foreignObject', (e) => e is SVGForeignObjectElement);
- testConstructor('glyph', (e) => e is SVGGlyphElement);
- testConstructor('glyphRef', (e) => e is SVGGlyphRefElement);
- testConstructor('metadata', (e) => e is SVGMetadataElement);
- testConstructor('missing-glyph', (e) => e is SVGMissingGlyphElement);
- testConstructor('set', (e) => e is SVGSetElement);
- testConstructor('tref', (e) => e is SVGTRefElement);
- testConstructor('vkern', (e) => e is SVGVKernElement);
+ (e) => e is svg.FESpecularLightingElement);
+ testConstructor('feSpotLight', (e) => e is svg.FESpotLightElement);
+ testConstructor('feTile', (e) => e is svg.FETileElement);
+ testConstructor('feTurbulence', (e) => e is svg.FETurbulenceElement);
+ testConstructor('filter', (e) => e is svg.FilterElement);
+ testConstructor('font', (e) => e is svg.FontElement);
+ testConstructor('font-face', (e) => e is svg.FontFaceElement);
+ testConstructor('font-face-format', (e) => e is svg.FontFaceFormatElement);
+ testConstructor('font-face-name', (e) => e is svg.FontFaceNameElement);
+ testConstructor('font-face-src', (e) => e is svg.FontFaceSrcElement);
+ testConstructor('font-face-uri', (e) => e is svg.FontFaceUriElement);
+ testConstructor('foreignObject', (e) => e is svg.ForeignObjectElement);
+ testConstructor('glyph', (e) => e is svg.GlyphElement);
+ testConstructor('glyphRef', (e) => e is svg.GlyphRefElement);
+ testConstructor('metadata', (e) => e is svg.MetadataElement);
+ testConstructor('missing-glyph', (e) => e is svg.MissingGlyphElement);
+ testConstructor('set', (e) => e is svg.SetElement);
+ testConstructor('tref', (e) => e is svg.TRefElement);
+ testConstructor('vkern', (e) => e is svg.VKernElement);
});
group('constructors', () {
- testConstructor('a', (e) => e is SVGAElement);
- testConstructor('circle', (e) => e is SVGCircleElement);
- testConstructor('clipPath', (e) => e is SVGClipPathElement);
- testConstructor('defs', (e) => e is SVGDefsElement);
- testConstructor('desc', (e) => e is SVGDescElement);
- testConstructor('ellipse', (e) => e is SVGEllipseElement);
- testConstructor('g', (e) => e is SVGGElement);
+ testConstructor('a', (e) => e is svg.AElement);
+ testConstructor('circle', (e) => e is svg.CircleElement);
+ testConstructor('clipPath', (e) => e is svg.ClipPathElement);
+ testConstructor('defs', (e) => e is svg.DefsElement);
+ testConstructor('desc', (e) => e is svg.DescElement);
+ testConstructor('ellipse', (e) => e is svg.EllipseElement);
+ testConstructor('g', (e) => e is svg.GElement);
// WebKit doesn't recognize hkern
- // testConstructor('hkern', (e) => e is SVGHKernElement);
- testConstructor('image', (e) => e is SVGImageElement);
- testConstructor('line', (e) => e is SVGLineElement);
- testConstructor('linearGradient', (e) => e is SVGLinearGradientElement);
+ // testConstructor('hkern', (e) => e is svg.HKernElement);
+ testConstructor('image', (e) => e is svg.ImageElement);
+ testConstructor('line', (e) => e is svg.LineElement);
+ testConstructor('linearGradient', (e) => e is svg.LinearGradientElement);
// WebKit doesn't recognize mpath
- // testConstructor('mpath', (e) => e is SVGMPathElement);
- testConstructor('marker', (e) => e is SVGMarkerElement);
- testConstructor('mask', (e) => e is SVGMaskElement);
- testConstructor('path', (e) => e is SVGPathElement);
- testConstructor('pattern', (e) => e is SVGPatternElement);
- testConstructor('polygon', (e) => e is SVGPolygonElement);
- testConstructor('polyline', (e) => e is SVGPolylineElement);
- testConstructor('radialGradient', (e) => e is SVGRadialGradientElement);
- testConstructor('rect', (e) => e is SVGRectElement);
- testConstructor('script', (e) => e is SVGScriptElement);
- testConstructor('stop', (e) => e is SVGStopElement);
- testConstructor('style', (e) => e is SVGStyleElement);
- testConstructor('switch', (e) => e is SVGSwitchElement);
- testConstructor('symbol', (e) => e is SVGSymbolElement);
- testConstructor('tspan', (e) => e is SVGTSpanElement);
- testConstructor('text', (e) => e is SVGTextElement);
- testConstructor('textPath', (e) => e is SVGTextPathElement);
- testConstructor('title', (e) => e is SVGTitleElement);
- testConstructor('use', (e) => e is SVGUseElement);
- testConstructor('view', (e) => e is SVGViewElement);
+ // testConstructor('mpath', (e) => e is svg.MPathElement);
+ testConstructor('marker', (e) => e is svg.MarkerElement);
+ testConstructor('mask', (e) => e is svg.MaskElement);
+ testConstructor('path', (e) => e is svg.PathElement);
+ testConstructor('pattern', (e) => e is svg.PatternElement);
+ testConstructor('polygon', (e) => e is svg.PolygonElement);
+ testConstructor('polyline', (e) => e is svg.PolylineElement);
+ testConstructor('radialGradient', (e) => e is svg.RadialGradientElement);
+ testConstructor('rect', (e) => e is svg.RectElement);
+ testConstructor('script', (e) => e is svg.ScriptElement);
+ testConstructor('stop', (e) => e is svg.StopElement);
+ testConstructor('style', (e) => e is svg.StyleElement);
+ testConstructor('switch', (e) => e is svg.SwitchElement);
+ testConstructor('symbol', (e) => e is svg.SymbolElement);
+ testConstructor('tspan', (e) => e is svg.TSpanElement);
+ testConstructor('text', (e) => e is svg.TextElement);
+ testConstructor('textPath', (e) => e is svg.TextPathElement);
+ testConstructor('title', (e) => e is svg.TitleElement);
+ testConstructor('use', (e) => e is svg.UseElement);
+ testConstructor('view', (e) => e is svg.ViewElement);
});
group('outerHTML', () {
test('outerHTML', () {
- final el = new SVGSVGElement();
- el.elements.add(new SVGElement.tag("circle"));
- el.elements.add(new SVGElement.tag("path"));
+ final el = new svg.SvgSvgElement();
+ el.children.add(new svg.CircleElement());
+ el.children.add(new svg.PathElement());
expect(el.outerHTML,
'<svg version="1.1"><circle></circle><path></path></svg>');
});
@@ -161,44 +161,44 @@
group('innerHTML', () {
test('get', () {
- final el = new SVGSVGElement();
- el.elements.add(new SVGElement.tag("circle"));
- el.elements.add(new SVGElement.tag("path"));
+ final el = new svg.SvgSvgElement();
+ el.children.add(new svg.CircleElement());
+ el.children.add(new svg.PathElement());
expect(el.innerHTML, '<circle></circle><path></path>');
});
test('set', () {
- final el = new SVGSVGElement();
- el.elements.add(new SVGElement.tag("circle"));
- el.elements.add(new SVGElement.tag("path"));
+ final el = new svg.SvgSvgElement();
+ el.children.add(new svg.CircleElement());
+ el.children.add(new svg.PathElement());
el.innerHTML = '<rect></rect><a></a>';
- expect(_nodeStrings(el.elements), ["rect", "a"]);
+ expect(_nodeStrings(el.children), ["rect", "a"]);
});
});
group('elementget', () {
test('get', () {
- final el = new SVGElement.svg("""
+ final el = new svg.SvgElement.svg("""
<svg version="1.1">
<circle></circle>
<path></path>
text
</svg>""");
- expect(_nodeStrings(el.elements), ["circle", "path"]);
+ expect(_nodeStrings(el.children), ["circle", "path"]);
});
});
group('elementset', () {
test('set', () {
- final el = new SVGSVGElement();
- el.elements = [new SVGElement.tag("circle"), new SVGElement.tag("path")];
+ final el = new svg.SvgSvgElement();
+ el.children = [new svg.SvgElement.tag("circle"), new svg.SvgElement.tag("path")];
expect(el.innerHTML, '<circle></circle><path></path>');
});
});
group('css', () {
test('classes', () {
- var el = new SVGElement.tag("circle");
+ var el = new svg.CircleElement();
var classes = el.classes;
expect(el.classes.length, 0);
classes.toggle('foo');
diff --git a/tests/html/xmldocument_test.dart b/tests/html/xmldocument_test.dart
index 5667812..53c3bc4 100644
--- a/tests/html/xmldocument_test.dart
+++ b/tests/html/xmldocument_test.dart
@@ -19,8 +19,8 @@
test('with a well-formed document', () {
final doc = makeDocument();
expect(doc, isXMLDocument);
- expect(doc.elements[0].tagName, 'foo');
- expect(doc.elements[1].tagName, 'bar');
+ expect(doc.children[0].tagName, 'foo');
+ expect(doc.children[1].tagName, 'bar');
});
// TODO(nweiz): re-enable this when Document#query matches the root-level
@@ -33,20 +33,20 @@
test('with a PARSERERROR tag', () {
final doc = new XMLDocument.xml("<xml><parsererror /></xml>");
- expect(doc.elements[0].tagName, 'parsererror');
+ expect(doc.children[0].tagName, 'parsererror');
});
});
// FilteredElementList is tested more thoroughly in DocumentFragmentTests.
- group('elements', () {
+ group('children', () {
test('filters out non-element nodes', () {
final doc = new XMLDocument.xml("<xml>1<a/><b/>2<c/>3<d/></xml>");
- expect(doc.elements.map((e) => e.tagName), ["a", "b", "c", "d"]);
+ expect(doc.children.map((e) => e.tagName), ["a", "b", "c", "d"]);
});
test('overwrites nodes when set', () {
final doc = new XMLDocument.xml("<xml>1<a/><b/>2<c/>3<d/></xml>");
- doc.elements = [new XMLElement.tag('x'), new XMLElement.tag('y')];
+ doc.children = [new XMLElement.tag('x'), new XMLElement.tag('y')];
expect(doc.outerHTML, "<xml><x></x><y></y></xml>");
});
});
diff --git a/tests/html/xmlelement_test.dart b/tests/html/xmlelement_test.dart
index 0831518..1436b18 100644
--- a/tests/html/xmlelement_test.dart
+++ b/tests/html/xmlelement_test.dart
@@ -17,7 +17,7 @@
makeElementWithParent() {
final parent = new XMLElement.xml(
"<parent><before/><xml><foo/><bar/></xml><after/></parent>");
- return parent.elements[1];
+ return parent.children[1];
}
group('constructors', () {
@@ -25,8 +25,8 @@
test('with a well-formed document', () {
final el = makeElement();
expect(el, isXMLElement);
- expect(el.elements[0].tagName, 'foo');
- expect(el.elements[1].tagName, 'bar');
+ expect(el.children[0].tagName, 'foo');
+ expect(el.children[1].tagName, 'bar');
});
test('with too many nodes', () {
@@ -39,7 +39,7 @@
test('with a PARSERERROR tag', () {
final el = new XMLElement.xml("<xml><parsererror /></xml>");
- expect('parsererror', el.elements[0].tagName, 'parsererror');
+ expect('parsererror', el.children[0].tagName, 'parsererror');
});
test('has no parent', () =>
@@ -54,15 +54,15 @@
});
// FilteredElementList is tested more thoroughly in DocumentFragmentTests.
- group('elements', () {
+ group('children', () {
test('filters out non-element nodes', () {
final el = new XMLElement.xml("<xml>1<a/><b/>2<c/>3<d/></xml>");
- expect(el.elements.map((e) => e.tagName), ["a", "b", "c", "d"]);
+ expect(el.children.map((e) => e.tagName), ["a", "b", "c", "d"]);
});
test('overwrites nodes when set', () {
final el = new XMLElement.xml("<xml>1<a/><b/>2<c/>3<d/></xml>");
- el.elements = [new XMLElement.tag('x'), new XMLElement.tag('y')];
+ el.children = [new XMLElement.tag('x'), new XMLElement.tag('y')];
expect(el.outerHTML, "<xml><x></x><y></y></xml>");
});
});
@@ -450,7 +450,7 @@
final newEl = new XMLElement.tag("b");
expect(el.insertAdjacentElement("beforeBegin", newEl), newEl);
expect(el.innerHTML, "<foo></foo><bar></bar>");
- expect(el.parent.innerHTML,
+ expect(el.parent.innerHTML,
"<before></before><b></b><xml><foo></foo><bar></bar>"
"</xml><after></after>");
});
@@ -460,7 +460,7 @@
final newEl = new XMLElement.tag("b");
expect(el.insertAdjacentElement("afterEnd", newEl), newEl);
expect(el.innerHTML, "<foo></foo><bar></bar>");
- expect(el.parent.innerHTML,
+ expect(el.parent.innerHTML,
"<before></before><xml><foo></foo><bar></bar></xml><b>"
"</b><after></after>");
});
@@ -497,7 +497,7 @@
final el = makeElementWithParent();
el.insertAdjacentText("beforeBegin", "foo");
expect(el.innerHTML, "<foo></foo><bar></bar>");
- expect(el.parent.innerHTML,
+ expect(el.parent.innerHTML,
"<before></before>foo<xml><foo></foo><bar></bar></xml>"
"<after></after>");
});
@@ -506,7 +506,7 @@
final el = makeElementWithParent();
el.insertAdjacentText("afterEnd", "foo");
expect(el.innerHTML, "<foo></foo><bar></bar>");
- expect(el.parent.innerHTML,
+ expect(el.parent.innerHTML,
"<before></before><xml><foo></foo><bar></bar></xml>foo"
"<after></after>");
});
diff --git a/tests/isolate/unresolved_ports_negative_test.dart b/tests/isolate/unresolved_ports_negative_test.dart
index 518884b..3007645 100644
--- a/tests/isolate/unresolved_ports_negative_test.dart
+++ b/tests/isolate/unresolved_ports_negative_test.dart
@@ -2,46 +2,12 @@
// 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.
-// negative test to ensure that API_unresolvedPortsTest works.
-library unresolved_ports;
+// negative test to ensure that unresolved_ports works.
+library unresolved_ports_negative;
import 'dart:isolate';
import '../../pkg/unittest/lib/unittest.dart';
-
-bethIsolate() {
- port.receive(expectAsync2((msg, reply) => msg[1].send(
- '${msg[0]}\nBeth says: Tim are you coming? And Bob?', reply)));
-}
-
-timIsolate() {
- SendPort bob = spawnFunction(bobIsolate);
- port.receive(expectAsync2((msg, reply) => bob.send(
- '$msg\nTim says: Can you tell "main" that we are all coming?', reply)));
-}
-
-bobIsolate() {
- port.receive(expectAsync2((msg, reply) => reply.send(
- '$msg\nBob says: we are all coming!')));
-}
+import 'unresolved_ports_test.dart' as positive_test;
main() {
- test('Message chain with unresolved ports', () {
- ReceivePort port = new ReceivePort();
- port.receive(expectAsync2((msg, _) {
- expect(msg, equals('main says: Beth, find out if Tim is coming.'
- + '\nBeth says: Tim are you coming? And Bob?'
- + '\nTim says: Can you tell "main" that we are all coming?'
- + '\nBob says: we are NOT coming!')); // should be 'all', not 'NOT'
- port.close();
- }));
-
- SendPort tim = spawnFunction(timIsolate);
- SendPort beth = spawnFunction(bethIsolate);
-
- beth.send(
- // because tim is created asynchronously, here we are sending an
- // unresolved port:
- ['main says: Beth, find out if Tim is coming.', tim],
- port.toSendPort());
- });
+ positive_test.baseTest(failForNegativeTest: true);
}
-
diff --git a/tests/isolate/unresolved_ports_test.dart b/tests/isolate/unresolved_ports_test.dart
index 06f5d58..1072000 100644
--- a/tests/isolate/unresolved_ports_test.dart
+++ b/tests/isolate/unresolved_ports_test.dart
@@ -15,6 +15,8 @@
// by giving 'beth' a send-port to 'tim'.
bethIsolate() {
+ // TODO(sigmund): use expectAsync2 when it is OK to use it within an isolate
+ // (issue #6856)
port.receive((msg, reply) => msg[1].send(
'${msg[0]}\nBeth says: Tim are you coming? And Bob?', reply));
}
@@ -30,7 +32,7 @@
'$msg\nBob says: we are all coming!'));
}
-main() {
+baseTest({bool failForNegativeTest: false}) {
test('Message chain with unresolved ports', () {
ReceivePort port = new ReceivePort();
port.receive(expectAsync2((msg, _) {
@@ -38,6 +40,7 @@
'\nBeth says: Tim are you coming? And Bob?'
'\nTim says: Can you tell "main" that we are all coming?'
'\nBob says: we are all coming!'));
+ expect(failForNegativeTest, isFalse);
port.close();
}));
@@ -51,3 +54,5 @@
port.toSendPort());
});
}
+
+main() => baseTest();
diff --git a/tests/language/abstract_factory_constructor_test.dart b/tests/language/abstract_factory_constructor_test.dart
index 0fc35de..d2e3a6f 100644
--- a/tests/language/abstract_factory_constructor_test.dart
+++ b/tests/language/abstract_factory_constructor_test.dart
@@ -13,12 +13,12 @@
class A1 {
A1() {}
- abstract method();
+ method(); // Abstract.
factory A1.make() { return new B(); }
}
class A2 {
- abstract method();
+ method(); // Abstract.
A2.make() {}
}
diff --git a/tests/language/abstract_getter_test.dart b/tests/language/abstract_getter_test.dart
index 9e6e2c7..a745e35 100644
--- a/tests/language/abstract_getter_test.dart
+++ b/tests/language/abstract_getter_test.dart
@@ -5,7 +5,7 @@
// Test to ensure that an abstract getter is not mistaken for a field.
class Foo {
- abstract get i;
+ get i; // Abstract.
}
class Bar {
diff --git a/tests/language/abstract_syntax_test.dart b/tests/language/abstract_syntax_test.dart
index 4e653bf..b3f0a20 100644
--- a/tests/language/abstract_syntax_test.dart
+++ b/tests/language/abstract_syntax_test.dart
@@ -8,13 +8,11 @@
}
class A {
- abstract foo();
- abstract static bar(); /// 01: compile-time error
- static abstract baz(); /// 02: compile-time error
+ /* abstract */ foo();
+ /* abstract */ static bar(); /// 01: compile-time error
}
class B extends A {
foo() => 42;
bar() => 87;
- baz() => 99;
}
diff --git a/tests/language/allocate_large_object.dart b/tests/language/allocate_large_object_test.dart
similarity index 100%
rename from tests/language/allocate_large_object.dart
rename to tests/language/allocate_large_object_test.dart
diff --git a/tests/language/arithmetic2_test.dart b/tests/language/arithmetic2_test.dart
index 64fc0c9..b0715e0 100644
--- a/tests/language/arithmetic2_test.dart
+++ b/tests/language/arithmetic2_test.dart
@@ -26,8 +26,6 @@
return true;
} on ArgumentError catch (e) {
return true;
- } on NullPointerException catch (e) {
- return true;
} on TypeError catch (e) {
// In type checked mode.
return true;
diff --git a/tests/language/bad_constructor_test.dart b/tests/language/bad_constructor_test.dart
index f4245af..3228017 100644
--- a/tests/language/bad_constructor_test.dart
+++ b/tests/language/bad_constructor_test.dart
@@ -10,12 +10,6 @@
// Factory may not be static.
static factory A() { return null; } /// 01: compile-time error
- // Constructor may not be abstract.
- abstract A(); /// 02: compile-time error
-
- // Factory may not be abstract
- abstract factory A() { return null; } /// 03: compile-time error
-
// Named constructor may not conflict with names of methods and fields.
var m;
A.m() { m = 0; } /// 04: compile-time error
diff --git a/tests/language/bailout2_test.dart b/tests/language/bailout2_test.dart
new file mode 100644
index 0000000..085c1d8
--- /dev/null
+++ b/tests/language/bailout2_test.dart
@@ -0,0 +1,24 @@
+// Copyright (c) 2012, 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.
+
+var a;
+
+main() {
+ // Write a loop to force a bailout method on [A.foo].
+ for (int i = 0; i < 10; i++) {
+ if (a != null) new A().foo([]);
+ Expect.equals(42, new A().foo(new A()));
+ }
+}
+
+class A {
+ // In dart2js, the optimized version of foo tries to optimize the
+ // uses of a.length (which is used two times here: for the index,
+ // and for the bounds check), and that optmization used to crash
+ // the compiler.
+ foo(a) => a[a.length];
+
+ int get length => 42;
+ operator[] (index) => 42;
+}
diff --git a/tests/language/bailout3_test.dart b/tests/language/bailout3_test.dart
new file mode 100644
index 0000000..16cc121
--- /dev/null
+++ b/tests/language/bailout3_test.dart
@@ -0,0 +1,39 @@
+// Copyright (c) 2012, 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.
+
+// Test that the return type of a method is being registered for both
+// its bailout and optimized version in dart2js.
+
+var a;
+
+bar() {
+ if (a[0] == 0) {
+ // Force bailout version.
+ bar();
+ // Avoid inlining.
+ throw 0;
+ }
+ for (int i = 0; i < 10; i++) {
+ a[0] = 42;
+ }
+ // This return should say that bar can return an array or unknown.
+ return a;
+}
+
+foo() {
+ if (a[0] == 0) {
+ // Avoid inlining.
+ throw 0;
+ }
+ var a = bar();
+ // This check used to fail because dart2js was assuming [a] was an
+ // array.
+ Expect.equals(1, a.length);
+}
+
+main() {
+ a = new Map();
+ bar();
+ foo();
+}
diff --git a/tests/language/bailout4_test.dart b/tests/language/bailout4_test.dart
new file mode 100644
index 0000000..52e9713
--- /dev/null
+++ b/tests/language/bailout4_test.dart
@@ -0,0 +1,30 @@
+// Copyright (c) 2012, 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.
+
+// Test that dart2s computes the right bailout environment in presence
+// of nested loops.
+
+class A {
+ operator[] (index) => 42;
+}
+
+var a = new A();
+var b = new List(4);
+int count = 0;
+
+main() {
+ // Make the method recursive to make sure it gets an optimized
+ // version.
+ if (b[0] != null) main();
+
+ for (int i = 0; i < 2; i++) {
+ for (int j = 0; j < 2; j++) {
+ for (int k = 0; k < 2; k++) {
+ Expect.equals(42, a[i + j + k]);
+ count++;
+ }
+ }
+ }
+ Expect.equals(8, count);
+}
diff --git a/tests/language/call_through_null_getter_test.dart b/tests/language/call_through_null_getter_test.dart
index 0502496..24edb03 100644
--- a/tests/language/call_through_null_getter_test.dart
+++ b/tests/language/call_through_null_getter_test.dart
@@ -19,57 +19,39 @@
static void testTopLevel() {
topLevel = null;
- expectThrowsNullPointerException(() { topLevel(); });
- expectThrowsNullPointerException(() { (topLevel)(); });
- expectThrowsNullPointerException(() { TOP_LEVEL_NULL(); });
- expectThrowsNullPointerException(() { (TOP_LEVEL_NULL)(); });
+ expectThrowsNoSuchMethodError(() { topLevel(); });
+ expectThrowsNoSuchMethodError(() { (topLevel)(); });
+ expectThrowsNoSuchMethodError(() { TOP_LEVEL_NULL(); });
+ expectThrowsNoSuchMethodError(() { (TOP_LEVEL_NULL)(); });
}
static void testField() {
A a = new A();
a.field = null;
- expectThrowsNullPointerException(() { a.field(); });
- expectThrowsNullPointerException(() { (a.field)(); });
+ expectThrowsNoSuchMethodError(() { a.field(); });
+ expectThrowsNoSuchMethodError(() { (a.field)(); });
}
static void testGetter() {
A a = new A();
a.field = null;
- expectThrowsNullPointerException(() { a.getter(); });
- expectThrowsNullPointerException(() { (a.getter)(); });
+ expectThrowsNoSuchMethodError(() { a.getter(); });
+ expectThrowsNoSuchMethodError(() { (a.getter)(); });
}
static void testMethod() {
A a = new A();
a.field = null;
- expectThrowsNullPointerException(() { a.method()(); });
+ expectThrowsNoSuchMethodError(() { a.method()(); });
}
- static void expectThrowsNullPointerException(fn) {
- var exception = catchException(fn);
- if (exception is! NullPointerException) {
- Expect.fail("Wrong exception. Expected: NullPointerException"
- " got: ${exception}");
- }
+ static void expectThrowsNoSuchMethodError(fn) {
+ Expect.throws(fn, (e) => e is NoSuchMethodError,
+ "Should throw NoSuchMethodError");
}
-
- static catchException(fn) {
- bool caught = false;
- var result = null;
- try {
- fn();
- Expect.equals(true, false); // Shouldn't reach this.
- } catch (e) {
- caught = true;
- result = e;
- }
- Expect.equals(true, caught);
- return result;
- }
-
}
diff --git a/tests/language/closure3_test.dart b/tests/language/closure3_test.dart
index 8123228..c01bfc1 100644
--- a/tests/language/closure3_test.dart
+++ b/tests/language/closure3_test.dart
@@ -2,7 +2,7 @@
// 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.
-// Test that a NullPointerException is thrown even when an expression
+// Test that a NoSuchMethodError is thrown even when an expression
// seems to be free of side-effects.
test(x, y) {
@@ -10,11 +10,5 @@
}
main() {
- try {
- test(null, 2);
- Expect.fail('Expected NullPointerException');
- } on NullPointerException catch (ex) {
- return;
- }
- Expect.fail('Expected NullPointerException');
+ Expect.throws(() { test(null, 2); }, (e) => e is NoSuchMethodError);
}
diff --git "a/tests/standalone/io/\303\246\303\270\303\245.dart" b/tests/language/compile_time_constant_q_test.dart
similarity index 71%
copy from "tests/standalone/io/\303\246\303\270\303\245.dart"
copy to tests/language/compile_time_constant_q_test.dart
index d03e720..3b38e3c 100644
--- "a/tests/standalone/io/\303\246\303\270\303\245.dart"
+++ b/tests/language/compile_time_constant_q_test.dart
@@ -2,8 +2,7 @@
// 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.
-import 'dart:io';
-
+const double x = 14.0;
main() {
- Expect.equals('æøå', new File('æøå.dat').readAsStringSync());
+ print(x);
}
diff --git a/tests/language/deopt_smi_op.dart b/tests/language/deopt_smi_op_test.dart
similarity index 100%
rename from tests/language/deopt_smi_op.dart
rename to tests/language/deopt_smi_op_test.dart
diff --git "a/tests/standalone/io/\303\246\303\270\303\245.dart" b/tests/language/do_while3_test.dart
similarity index 63%
copy from "tests/standalone/io/\303\246\303\270\303\245.dart"
copy to tests/language/do_while3_test.dart
index d03e720..615ebd1 100644
--- "a/tests/standalone/io/\303\246\303\270\303\245.dart"
+++ b/tests/language/do_while3_test.dart
@@ -2,8 +2,12 @@
// 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.
-import 'dart:io';
+// Test that a condition is only evaluated once in a loop.
main() {
- Expect.equals('æøå', new File('æøå.dat').readAsStringSync());
+ int c = 0;
+ do {
+ c++;
+ } while (c++ < 2);
+ Expect.equals(4, c);
}
diff --git a/tests/language/double_int_to_string_test.dart b/tests/language/double_int_to_string_test.dart
new file mode 100644
index 0000000..96dbe0e
--- /dev/null
+++ b/tests/language/double_int_to_string_test.dart
@@ -0,0 +1,18 @@
+// Copyright (c) 2012, 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.
+// Test basic integer operations.
+
+main() {
+ Expect.equals("0.0", (0.0).toString());
+ Expect.equals("9.0", (9.0).toString());
+ Expect.equals("90.0", (90.0).toString());
+ Expect.equals("111111111111111110000.0",
+ (111111111111111111111.0).toString());
+ Expect.equals("-9.0", (-9.0).toString());
+ Expect.equals("-90.0", (-90.0).toString());
+ Expect.equals("-111111111111111110000.0",
+ (-111111111111111111111.0).toString());
+ Expect.equals("1000.0", (1000.0).toString());
+ Expect.equals("1000000000000000100.0", (1000000000000000128.0).toString());
+}
diff --git a/tests/language/double_to_string.dart b/tests/language/double_to_string_test.dart
similarity index 82%
rename from tests/language/double_to_string.dart
rename to tests/language/double_to_string_test.dart
index 6e852a1..ce30f50 100644
--- a/tests/language/double_to_string.dart
+++ b/tests/language/double_to_string_test.dart
@@ -7,15 +7,10 @@
Expect.equals("NaN", (double.NAN).toString());
Expect.equals("Infinity", (1/0).toString());
Expect.equals("-Infinity", (-1/0).toString());
- Expect.equals("0.0", (0.0).toString());
- Expect.equals("9.0", (9.0).toString());
- Expect.equals("90.0", (90.0).toString());
Expect.equals("90.12", (90.12).toString());
Expect.equals("0.1", (0.1).toString());
Expect.equals("0.01", (0.01).toString());
Expect.equals("0.0123", (0.0123).toString());
- Expect.equals("111111111111111110000.0",
- (111111111111111111111.0).toString());
Expect.equals("1.1111111111111111e+21",
(1111111111111111111111.0).toString());
Expect.equals("1.1111111111111111e+22",
@@ -30,14 +25,10 @@
Expect.equals("1.23e-8", (0.0000000123).toString());
Expect.equals("-0.0", (-0.0).toString());
- Expect.equals("-9.0", (-9.0).toString());
- Expect.equals("-90.0", (-90.0).toString());
Expect.equals("-90.12", (-90.12).toString());
Expect.equals("-0.1", (-0.1).toString());
Expect.equals("-0.01", (-0.01).toString());
Expect.equals("-0.0123", (-0.0123).toString());
- Expect.equals("-111111111111111110000.0",
- (-111111111111111111111.0).toString());
Expect.equals("-1.1111111111111111e+21",
(-1111111111111111111111.0).toString());
Expect.equals("-1.1111111111111111e+22",
@@ -51,9 +42,7 @@
Expect.equals("-1.2e-8", (-0.000000012).toString());
Expect.equals("-1.23e-8", (-0.0000000123).toString());
- Expect.equals("1000.0", (1000.0).toString());
Expect.equals("0.00001", (0.00001).toString());
- Expect.equals("1000000000000000100.0", (1000000000000000128.0).toString());
Expect.equals("1e+21", (1000000000000000012800.0).toString());
Expect.equals("-1e+21", (-1000000000000000012800.0).toString());
Expect.equals("1e-7", (0.0000001).toString());
diff --git a/tests/language/exception_in_increment.dart b/tests/language/exception_in_increment_test.dart
similarity index 100%
rename from tests/language/exception_in_increment.dart
rename to tests/language/exception_in_increment_test.dart
diff --git a/tests/language/exception_test.dart b/tests/language/exception_test.dart
index c08a872..0876c5c 100644
--- a/tests/language/exception_test.dart
+++ b/tests/language/exception_test.dart
@@ -21,11 +21,11 @@
bool correctCatch = false;
try {
- // This throws NullPointerException.
+ // This throws NullThrownError
throw null;
} on String catch (s) {
correctCatch = false;
- } on NullPointerException catch (e) {
+ } on NullThrownError catch (e) {
correctCatch = true;
} catch (x) {
correctCatch = false;
diff --git a/tests/language/external_test.dart b/tests/language/external_test.dart
index 8e1b879..324629a 100644
--- a/tests/language/external_test.dart
+++ b/tests/language/external_test.dart
@@ -14,7 +14,6 @@
external f12() => 1; /// 12: compile-time error
external static f13(); /// 13: runtime error
static external f14(); /// 14: compile-time error
- external abstract f15(); /// 15: compile-time error
int external f16(); /// 16: compile-time error
external Foo.n20(); /// 20: runtime error
diff --git a/tests/language/factory_redirection2_test.dart b/tests/language/factory_redirection2_test.dart
new file mode 100644
index 0000000..b4592d8
--- /dev/null
+++ b/tests/language/factory_redirection2_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2012, 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.
+
+// Test that it is a compile-time error to have a redirection in a
+// non-factory constructor.
+
+class Foo {
+ Foo()
+ = Bar /// 01: compile-time error
+ ;
+}
+
+class Bar extends Foo {
+ factory Bar() => null;
+}
+
+main() {
+ Expect.isTrue(new Foo() is Foo);
+ Expect.isFalse(new Foo() is Bar);
+}
diff --git a/tests/language/first_class_types_constants_test.dart b/tests/language/first_class_types_constants_test.dart
new file mode 100644
index 0000000..6a4c4d4
--- /dev/null
+++ b/tests/language/first_class_types_constants_test.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2012, 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.
+
+class C<T> {
+ final T t;
+ const C(this.t);
+}
+
+typedef int Fun(bool, String);
+
+const c0 = C;
+const c1 = const C(C);
+const c2 = Fun;
+const c3 = const C(Fun);
+
+main() {
+ Expect.identical(C, C);
+ Expect.identical(C, c0);
+ Expect.identical(c1, c1);
+ Expect.notEquals(c0, c1);
+ Expect.notEquals(c1, c2);
+ Expect.identical(c1.t, c0);
+ Expect.notEquals(C, Fun);
+ Expect.identical(Fun, Fun);
+ Expect.identical(Fun, c2);
+ Expect.identical(c3.t, c2);
+}
diff --git a/tests/language/first_class_types_literals_test.dart b/tests/language/first_class_types_literals_test.dart
index df8d6d6..31724b6 100644
--- a/tests/language/first_class_types_literals_test.dart
+++ b/tests/language/first_class_types_literals_test.dart
@@ -2,7 +2,7 @@
// 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.
-class C<T> {}
+class C<T, U, V> {}
class D {}
@@ -23,6 +23,9 @@
// Test that types from runtimeType and literals agree.
Expect.equals(int, 1.runtimeType);
+ Expect.equals(String, 'hest'.runtimeType);
+ Expect.equals(double, (0.5).runtimeType);
+ Expect.equals(bool, true.runtimeType);
Expect.equals(C, new C().runtimeType);
Expect.equals(D, new D().runtimeType);
diff --git a/tests/language/first_class_types_test.dart b/tests/language/first_class_types_test.dart
index 419dbbb..95090d6 100644
--- a/tests/language/first_class_types_test.dart
+++ b/tests/language/first_class_types_test.dart
@@ -24,12 +24,19 @@
var i = 1;
var s = 'string';
var d = 3.14;
+ var b = true;
sameType(2, i);
sameType('hest', s);
sameType(1.2, d);
+ sameType(false, b);
var l = [1, 2, 3];
var m = {'a': 1, 'b': 2};
sameType([], l);
sameType({}, m);
+
+ // Test parameterized lists.
+ sameType(new List<int>(), new List<int>());
+ differentType(new List<int>(), new List<num>());
+ differentType(new List<int>(), new List());
}
diff --git a/tests/language/get_set_syntax_test.dart b/tests/language/get_set_syntax_test.dart
index 4f9d80c..2882f45 100644
--- a/tests/language/get_set_syntax_test.dart
+++ b/tests/language/get_set_syntax_test.dart
@@ -23,8 +23,6 @@
class C1 {
List get;
List get a;
- abstract List get a2;
- abstract List get a3 => null; /// 08: compile-time error
List get b, c; /// 09: compile-time error
List set;
@@ -35,8 +33,6 @@
class C2 {
List<int> get;
List<int> get a;
- abstract List<int> get a2;
- abstract List<int> get a3 => null; /// 08: compile-time error
List<int> get b, c; /// 13: compile-time error
List<int> set;
diff --git a/tests/language/implicit_this_test.dart b/tests/language/implicit_this_test.dart
index 4d776e2..3ae0ea8 100644
--- a/tests/language/implicit_this_test.dart
+++ b/tests/language/implicit_this_test.dart
@@ -17,7 +17,7 @@
// This class is implicitly abstract as it declares an abstract getter
// method.
class SubAbstract2 extends Abstract {
- abstract get x;
+ get x; // Abstract.
}
// This class does not implement "x" either, but it is not marked
diff --git a/tests/language/inline_add_constants_to_initial_env.dart b/tests/language/inline_add_constants_to_initial_env_test.dart
similarity index 100%
rename from tests/language/inline_add_constants_to_initial_env.dart
rename to tests/language/inline_add_constants_to_initial_env_test.dart
diff --git a/tests/language/inline_closure_with_constant_arguments.dart b/tests/language/inline_closure_with_constant_arguments_test.dart
similarity index 100%
rename from tests/language/inline_closure_with_constant_arguments.dart
rename to tests/language/inline_closure_with_constant_arguments_test.dart
diff --git a/tests/language/interface_test.dart b/tests/language/interface_test.dart
index 9104354..b36fbc7 100644
--- a/tests/language/interface_test.dart
+++ b/tests/language/interface_test.dart
@@ -30,9 +30,9 @@
int foo() { return 1; }
// intentionally unimplemented methods
- abstract beta();
- abstract String beta1();
- abstract String beta2(double d);
+ beta(); // Abstract.
+ String beta1(); // Abstract.
+ String beta2(double d); // Abstract.
}
main() {
diff --git a/tests/language/language.status b/tests/language/language.status
index ee3775a..5c4c267 100644
--- a/tests/language/language.status
+++ b/tests/language/language.status
@@ -16,10 +16,12 @@
# 3) Update the language/src directory with the updated test.
[ $compiler == none ]
+library_juxtaposition_test: Fail # Issue 6877
part_test: Fail
part2_test: Fail
gc_test: Pass, Fail # Issue 1487
pseudo_kw_illegal_test/14: Fail # Issue 356
+first_class_types_constants_test: Fail # Issue 6282
# These bugs refer currently ongoing language discussions.
constructor5_test: Fail # (Discussion ongoing)
@@ -48,8 +50,6 @@
compile_time_constant10_test/none: Fail # issue 5214
-call_through_null_getter_test: Fail # issue 6124
-
invocation_mirror_test: Fail # issue 3326, 3622.
no_such_method_test: Fail # issue 3326, 3622.
@@ -82,6 +82,8 @@
compile_time_constant_checked3_test/06: Fail, OK
[ $compiler == dartc ]
+library_juxtaposition_test: Fail # Issue 6881
+new_expression_type_args_test/0*: Fail # Wrongly reports compile-time error.
redirecting_factory_infinite_steps_test/01: Fail # http://dartbug.com/6560
implicit_this_test/none: Fail # should not warn about allocating SubAbstract2
metadata_test: Fail
@@ -89,7 +91,6 @@
bad_override_test/02: Fail, OK # issue 6578, warning expected on "static" modifier
const_locals_test: Fail
const_nested_test: Fail
-get_set_syntax_test/none: Fail # does not accept getter/setter with no method body
application_negative_test: Fail # Runtime only test, rewrite as multitest
assign_instance_method_negative_test: Fail # Runtime only test, rewrite as multitest
body_less_constructor_wrong_arg_negative_test: Fail # Runtime only test, rewrite as multitest
@@ -138,7 +139,6 @@
factory5_test/00: Fail # issue 3079
field_method4_negative_test: Fail # Runtime only test, rewrite as multitest
-first_class_types_literals_test: Fail # issue 6283
getter_no_setter_test/01: Fail # Fails to detect compile-time error.
getter_no_setter2_test/01: Fail # Fails to detect compile-time error.
instance_call_wrong_argument_count_negative_test: Fail # Runtime only test, rewrite as multitest
@@ -191,8 +191,6 @@
bad_constructor_test/05: Fail, OK
# test issue 5529
-abstract_factory_constructor_test/none: Fail, OK
-abstract_syntax_test/none: Fail, OK
interface_test/none: Fail, OK
# test issue 6338
@@ -336,6 +334,12 @@
typed_message_test: Fail, OK
+# test issue 6818
+type_variable_identifier_expression_negative_test: Fail, OK
+
+# test issue 6866
+abstract_factory_constructor_test/00: Fail, OK
+
#
# Add new dartc annotations above in alphabetical order
@@ -381,13 +385,13 @@
*: Skip
[ $compiler == dart2dart ]
-const_factory_redirection_test: Fail # TRIAGE
-redirecting_factory_infinite_steps_test/01: Fail, Pass # TRIAGE: fails in minified mode. http://dartbug.com/6603
+factory_redirection2_test/01: Fail # Inherited from dart2js.
+const_factory_redirection_test: Fail # http://dartbug.com/6894
-many_overridden_no_such_method_test: Fail, Pass # TRIAGE: fails in minified mode
-overridden_no_such_method_test: Fail, Pass # TRIAGE: fails in minified mode
+many_overridden_no_such_method_test: Fail, Pass, OK # Fails in minified mode, test depends on method names.
+overridden_no_such_method_test: Fail, Pass, OK # Fails in minified mode, test depends on method names.
+
# Calling unresolved class constructor:
-# call_constructor_on_unresolvable_class_test/07: Fail
call_nonexistent_constructor_test: Fail
bad_override_test/01: Fail
@@ -396,8 +400,7 @@
illegal_invocation_test/04: Fail, OK # Class literals are expressions now.
illegal_invocation_test/05: Fail, OK # Type variables are expressions now.
-# Renaming type from platform library:
-dynamic_test: Fail
+first_class_types_constants_test: Fail # Issue 6282
# Missing compile-time error when modifying final local variables
final_variable_assignment_test/01: Fail
@@ -554,7 +557,9 @@
named_parameters_aggregated_test/05: Fail # Compile-time error reported instead of static type warning.
-new_expression_type_args_test/02: Fail # Test does not conform with spec.
+type_variable_bounds_test/07: Fail # Wrongly reports compile-time error.
+new_expression_type_args_test/00: Fail # Wrongly reports compile-time error.
+new_expression_type_args_test/01: Fail # Wrongly reports compile-time error.
get_set_syntax_test/00: Fail # Fixed by https://chromiumcodereview.appspot.com/10915111
get_set_syntax_test/01: Fail # Fixed by https://chromiumcodereview.appspot.com/10915111
@@ -589,8 +594,6 @@
type_error_test: Fail, OK # VM bug: http://dartbug.com/5280
-call_through_null_getter_test: Fail # issue 6130
-
# This is a VM error when the compiled code is run.
invocation_mirror_test: Fail # issue 3326, 3622.
invocation_mirror_indirect_test: Fail # issue 3326, 3622.
diff --git a/tests/language/language_dart2js.status b/tests/language/language_dart2js.status
index 224e0e6..ceece29 100644
--- a/tests/language/language_dart2js.status
+++ b/tests/language/language_dart2js.status
@@ -42,13 +42,6 @@
type_variable_bounds2_test/03: Fail
type_variable_bounds2_test/05: Fail
type_variable_bounds2_test/06: Pass # For the wrong reasons.
-type_variable_scope_test/00: Fail
-type_variable_scope_test/01: Fail
-type_variable_scope_test/02: Fail
-type_variable_scope_test/03: Fail
-type_variable_scope_test/04: Fail
-type_variable_scope_test/05: Fail
-type_variable_scope2_test: Fail
assign_top_method_negative_test: Pass # For the wrong reasons.
f_bounded_quantification_test/01: Fail
f_bounded_quantification_test/02: Fail
@@ -59,16 +52,11 @@
factory1_test/00: Fail
factory1_test/01: Fail
-type_parameter_test/01: Fail # Issue 4932
-type_parameter_test/02: Fail # Issue 4932
-type_parameter_test/03: Fail # Issue 4932
-type_parameter_test/04: Fail # Issue 4932
-
super_call4_test: Fail # Badly generated noSuchMethod call.
[ $compiler == dart2js && $unchecked ]
assertion_test: Fail
-new_expression_type_args_test/02: Fail # Test does not conform with spec.
+type_variable_bounds_test/07: Fail # Wrongly reports compile-time error.
factory_redirection_test/08: Fail
factory_redirection_test/09: Fail
factory_redirection_test/10: Fail
@@ -94,6 +82,11 @@
compile_time_constant_checked3_test/06: Fail, OK
[ $compiler == dart2js ]
+factory_redirection2_test/01: Fail # http://dartbug.com/6791
+new_expression_type_args_test/00: Fail # Wrongly reports compile-time error.
+new_expression_type_args_test/01: Fail # Wrongly reports compile-time error.
+double_int_to_string_test: Fail # Issue 1533 (double/integer distinction)
+mint_arithmetic_test: Fail # Issue 1533 (big integer arithmetic).
arithmetic_test: Fail # http://dartbug.com/6627
factory_redirection_test/01: Fail
factory_redirection_test/02: Crash
@@ -151,7 +144,6 @@
const_var_test: Fail # Map literals take 2 type arguments.
map_literal3_test: Fail # Map literals take 2 type arguments.
ct_const_test: Fail # We don't take the generic type into account yet.
-char_escape_test: Fail # Unhandled non-BMP character: U+10000
default_factory_library_test: Fail # lib is not a type
dynamic_test: Fail # cannot resolve type F1
constructor_redirect2_test/03: Fail # redirecting ctor with initializing formal
@@ -168,7 +160,6 @@
function_type_parameter2_test: Fail # Internal Error: expected optional parameters
function_type_parameter_test: Fail # Internal Error: expected optional parameters
generic_instanceof_test: Fail # cannot resolve type T
-generic_instanceof2_test: Fail # fails an instance of test at run time
generic_instanceof3_test: Fail # cannot handle generics.
generic_test: Fail # cannot resolve type T
get_set_syntax_test/00: Fail # Fixed by https://chromiumcodereview.appspot.com/10915111
@@ -379,3 +370,6 @@
string_interpolate_npe_test: Fail
closure_call_wrong_argument_count_negative_test: Skip
label_test: Skip
+
+[ $compiler == dart2js && $host_checked ]
+factory_redirection2_test/01: Crash # http://dartbug.com/6791
diff --git "a/tests/standalone/io/\303\246\303\270\303\245.dart" b/tests/language/library_juxtaposition_lib.dart
similarity index 68%
copy from "tests/standalone/io/\303\246\303\270\303\245.dart"
copy to tests/language/library_juxtaposition_lib.dart
index d03e720..93f6691 100644
--- "a/tests/standalone/io/\303\246\303\270\303\245.dart"
+++ b/tests/language/library_juxtaposition_lib.dart
@@ -2,8 +2,6 @@
// 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.
-import 'dart:io';
+library lib;
-main() {
- Expect.equals('æøå', new File('æøå.dat').readAsStringSync());
-}
+part "library_" "juxtaposition_" "part.dart";
diff --git "a/tests/standalone/io/\303\246\303\270\303\245.dart" b/tests/language/library_juxtaposition_part.dart
similarity index 67%
copy from "tests/standalone/io/\303\246\303\270\303\245.dart"
copy to tests/language/library_juxtaposition_part.dart
index d03e720..2b14942 100644
--- "a/tests/standalone/io/\303\246\303\270\303\245.dart"
+++ b/tests/language/library_juxtaposition_part.dart
@@ -2,8 +2,4 @@
// 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.
-import 'dart:io';
-
-main() {
- Expect.equals('æøå', new File('æøå.dat').readAsStringSync());
-}
+const c = 47;
diff --git "a/tests/standalone/io/\303\246\303\270\303\245.dart" b/tests/language/library_juxtaposition_test.dart
similarity index 71%
rename from "tests/standalone/io/\303\246\303\270\303\245.dart"
rename to tests/language/library_juxtaposition_test.dart
index d03e720..ee1e7b4 100644
--- "a/tests/standalone/io/\303\246\303\270\303\245.dart"
+++ b/tests/language/library_juxtaposition_test.dart
@@ -2,8 +2,8 @@
// 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.
-import 'dart:io';
+import "library_" "juxtaposition_" "lib.dart";
main() {
- Expect.equals('æøå', new File('æøå.dat').readAsStringSync());
+ Expect.equals(c, 47);
}
diff --git a/tests/language/method_invocation_test.dart b/tests/language/method_invocation_test.dart
index 22e5282..44c9da2 100644
--- a/tests/language/method_invocation_test.dart
+++ b/tests/language/method_invocation_test.dart
@@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
// Testing method invocation.
-// Currently testing only NullPointerException.
+// Currently testing only NoSuchMethodError.
class A {
A() {}
@@ -20,7 +20,7 @@
bool exceptionCaught = false;
try {
a.foo();
- } on NullPointerException catch (e) {
+ } on NoSuchMethodError catch (e) {
exceptionCaught = true;
}
Expect.equals(true, exceptionCaught);
diff --git a/tests/language/mint_arithmetic.dart b/tests/language/mint_arithmetic_test.dart
similarity index 97%
rename from tests/language/mint_arithmetic.dart
rename to tests/language/mint_arithmetic_test.dart
index f45d07c..0e05d92 100644
--- a/tests/language/mint_arithmetic.dart
+++ b/tests/language/mint_arithmetic_test.dart
@@ -71,7 +71,6 @@
test_mint_double_op() {
for (var i=0; i<10000; i++) test_func(4294967295, 1);
Expect.equals(2.0, test_func(4294967295, 1));
- Expect.equals(4294967296.0, test_func(4294967295, 1));
}
main() {
diff --git a/tests/language/mint_compares.dart b/tests/language/mint_compares_test.dart
similarity index 100%
rename from tests/language/mint_compares.dart
rename to tests/language/mint_compares_test.dart
diff --git a/tests/language/new_expression_type_args_test.dart b/tests/language/new_expression_type_args_test.dart
index 4f1a11b..c454c17 100644
--- a/tests/language/new_expression_type_args_test.dart
+++ b/tests/language/new_expression_type_args_test.dart
@@ -1,16 +1,16 @@
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
+// Copyright (c) 2012, 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.
// Tests showing errors using type-arguments in new expressions:
class A<T> {
- // Can't intantiate type parameter (within static or instance method).
- m1() => new T(); /// 00: compile-time error
- static m2() => new T(); /// 01: compile-time error
+ // Can't instantiate type parameter (within static or instance method).
+ m1() => new T(); /// 00: static type warning, runtime error
+ static m2() => new T(); /// 01: static type warning, runtime error
// OK when used within instance method, but not in static method.
m3() => new A<T>();
- static m4() => new A<T>(); /// 02: compile-time error
+ static m4() => new A<T>(); /// 02: static type warning, dynamic type error
}
main() {
diff --git a/tests/language/null_access_error_test.dart b/tests/language/null_access_error_test.dart
new file mode 100644
index 0000000..f36a9f3
--- /dev/null
+++ b/tests/language/null_access_error_test.dart
@@ -0,0 +1,49 @@
+// Copyright (c) 2011, 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.
+
+class NullAccessTest {
+
+ static void testNullVariable() {
+ int variable;
+ bool exceptionCaught = false;
+ bool wrongExceptionCaught = false;
+ try {
+ variable++;
+ } on NoSuchMethodError catch (ex) {
+ exceptionCaught = true;
+ } catch (ex) {
+ wrongExceptionCaught = true;
+ }
+ Expect.isTrue(exceptionCaught);
+ Expect.isFalse(wrongExceptionCaught);
+ }
+
+ static int helperFunction(int parameter) {
+ return parameter++;
+ }
+
+ static void testNullFunctionCall() {
+ int variable;
+ bool exceptionCaught = false;
+ bool wrongExceptionCaught = false;
+ try {
+ variable = helperFunction(variable);
+ } on NoSuchMethodError catch (ex) {
+ exceptionCaught = true;
+ } catch (ex) {
+ wrongExceptionCaught = true;
+ }
+ Expect.isTrue(exceptionCaught);
+ Expect.isFalse(wrongExceptionCaught);
+ }
+
+ static void testMain() {
+ testNullVariable();
+ testNullFunctionCall();
+ }
+}
+
+main() {
+ NullAccessTest.testMain();
+}
diff --git a/tests/language/null_pointer_exception_test.dart b/tests/language/null_pointer_exception_test.dart
deleted file mode 100644
index 0872cea..0000000
--- a/tests/language/null_pointer_exception_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (c) 2011, 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.
-
-class NullPointerExceptionTest {
-
- static void testNullPointerExceptionVariable() {
- int variable;
- bool exceptionCaught = false;
- bool wrongExceptionCaught = false;
- try {
- variable++;
- } on NullPointerException catch (ex) {
- exceptionCaught = true;
- } on Exception catch (ex) {
- wrongExceptionCaught = true;
- }
- Expect.equals(true, exceptionCaught);
- Expect.equals(true, !wrongExceptionCaught);
- }
-
- static int helperFunction(int parameter) {
- return parameter++;
- }
-
- static void testNullPointerExceptionFunctionCall() {
- int variable;
- bool exceptionCaught = false;
- bool wrongExceptionCaught = false;
- try {
- variable = helperFunction(variable);
- } on NullPointerException catch (ex) {
- exceptionCaught = true;
- } on Exception catch (ex) {
- wrongExceptionCaught = true;
- }
- Expect.equals(true, exceptionCaught);
- Expect.equals(true, !wrongExceptionCaught);
- }
-
- static void testMain() {
- testNullPointerExceptionVariable();
- testNullPointerExceptionFunctionCall();
- }
-}
-
-main() {
- NullPointerExceptionTest.testMain();
-}
diff --git a/tests/language/optimize_redundant_array_load.dart b/tests/language/optimize_redundant_array_load_test.dart
similarity index 100%
rename from tests/language/optimize_redundant_array_load.dart
rename to tests/language/optimize_redundant_array_load_test.dart
diff --git a/tests/language/optimized_constant_array_string_access.dart b/tests/language/optimized_constant_array_string_access_test.dart
similarity index 100%
rename from tests/language/optimized_constant_array_string_access.dart
rename to tests/language/optimized_constant_array_string_access_test.dart
diff --git a/tests/language/optimized_hoisting_checked_mode_assert.dart b/tests/language/optimized_hoisting_checked_mode_assert_test.dart
similarity index 100%
rename from tests/language/optimized_hoisting_checked_mode_assert.dart
rename to tests/language/optimized_hoisting_checked_mode_assert_test.dart
diff --git a/tests/language/optimized_lists.dart b/tests/language/optimized_lists_test.dart
similarity index 96%
rename from tests/language/optimized_lists.dart
rename to tests/language/optimized_lists_test.dart
index 399b744..cc3b862 100644
--- a/tests/language/optimized_lists.dart
+++ b/tests/language/optimized_lists_test.dart
@@ -25,5 +25,5 @@
Expect.equals(2, c[1]);
// Test elimination of array length computation.
var v = c[n];
- Expet equals(v, c[n]);
+ Expect.equals(v, c[n]);
}
diff --git a/tests/language/optimized_string_charat_test.dart b/tests/language/optimized_string_charat_test.dart
new file mode 100644
index 0000000..b11c672
--- /dev/null
+++ b/tests/language/optimized_string_charat_test.dart
@@ -0,0 +1,65 @@
+// Copyright (c) 2012, 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.
+
+// Test optimized [] on strings.
+
+var a = "abc";
+var b = "øbc";
+var c = new String.fromCharCodes([123, 456, 789]);
+
+test_charat(s, i) {
+ return s[i];
+}
+
+test_const_str(i) {
+ return "abc"[i];
+}
+
+
+test_const_index(s) {
+ return s[0];
+}
+
+test_const_index2(s) {
+ return s[3];
+}
+
+main() {
+ Expect.equals("a", test_charat(a, 0));
+ for (var i=0; i<10000; i++) test_charat(a, 0);
+ Expect.equals("a", test_charat(a, 0));
+ Expect.equals("b", test_charat(a, 1));
+ Expect.equals("c", test_charat(a, 2));
+ Expect.throws(() => test_charat(a, 3));
+
+ Expect.equals("a", test_const_str(0));
+ for (var i=0; i<10000; i++) test_const_str(0);
+ Expect.equals("a", test_const_str(0));
+ Expect.equals("b", test_const_str(1));
+ Expect.equals("c", test_const_str(2));
+ Expect.throws(() => test_const_str(3));
+
+ Expect.equals("a", test_const_index(a));
+ for (var i=0; i<10000; i++) test_const_index(a);
+ Expect.equals("a", test_const_index(a));
+ Expect.equals("ø", test_const_index(b));
+ Expect.equals(new String.fromCharCodes([123]), test_const_index(c));
+ Expect.throws(() => test_const_index2(a));
+
+ Expect.equals("ø", test_charat(b, 0));
+ for (var i=0; i<10000; i++) test_charat(b, 0);
+ Expect.equals("ø", test_charat(b, 0));
+ Expect.equals("b", test_charat(b, 1));
+ Expect.equals("c", test_charat(b, 2));
+ Expect.throws(() => test_charat(b, 3));
+
+ Expect.equals(new String.fromCharCodes([123]), test_charat(c, 0));
+ for (var i=0; i<10000; i++) test_charat(c, 0);
+ Expect.equals(new String.fromCharCodes([123]), test_charat(c, 0));
+ Expect.equals(new String.fromCharCodes([456]), test_charat(c, 1));
+ Expect.equals(new String.fromCharCodes([789]), test_charat(c, 2));
+ Expect.throws(() => test_charat(c, 3));
+
+
+}
diff --git a/tests/language/optimized_string_charcodeat.dart b/tests/language/optimized_string_charcodeat_test.dart
similarity index 100%
rename from tests/language/optimized_string_charcodeat.dart
rename to tests/language/optimized_string_charcodeat_test.dart
diff --git a/tests/language/property_field_override_test.dart b/tests/language/property_field_override_test.dart
index 7ce82bd..50f64cb9 100644
--- a/tests/language/property_field_override_test.dart
+++ b/tests/language/property_field_override_test.dart
@@ -4,7 +4,7 @@
// Test overriding a getter property with a field.
class A {
- abstract int get v;
+ int get v; // Abstract.
int a() {
return v - 1;
diff --git a/tests/language/string_interpolate_npe_test.dart b/tests/language/string_interpolate_null_test.dart
similarity index 84%
rename from tests/language/string_interpolate_npe_test.dart
rename to tests/language/string_interpolate_null_test.dart
index 0baa32a..c8aff4a 100644
--- a/tests/language/string_interpolate_npe_test.dart
+++ b/tests/language/string_interpolate_null_test.dart
@@ -15,8 +15,8 @@
a = null;
try {
s = "Hello Mr. ${a.name}";
- } on NullPointerException catch (e) {
+ } on NoSuchMethodError catch (e) {
return;
}
- Expect.fail("NullPointerException not thrown");
+ Expect.fail("NoSuchMethodError not thrown");
}
diff --git a/tests/language/type_error_test.dart b/tests/language/type_error_test.dart
index 18d72ce..60784dc 100644
--- a/tests/language/type_error_test.dart
+++ b/tests/language/type_error_test.dart
@@ -151,7 +151,7 @@
try {
print(o);
} on TypeError catch (e) {
- print('unexpected type error: ${NoSuchMethodError.safeToString(e)}');
+ print('unexpected type error: ${Error.safeToString(e)}');
throw; // Unexpected type error.
} on CastError catch (e) {
print(e); // This might provoke an error.
diff --git a/tests/language/type_variable_bounds_test.dart b/tests/language/type_variable_bounds_test.dart
index fd97593..a357b8c 100644
--- a/tests/language/type_variable_bounds_test.dart
+++ b/tests/language/type_variable_bounds_test.dart
@@ -60,7 +60,7 @@
new Box<String>().makeFoo();
// Fisk does not exist.
- new Box<Fisk>(); /// 07: compile-time error
+ new Box<Fisk>(); /// 07: static type warning, dynamic type error
// Too many type arguments.
new Box<Object, Object>(); /// 08: compile-time error
diff --git a/tests/language/type_variable_shadows_class.dart b/tests/language/type_variable_shadows_class.dart
deleted file mode 100644
index 1d0538a..0000000
--- a/tests/language/type_variable_shadows_class.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2012, 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.
-
-// A reference to a class that is shadowed by a type variable should still work
-// in a static context.
-
-class T {
- String toString() => "Class T";
- static String staticToString() => "Class T (static)";
-}
-
-class A<T> {
- static method() {
- var foo = new T();
- Expect.equals("Class T", foo.toString());
- }
- instMethod() {
- var foo = T.staticToString();
- Expect.equals("Class T (static)", foo);
- }
-}
-
-main() {
- A.method();
- new A<String>().instMethod();
-}
diff --git a/tests/language/typed_selector_test.dart b/tests/language/typed_selector_test.dart
index 5431d36..8624528 100644
--- a/tests/language/typed_selector_test.dart
+++ b/tests/language/typed_selector_test.dart
@@ -12,7 +12,7 @@
}
abstract class B {
- abstract get document;
+ get document; // Abstract.
}
class C extends A implements B {
diff --git a/tests/lib/crypto/hmac_md5_test.dart b/tests/lib/crypto/hmac_md5_test.dart
index 24753bf..f47c710 100644
--- a/tests/lib/crypto/hmac_md5_test.dart
+++ b/tests/lib/crypto/hmac_md5_test.dart
@@ -71,7 +71,7 @@
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa ] ];
-var hmac_md5_macs =
+var hmac_md5_string_macs =
const [ '9294727a3638bb1c13f48ef8158bfc9d',
'750c783e6ab0b503eaa86e310a5db738',
'56be34521d144c88dbb8c733f0e8b3f6',
@@ -80,13 +80,34 @@
'6b1ab7fe4bd7bf8f0b62e6ce61b9d0cd',
'6f630fad67cda0ee1fb1f562db3aa53e' ];
-void testStandardVectors(inputs, keys, macs) {
+var hmac_md5_macs =
+ const [ const [0x92, 0x94, 0x72, 0x7a, 0x36, 0x38, 0xbb, 0x1c, 0x13, 0xf4,
+ 0x8e, 0xf8, 0x15, 0x8b, 0xfc, 0x9d],
+ const [0x75, 0x0c, 0x78, 0x3e, 0x6a, 0xb0, 0xb5, 0x03, 0xea, 0xa8,
+ 0x6e, 0x31, 0x0a, 0x5d, 0xb7, 0x38],
+ const [0x56, 0xbe, 0x34, 0x52, 0x1d, 0x14, 0x4c, 0x88, 0xdb, 0xb8,
+ 0xc7, 0x33, 0xf0, 0xe8, 0xb3, 0xf6],
+ const [0x69, 0x7e, 0xaf, 0x0a, 0xca, 0x3a, 0x3a, 0xea, 0x3a, 0x75,
+ 0x16, 0x47, 0x46, 0xff, 0xaa, 0x79],
+ const [0x56, 0x46, 0x1e, 0xf2, 0x34, 0x2e, 0xdc, 0x00, 0xf9, 0xba,
+ 0xb9, 0x95, 0x69, 0x0e, 0xfd, 0x4c],
+ const [0x6b, 0x1a, 0xb7, 0xfe, 0x4b, 0xd7, 0xbf, 0x8f, 0x0b, 0x62,
+ 0xe6, 0xce, 0x61, 0xb9, 0xd0, 0xcd],
+ const [0x6f, 0x63, 0x0f, 0xad, 0x67, 0xcd, 0xa0, 0xee, 0x1f, 0xb1,
+ 0xf5, 0x62, 0xdb, 0x3a, 0xa5, 0x3e]];
+
+void testStandardVectors(inputs, keys, string_macs, macs) {
for (var i = 0; i < inputs.length; i++) {
- var d = new HMAC(new MD5(), keys[i]).update(inputs[i]).digest();
- Expect.isTrue(CryptoUtils.bytesToHex(d).startsWith(macs[i]), '$i');
+ var h = new HMAC(new MD5(), keys[i]);
+ var d = h.update(inputs[i]).digest();
+ Expect.isTrue(CryptoUtils.bytesToHex(d).startsWith(string_macs[i]), '$i');
+ Expect.isTrue(h.verify(macs[i]));
+ Expect.isFalse(h.verify(macs[(i+1)%macs.length]));
+ Expect.throws(() => h.verify([]));
}
}
void main() {
- testStandardVectors(hmac_md5_inputs, hmac_md5_keys, hmac_md5_macs);
+ testStandardVectors(hmac_md5_inputs, hmac_md5_keys,
+ hmac_md5_string_macs, hmac_md5_macs);
}
diff --git a/tests/standalone/io/directory_non_ascii_sync_test.dart b/tests/standalone/io/directory_non_ascii_sync_test.dart
index bbcf4c7..3932731 100644
--- a/tests/standalone/io/directory_non_ascii_sync_test.dart
+++ b/tests/standalone/io/directory_non_ascii_sync_test.dart
@@ -5,18 +5,20 @@
import 'dart:io';
main() {
- Directory scriptDir = new File(new Options().script).directorySync();
- var d = new Directory("${scriptDir.path}/æøå");
+ Directory tempDir = new Directory('').createTempSync();
+ var nonAsciiDir = new Directory("${tempDir.path}/æøå");
// On MacOS you get the decomposed utf8 form of file and directory
// names from the system. Therefore, we have to check for both here.
var precomposed = 'æøå';
var decomposed = new String.fromCharCodes([47, 230, 248, 97, 778]);
- Expect.isTrue(d.existsSync());
- d.createSync();
- var temp = new Directory('').createTempSync();
- var temp2 = new Directory("${temp.path}/æøå").createTempSync();
- Expect.isTrue(temp2.path.contains(precomposed) ||
- temp2.path.contains(decomposed));
- temp2.deleteSync();
- temp.deleteSync(recursive: true);
+ Expect.isFalse(nonAsciiDir.existsSync());
+ nonAsciiDir.createSync();
+ Expect.isTrue(nonAsciiDir.existsSync());
+ var temp = new Directory("${tempDir.path}/æøå").createTempSync();
+ Expect.isTrue(temp.path.contains(precomposed) ||
+ temp.path.contains(decomposed));
+ temp.deleteSync();
+ tempDir.deleteSync(recursive: true);
+ Expect.isFalse(nonAsciiDir.existsSync());
+ Expect.isFalse(temp.existsSync());
}
diff --git a/tests/standalone/io/directory_non_ascii_test.dart b/tests/standalone/io/directory_non_ascii_test.dart
index c29e9ce..2745086 100644
--- a/tests/standalone/io/directory_non_ascii_test.dart
+++ b/tests/standalone/io/directory_non_ascii_test.dart
@@ -7,22 +7,28 @@
main() {
var port = new ReceivePort();
- Directory scriptDir = new File(new Options().script).directorySync();
- var d = new Directory("${scriptDir.path}/æøå");
+
// On MacOS you get the decomposed utf8 form of file and directory
// names from the system. Therefore, we have to check for both here.
var precomposed = 'æøå';
var decomposed = new String.fromCharCodes([47, 230, 248, 97, 778]);
- d.exists().then((e) {
- Expect.isTrue(e);
- d.create().then((_) {
- new Directory('').createTemp().then((temp) {
- new Directory("${temp.path}/æøå").createTemp().then((temp2) {
- Expect.isTrue(temp2.path.contains(precomposed) ||
- temp2.path.contains(decomposed));
- temp2.delete().then((_) {
- temp.delete(recursive: true).then((_) {
- port.close();
+
+ new Directory('').createTemp().then((tempDir) {
+ var nonAsciiDir = new Directory("${tempDir.path}/æøå");
+ nonAsciiDir.exists().then((e) {
+ Expect.isFalse(e);
+ nonAsciiDir.create().then((_) {
+ nonAsciiDir.exists().then((e) {
+ Expect.isTrue(e);
+ new Directory("${tempDir.path}/æøå").createTemp().then((temp) {
+ Expect.isTrue(temp.path.contains(precomposed) ||
+ temp.path.contains(decomposed));
+ temp.delete().then((_) {
+ tempDir.delete(recursive: true).then((_) {
+ Expect.isFalse(temp.existsSync());
+ Expect.isFalse(nonAsciiDir.existsSync());
+ port.close();
+ });
});
});
});
diff --git a/tests/standalone/io/file_non_ascii_sync_test.dart b/tests/standalone/io/file_non_ascii_sync_test.dart
index 3a10b93..19bf7aa 100644
--- a/tests/standalone/io/file_non_ascii_sync_test.dart
+++ b/tests/standalone/io/file_non_ascii_sync_test.dart
@@ -5,21 +5,26 @@
import 'dart:io';
main() {
- Directory scriptDir = new File(new Options().script).directorySync();
- var f = new File("${scriptDir.path}/æøå/æøå.dat");
+ Directory tempDir = new Directory('').createTempSync();
+ Directory nonAsciiDir = new Directory('${tempDir.path}/æøå');
+ nonAsciiDir.createSync();
+ Expect.isTrue(nonAsciiDir.existsSync());
+ File nonAsciiFile = new File('${nonAsciiDir.path}/æøå.txt');
+ nonAsciiFile.writeAsStringSync('æøå');
+ Expect.isTrue(nonAsciiFile.existsSync());
// On MacOS you get the decomposed utf8 form of file and directory
// names from the system. Therefore, we have to check for both here.
var precomposed = 'æøå';
var decomposed = new String.fromCharCodes([47, 230, 248, 97, 778]);
- Expect.isTrue(f.existsSync());
- f.createSync();
- var path = f.directorySync().path;
- Expect.isTrue(f.directorySync().path.endsWith(precomposed) ||
- f.directorySync().path.endsWith(decomposed));
- Expect.equals(6, f.lengthSync());
- f.lastModifiedSync();
- Expect.isTrue(f.fullPathSync().endsWith('${precomposed}.dat') ||
- f.fullPathSync().endsWith('${decomposed}.dat'));
// The contents of the file is precomposed utf8.
- Expect.equals(precomposed, f.readAsStringSync());
+ Expect.equals(precomposed, nonAsciiFile.readAsStringSync());
+ nonAsciiFile.createSync();
+ var path = nonAsciiFile.directorySync().path;
+ Expect.isTrue(path.endsWith(precomposed) || path.endsWith(decomposed));
+ Expect.equals(6, nonAsciiFile.lengthSync());
+ nonAsciiFile.lastModifiedSync();
+ path = nonAsciiFile.fullPathSync();
+ Expect.isTrue(path.endsWith('${precomposed}.txt') ||
+ path.endsWith('${decomposed}.txt'));
+ tempDir.deleteSync(recursive: true);
}
diff --git a/tests/standalone/io/file_non_ascii_test.dart b/tests/standalone/io/file_non_ascii_test.dart
index d082080..da136e6 100644
--- a/tests/standalone/io/file_non_ascii_test.dart
+++ b/tests/standalone/io/file_non_ascii_test.dart
@@ -6,28 +6,42 @@
import 'dart:isolate';
main() {
- var port = new ReceivePort();
- Directory scriptDir = new File(new Options().script).directorySync();
- var f = new File("${scriptDir.path}/æøå/æøå.dat");
+ ReceivePort port = new ReceivePort();
+
// On MacOS you get the decomposed utf8 form of file and directory
// names from the system. Therefore, we have to check for both here.
var precomposed = 'æøå';
var decomposed = new String.fromCharCodes([47, 230, 248, 97, 778]);
- f.exists().then((e) {
- Expect.isTrue(e);
- f.create().then((_) {
- f.directory().then((d) {
- Expect.isTrue(d.path.endsWith(precomposed) ||
- d.path.endsWith(decomposed));
- f.length().then((l) {
- Expect.equals(6, l);
- f.lastModified().then((_) {
- f.fullPath().then((p) {
- Expect.isTrue(p.endsWith('${precomposed}.dat') ||
- p.endsWith('${decomposed}.dat'));
- f.readAsString().then((contents) {
+
+ new Directory('').createTemp().then((tempDir) {
+ Directory nonAsciiDir = new Directory('${tempDir.path}/æøå');
+ nonAsciiDir.create().then((nonAsciiDir) {
+ nonAsciiDir.exists().then((result) {
+ Expect.isTrue(result);
+ File nonAsciiFile = new File('${nonAsciiDir.path}/æøå.txt');
+ nonAsciiFile.writeAsString('æøå').then((_) {
+ nonAsciiFile.exists().then((result) {
+ Expect.isTrue(result);
+ nonAsciiFile.readAsString().then((contents) {
+ // The contents of the file is precomposed utf8.
Expect.equals(precomposed, contents);
- port.close();
+ nonAsciiFile.create().then((_) {
+ nonAsciiFile.directory().then((d) {
+ Expect.isTrue(d.path.endsWith(precomposed) ||
+ d.path.endsWith(decomposed));
+ nonAsciiFile.length().then((length) {
+ Expect.equals(6, length);
+ nonAsciiFile.lastModified().then((_) {
+ nonAsciiFile.fullPath().then((path) {
+ Expect.isTrue(path.endsWith('${precomposed}.txt') ||
+ path.endsWith('${decomposed}.txt'));
+ tempDir.delete(recursive: true).then((_) {
+ port.close();
+ });
+ });
+ });
+ });
+ });
});
});
});
diff --git a/tests/standalone/io/file_write_as_test.dart b/tests/standalone/io/file_write_as_test.dart
new file mode 100644
index 0000000..5212b79
--- /dev/null
+++ b/tests/standalone/io/file_write_as_test.dart
@@ -0,0 +1,79 @@
+// Copyright (c) 2012, 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.
+
+import 'dart:io';
+import 'dart:isolate';
+
+testWriteAsBytesSync(dir) {
+ var f = new File('${dir.path}/bytes_sync.txt');
+ var data = [50,50,50];
+ f.writeAsBytesSync(data);
+ Expect.listEquals(data, f.readAsBytesSync());
+ f.writeAsBytesSync(data, FileMode.APPEND);
+ var expected = [50, 50, 50, 50, 50, 50];
+ Expect.listEquals(expected, f.readAsBytesSync());
+}
+
+testWriteAsStringSync(dir) {
+ var f = new File('${dir.path}/string_sync.txt');
+ var data = 'asdf';
+ f.writeAsStringSync(data);
+ Expect.equals(data, f.readAsStringSync());
+ f.writeAsStringSync(data, FileMode.APPEND);
+ Expect.equals('$data$data', f.readAsStringSync());
+}
+
+Future testWriteAsBytes(dir) {
+ var completer = new Completer();
+ var f = new File('${dir.path}/bytes.txt');
+ var data = [50,50,50];
+ f.writeAsBytes(data).then((file){
+ Expect.equals(f, file);
+ f.readAsBytes().then((bytes) {
+ Expect.listEquals(data, bytes);
+ f.writeAsBytes(data, FileMode.APPEND).then((file) {
+ Expect.equals(f, file);
+ f.readAsBytes().then((bytes) {
+ var expected = [50, 50, 50, 50, 50, 50];
+ Expect.listEquals(expected, bytes);
+ completer.complete(true);
+ });
+ });
+ });
+ });
+ return completer.future;
+}
+
+Future testWriteAsString(dir) {
+ var completer = new Completer();
+ var f = new File('${dir.path}/strings.txt');
+ var data = 'asdf';
+ f.writeAsString(data).then((file){
+ Expect.equals(f, file);
+ f.readAsString().then((str) {
+ Expect.equals(data, str);
+ f.writeAsString(data, FileMode.APPEND).then((file) {
+ Expect.equals(f, file);
+ f.readAsString().then((str) {
+ Expect.equals('$data$data', str);
+ completer.complete(true);
+ });
+ });
+ });
+ });
+ return completer.future;
+}
+
+main() {
+ var port = new ReceivePort();
+ var tempDir = new Directory('').createTempSync();
+ testWriteAsBytesSync(tempDir);
+ testWriteAsStringSync(tempDir);
+ testWriteAsBytes(tempDir).chain((_) {
+ return testWriteAsString(tempDir);
+ }).then((_) {
+ tempDir.deleteSync(recursive: true);
+ port.close();
+ });
+}
diff --git a/tests/standalone/io/http_advanced_test.dart b/tests/standalone/io/http_advanced_test.dart
index bca0def..165af0b 100644
--- a/tests/standalone/io/http_advanced_test.dart
+++ b/tests/standalone/io/http_advanced_test.dart
@@ -287,9 +287,12 @@
};
conn.onResponse = (HttpClientResponse response) {
Expect.equals(HttpStatus.OK, response.statusCode);
- httpClient.shutdown();
- testServerMain.shutdown();
- completer.complete(true);
+ response.inputStream.onData = response.inputStream.read;
+ response.inputStream.onClosed = () {
+ httpClient.shutdown();
+ testServerMain.shutdown();
+ completer.complete(true);
+ };
};
});
testServerMain.start();
@@ -309,12 +312,15 @@
response.headers["expires"][0]);
Expect.equals(new Date.utc(1999, Date.JUN, 11, 18, 46, 53, 0),
response.headers.expires);
- responses++;
- if (responses == 2) {
- httpClient.shutdown();
- testServerMain.shutdown();
- completer.complete(true);
- }
+ response.inputStream.onData = response.inputStream.read;
+ response.inputStream.onClosed = () {
+ responses++;
+ if (responses == 2) {
+ httpClient.shutdown();
+ testServerMain.shutdown();
+ completer.complete(true);
+ }
+ };
}
HttpClientConnection conn1 = httpClient.get("127.0.0.1", port, "/expires1");
@@ -346,12 +352,15 @@
Expect.equals("html", response.headers.contentType.subType);
Expect.equals("utf-8",
response.headers.contentType.parameters["charset"]);
- responses++;
- if (responses == 2) {
- httpClient.shutdown();
- testServerMain.shutdown();
- completer.complete(true);
- }
+ response.inputStream.onData = response.inputStream.read;
+ response.inputStream.onClosed = () {
+ responses++;
+ if (responses == 2) {
+ httpClient.shutdown();
+ testServerMain.shutdown();
+ completer.complete(true);
+ }
+ };
}
HttpClientConnection conn1 =
@@ -415,10 +424,13 @@
request.cookies.add(response.cookies[1]);
request.outputStream.close();
};
- conn2.onResponse = (HttpClientResponse ignored) {
- httpClient.shutdown();
- testServerMain.shutdown();
- completer.complete(true);
+ conn2.onResponse = (HttpClientResponse response) {
+ response.inputStream.onData = response.inputStream.read;
+ response.inputStream.onClosed = () {
+ httpClient.shutdown();
+ testServerMain.shutdown();
+ completer.complete(true);
+ };
};
};
});
@@ -439,9 +451,12 @@
};
conn.onResponse = (HttpClientResponse response) {
Expect.equals(HttpStatus.OK, response.statusCode);
- httpClient.shutdown();
- testServerMain.shutdown();
- completer.complete(true);
+ response.inputStream.onData = response.inputStream.read;
+ response.inputStream.onClosed = () {
+ httpClient.shutdown();
+ testServerMain.shutdown();
+ completer.complete(true);
+ };
};
});
testServerMain.start();
diff --git a/tests/standalone/io/http_auth_test.dart b/tests/standalone/io/http_auth_test.dart
index 7347b5d..07705de 100644
--- a/tests/standalone/io/http_auth_test.dart
+++ b/tests/standalone/io/http_auth_test.dart
@@ -80,8 +80,11 @@
new Uri.fromString(
"http://username:password@127.0.0.1:${server.port}/"));
conn.onResponse = (HttpClientResponse response) {
- server.shutdown();
- client.shutdown();
+ response.inputStream.onData = response.inputStream.read;
+ response.inputStream.onClosed = () {
+ server.shutdown();
+ client.shutdown();
+ };
};
}
@@ -94,7 +97,8 @@
HttpClientConnection conn = client.getUrl(url);
conn.onResponse = (HttpClientResponse response) {
Expect.equals(HttpStatus.UNAUTHORIZED, response.statusCode);
- completer.complete(null);
+ response.inputStream.onData = response.inputStream.read;
+ response.inputStream.onClosed = () => completer.complete(null);
};
return completer.future;
}
@@ -123,7 +127,8 @@
HttpClientConnection conn = client.getUrl(url);
conn.onResponse = (HttpClientResponse response) {
Expect.equals(HttpStatus.OK, response.statusCode);
- completer.complete(null);
+ response.inputStream.onData = response.inputStream.read;
+ response.inputStream.onClosed = () => completer.complete(null);
};
return completer.future;
}
@@ -175,7 +180,8 @@
HttpClientConnection conn = client.getUrl(url);
conn.onResponse = (HttpClientResponse response) {
Expect.equals(HttpStatus.OK, response.statusCode);
- completer.complete(null);
+ response.inputStream.onData = response.inputStream.read;
+ response.inputStream.onClosed = () => completer.complete(null);
};
return completer.future;
}
diff --git a/tests/standalone/io/http_connection_close_test.dart b/tests/standalone/io/http_connection_close_test.dart
index ac6cedd..c46dd41 100644
--- a/tests/standalone/io/http_connection_close_test.dart
+++ b/tests/standalone/io/http_connection_close_test.dart
@@ -5,6 +5,7 @@
#import("dart:isolate");
#import("dart:io");
+#import("dart:uri");
void testHttp10Close(bool closeRequest) {
HttpServer server = new HttpServer();
@@ -41,9 +42,41 @@
};
}
+void testStreamResponse() {
+ var server = new HttpServer();
+ server.listen("127.0.0.1", 0, backlog: 5);
+ server.defaultRequestHandler = (var request, var response) {
+ new Timer.repeating(10, (x) {
+ Date now = new Date.now();
+ try {
+ response.outputStream.writeString(
+ 'data:${now.millisecondsSinceEpoch}\n\n');
+ } catch (e) {
+ x.cancel();
+ server.close();
+ }
+ });
+ };
+
+ var client = new HttpClient();
+ var connection =
+ client.getUrl(new Uri.fromString("http://127.0.0.1:${server.port}"));
+ connection.onResponse = (resp) {
+ int bytes = 0;
+ resp.inputStream.onData = () {
+ bytes += resp.inputStream.read().length;
+ if (bytes > 100) {
+ client.shutdown(force: true);
+ }
+ };
+ };
+ connection.onError = (e) => Expect.isTrue(e is HttpException);
+}
+
main() {
testHttp10Close(false);
testHttp10Close(true);
testHttp11Close(false);
testHttp11Close(true);
+ testStreamResponse();
}
diff --git a/tests/standalone/io/http_connection_header_test.dart b/tests/standalone/io/http_connection_header_test.dart
index 617854a..ead2067 100644
--- a/tests/standalone/io/http_connection_header_test.dart
+++ b/tests/standalone/io/http_connection_header_test.dart
@@ -64,11 +64,13 @@
Expect.isFalse(response.persistentConnection);
checkExpectedConnectionHeaders(response.headers,
response.persistentConnection);
- count++;
- if (count == totalConnections) {
- client.shutdown();
- server.close();
- }
+ response.inputStream.onClosed = () {
+ count++;
+ if (count == totalConnections) {
+ client.shutdown();
+ server.close();
+ }
+ };
};
}
}
diff --git a/tests/standalone/io/http_content_length_test.dart b/tests/standalone/io/http_content_length_test.dart
index 917b014..47ef941 100644
--- a/tests/standalone/io/http_content_length_test.dart
+++ b/tests/standalone/io/http_content_length_test.dart
@@ -38,10 +38,13 @@
Expect.equals("0", response.headers.value('content-length'));
Expect.equals(0, response.contentLength);
count++;
- if (count == totalConnections) {
- client.shutdown();
- server.close();
- }
+ response.inputStream.onData = response.inputStream.read;
+ response.inputStream.onClosed = () {
+ if (count == totalConnections) {
+ client.shutdown();
+ server.close();
+ }
+ };
};
}
}
@@ -82,10 +85,13 @@
Expect.equals("2", response.headers.value('content-length'));
Expect.equals(2, response.contentLength);
count++;
- if (count == totalConnections) {
- client.shutdown();
- server.close();
- }
+ response.inputStream.onData = response.inputStream.read;
+ response.inputStream.onClosed = () {
+ if (count == totalConnections) {
+ client.shutdown();
+ server.close();
+ }
+ };
};
}
}
diff --git a/tests/standalone/io/http_redirect_test.dart b/tests/standalone/io/http_redirect_test.dart
index 668225e..4ea9fe0 100644
--- a/tests/standalone/io/http_redirect_test.dart
+++ b/tests/standalone/io/http_redirect_test.dart
@@ -91,7 +91,7 @@
client.getUrl(new Uri.fromString("http://127.0.0.1:${server.port}/1"));
conn.followRedirects = false;
conn.onResponse = (HttpClientResponse response) {
- response.inputStream.onData = () => response.inputStream.read();
+ response.inputStream.onData = response.inputStream.read;
response.inputStream.onClosed = () {
redirectCount++;
if (redirectCount < 10) {
diff --git a/tests/standalone/io/http_server_early_client_close_test.dart b/tests/standalone/io/http_server_early_client_close_test.dart
index 66a2b06..5d23fc4 100644
--- a/tests/standalone/io/http_server_early_client_close_test.dart
+++ b/tests/standalone/io/http_server_early_client_close_test.dart
@@ -63,17 +63,18 @@
// The empty packet is valid.
// Close while sending header
- add("G", "Connection closed before full header was received");
- add("GET /", "Connection closed before full header was received");
- add("GET / HTTP/1.1", "Connection closed before full header was received");
- add("GET / HTTP/1.1\r\n", "Connection closed before full header was received");
+ String message = "Connection closed before full request header was received";
+ add("G", message);
+ add("GET /", message);
+ add("GET / HTTP/1.1", message);
+ add("GET / HTTP/1.1\r\n", message);
// Close while sending content
add("GET / HTTP/1.1\r\nContent-Length: 100\r\n\r\n",
- "Connection closed before full body was received",
+ "Connection closed before full request body was received",
expectRequest: true);
add("GET / HTTP/1.1\r\nContent-Length: 100\r\n\r\n1",
- "Connection closed before full body was received",
+ "Connection closed before full request body was received",
expectRequest: true);
diff --git a/tests/standalone/io/http_server_handler_test.dart b/tests/standalone/io/http_server_handler_test.dart
index e44a6cf..62d77ed 100644
--- a/tests/standalone/io/http_server_handler_test.dart
+++ b/tests/standalone/io/http_server_handler_test.dart
@@ -101,7 +101,7 @@
conn.onResponse = (HttpClientResponse response) {
Expect.equals(HttpStatus.NOT_FOUND, response.statusCode);
Expect.equals("Non Trouvé", response.reasonPhrase);
- done();
+ response.inputStream.onClosed = done;
};
conn.onError = error;
};
diff --git a/tests/standalone/io/http_session_test.dart b/tests/standalone/io/http_session_test.dart
index 2b7f81c..1538c2c 100644
--- a/tests/standalone/io/http_session_test.dart
+++ b/tests/standalone/io/http_session_test.dart
@@ -30,8 +30,11 @@
request.outputStream.close();
};
conn.onResponse = (response) {
- client.shutdown();
- c.complete(getSessionId(response.cookies));
+ response.inputStream.onData = response.inputStream.read;
+ response.inputStream.onClosed = () {
+ client.shutdown();
+ c.complete(getSessionId(response.cookies));
+ };
};
return c.future;
}
diff --git a/tests/standalone/io/http_shutdown_test.dart b/tests/standalone/io/http_shutdown_test.dart
index 0a65ea8..1d19e96 100644
--- a/tests/standalone/io/http_shutdown_test.dart
+++ b/tests/standalone/io/http_shutdown_test.dart
@@ -22,11 +22,13 @@
request.outputStream.close();
};
conn.onResponse = (HttpClientResponse response) {
- count++;
- if (count == totalConnections) {
- client.shutdown();
- server.close();
- }
+ response.inputStream.onClosed = () {
+ count++;
+ if (count == totalConnections) {
+ client.shutdown();
+ server.close();
+ }
+ };
};
}
}
@@ -51,11 +53,14 @@
request.outputStream.close();
};
conn.onResponse = (HttpClientResponse response) {
- count++;
- if (count == totalConnections) {
- client.shutdown();
- server.close();
- }
+ response.inputStream.onData = response.inputStream.read;
+ response.inputStream.onClosed = () {
+ count++;
+ if (count == totalConnections) {
+ client.shutdown();
+ server.close();
+ }
+ };
};
}
}
@@ -85,16 +90,81 @@
request.outputStream.close();
};
conn.onResponse = (HttpClientResponse response) {
- count++;
- if (count == totalConnections) {
- client.shutdown();
- server.close();
- }
+ response.inputStream.onData = response.inputStream.read;
+ response.inputStream.onClosed = () {
+ count++;
+ if (count == totalConnections) {
+ client.shutdown();
+ server.close();
+ }
+ };
};
}
}
+void test4() {
+ var server = new HttpServer();
+ server.listen("127.0.0.1", 0);
+ server.defaultRequestHandler = (var request, var response) {
+ request.inputStream.onClosed = () {
+ new Timer.repeating(100, (timer) {
+ if (server.connectionsInfo().total == 0) {
+ server.close();
+ timer.cancel();
+ }
+ });
+ response.outputStream.close();
+ };
+ };
+
+ var client= new HttpClient();
+ var conn = client.get("127.0.0.1", server.port, "/");
+ conn.onResponse = (var response) {
+ response.inputStream.onData = response.inputStream.read;
+ response.inputStream.onClosed = () {
+ client.shutdown();
+ };
+ };
+}
+
+
+void test5(int totalConnections) {
+ var server = new HttpServer();
+ server.listen("127.0.0.1", 0, backlog: totalConnections);
+ server.defaultRequestHandler = (var request, var response) {
+ request.inputStream.onClosed = () {
+ response.outputStream.close();
+ };
+ };
+ server.onError = (e) => { };
+
+ // Create a number of client requests and keep then active. Then
+ // close the client and wait for the server to lose all active
+ // connections.
+ var client= new HttpClient();
+ for (int i = 0; i < totalConnections; i++) {
+ var conn = client.post("127.0.0.1", server.port, "/");
+ conn.onRequest = (req) { req.outputStream.write([0]); };
+ conn.onError = (e) => Expect.isTrue(e is HttpException);
+ }
+ bool clientClosed = false;
+ new Timer.repeating(100, (timer) {
+ if (!clientClosed) {
+ if (server.connectionsInfo().total == totalConnections) {
+ clientClosed = true;
+ client.shutdown(force: true);
+ }
+ } else {
+ if (server.connectionsInfo().total == 0) {
+ server.close();
+ timer.cancel();
+ }
+ }
+ });
+}
+
+
void main() {
test1(1);
test1(10);
@@ -102,4 +172,7 @@
test2(10);
test3(1);
test3(10);
+ test4();
+ test5(1);
+ test5(10);
}
diff --git a/tests/standalone/io/pkcert/README b/tests/standalone/io/pkcert/README
new file mode 100644
index 0000000..32c8246
--- /dev/null
+++ b/tests/standalone/io/pkcert/README
@@ -0,0 +1,15 @@
+This is a certificate database used by Dart for testing purposes.
+
+It is created as a certificate database by NSS (Network Security Services),
+a library from Mozilla, using the certutil tool. It uses a cert9.db file,
+rather than a cert8.db file, so the database directory must be specified with
+"sql:" in front of the directory path, or the environment variable
+NSS_DEFAULT_DB_TYPE must be set to "sql".
+
+The password for the key database is "dartdart".
+
+The database contains a root certificate from Equifax, used to verify the
+client https connection to www.google.dk. It contains a self-signed
+certificate for a local certificate authority myauthority_cert, and a
+server certificate for localhost called localhost_cert, signed by
+myauthority_cert.
diff --git a/tests/standalone/io/pkcert/cert9.db b/tests/standalone/io/pkcert/cert9.db
index d7ce362..1c4913b 100644
--- a/tests/standalone/io/pkcert/cert9.db
+++ b/tests/standalone/io/pkcert/cert9.db
Binary files differ
diff --git a/tests/standalone/io/pkcert/key4.db b/tests/standalone/io/pkcert/key4.db
index 614a210..6610e75 100644
--- a/tests/standalone/io/pkcert/key4.db
+++ b/tests/standalone/io/pkcert/key4.db
Binary files differ
diff --git a/tests/standalone/io/process_non_ascii_test.dart b/tests/standalone/io/process_non_ascii_test.dart
index 5ea4e3c..e7b31e3 100644
--- a/tests/standalone/io/process_non_ascii_test.dart
+++ b/tests/standalone/io/process_non_ascii_test.dart
@@ -3,15 +3,31 @@
// BSD-style license that can be found in the LICENSE file.
import 'dart:io';
+import 'dart:isolate';
main() {
- var scriptDir = new File(new Options().script).directorySync();
+ var port = new ReceivePort();
var executable = new File(new Options().executable).fullPathSync();
+ var tempDir = new Directory('').createTempSync();
+ var nonAsciiDir = new Directory('${tempDir.path}/æøå');
+ nonAsciiDir.createSync();
+ var nonAsciiFile = new File('${nonAsciiDir.path}/æøå.dart');
+ nonAsciiFile.writeAsStringSync(
+"""
+import 'dart:io';
+
+main() {
+ Expect.equals('æøå', new File('æøå.txt').readAsStringSync());
+}
+""");
+ var nonAsciiTxtFile = new File('${nonAsciiDir.path}/æøå.txt');
+ nonAsciiTxtFile.writeAsStringSync('æøå');
var options = new ProcessOptions();
- options.workingDirectory = "${scriptDir.path}/æøå";
- var script = "${scriptDir.path}/æøå.dart";
- print(options.workingDirectory);
+ options.workingDirectory = nonAsciiDir.path;
+ var script = nonAsciiFile.name;
Process.run(executable, [script], options).then((result) {
Expect.equals(0, result.exitCode);
+ tempDir.deleteSync(recursive: true);
+ port.close();
});
}
diff --git a/tests/standalone/io/secure_server_stream_test.dart b/tests/standalone/io/secure_server_stream_test.dart
new file mode 100644
index 0000000..82271ce
--- /dev/null
+++ b/tests/standalone/io/secure_server_stream_test.dart
@@ -0,0 +1,98 @@
+// Copyright (c) 2012, 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.
+
+import "dart:io";
+
+const SERVER_ADDRESS = "127.0.0.1";
+const HOST_NAME = "localhost";
+
+class SecureTestServer {
+ void onConnection(Socket connection) {
+ numConnections++;
+ var input = connection.inputStream;
+ String received = "";
+ input.onData = () {
+ received = received.concat(new String.fromCharCodes(input.read()));
+ };
+ input.onClosed = () {
+ Expect.isTrue(received.contains("Hello from client "));
+ String name = received.substring(received.indexOf("client ") + 7);
+ connection.outputStream.write("Welcome, client $name".charCodes);
+ connection.outputStream.close();
+ };
+ }
+
+ void errorHandlerServer(Exception e) {
+ Expect.fail("Server socket error $e");
+ }
+
+ int start() {
+ server = new SecureServerSocket(SERVER_ADDRESS, 0, 10, "CN=$HOST_NAME");
+ Expect.isNotNull(server);
+ server.onConnection = onConnection;
+ server.onError = errorHandlerServer;
+ return server.port;
+ }
+
+ void stop() {
+ server.close();
+ }
+
+ int numConnections = 0;
+ SecureServerSocket server;
+}
+
+class SecureTestClient {
+ SecureTestClient(int this.port, String this.name) {
+ socket = new SecureSocket(HOST_NAME, port);
+ numRequests++;
+ socket.outputStream.write("Hello from client $name".charCodes);
+ socket.outputStream.close();
+ socket.inputStream.onData = () {
+ reply = reply.concat(new String.fromCharCodes(socket.inputStream.read()));
+ };
+ socket.inputStream.onClosed = this.done;
+ reply = "";
+ }
+
+ void done() {
+ Expect.equals("Welcome, client $name", reply);
+ numReplies++;
+ if (numReplies == CLIENT_NAMES.length) {
+ Expect.equals(numRequests, numReplies);
+ EndTest();
+ }
+ }
+
+ static int numRequests = 0;
+ static int numReplies = 0;
+
+ int port;
+ String name;
+ SecureSocket socket;
+ String reply;
+}
+
+Function EndTest;
+
+const CLIENT_NAMES = const ['able', 'baker', 'camera', 'donut', 'echo'];
+
+void main() {
+ Path scriptDir = new Path.fromNative(new Options().script).directoryPath;
+ Path certificateDatabase = scriptDir.append('pkcert');
+ SecureSocket.setCertificateDatabase(certificateDatabase.toNativePath(),
+ 'dartdart');
+
+ var server = new SecureTestServer();
+ int port = server.start();
+
+ EndTest = () {
+ Expect.equals(CLIENT_NAMES.length, server.numConnections);
+ server.stop();
+ };
+
+ for (var x in CLIENT_NAMES) {
+ new SecureTestClient(port, x);
+ }
+}
diff --git a/tests/standalone/io/secure_server_test.dart b/tests/standalone/io/secure_server_test.dart
new file mode 100644
index 0000000..f2fc280
--- /dev/null
+++ b/tests/standalone/io/secure_server_test.dart
@@ -0,0 +1,115 @@
+// Copyright (c) 2012, 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.
+
+import "dart:io";
+
+const SERVER_ADDRESS = "127.0.0.1";
+const HOST_NAME = "localhost";
+
+void WriteAndClose(Socket socket, String message) {
+ var data = message.charCodes;
+ int written = 0;
+ void write() {
+ written += socket.writeList(data, written, data.length - written);
+ if (written < data.length) {
+ socket.onWrite = write;
+ } else {
+ socket.close(true);
+ }
+ }
+ write();
+}
+
+class SecureTestServer {
+ void onConnection(Socket connection) {
+ connection.onConnect = () {
+ numConnections++;
+ };
+ String received = "";
+ connection.onData = () {
+ received = received.concat(new String.fromCharCodes(connection.read()));
+ };
+ connection.onClosed = () {
+ Expect.isTrue(received.contains("Hello from client "));
+ String name = received.substring(received.indexOf("client ") + 7);
+ WriteAndClose(connection, "Welcome, client $name");
+ };
+ }
+
+ void errorHandlerServer(Exception e) {
+ Expect.fail("Server socket error $e");
+ }
+
+ int start() {
+ server = new SecureServerSocket(SERVER_ADDRESS, 0, 10, "CN=$HOST_NAME");
+ Expect.isNotNull(server);
+ server.onConnection = onConnection;
+ server.onError = errorHandlerServer;
+ return server.port;
+ }
+
+ void stop() {
+ server.close();
+ }
+
+ int numConnections = 0;
+ SecureServerSocket server;
+}
+
+class SecureTestClient {
+ SecureTestClient(int this.port, String this.name) {
+ socket = new SecureSocket(HOST_NAME, port);
+ socket.onConnect = this.onConnect;
+ socket.onData = () {
+ reply = reply.concat(new String.fromCharCodes(socket.read()));
+ };
+ socket.onClosed = done;
+ reply = "";
+ }
+
+ void onConnect() {
+ numRequests++;
+ WriteAndClose(socket, "Hello from client $name");
+ }
+
+ void done() {
+ Expect.equals("Welcome, client $name", reply);
+ numReplies++;
+ if (numReplies == CLIENT_NAMES.length) {
+ Expect.equals(numRequests, numReplies);
+ EndTest();
+ }
+ }
+
+ static int numRequests = 0;
+ static int numReplies = 0;
+
+ int port;
+ String name;
+ SecureSocket socket;
+ String reply;
+}
+
+Function EndTest;
+
+const CLIENT_NAMES = const ['able', 'baker', 'camera', 'donut', 'echo'];
+
+void main() {
+ Path scriptDir = new Path.fromNative(new Options().script).directoryPath;
+ Path certificateDatabase = scriptDir.append('pkcert');
+ SecureSocket.setCertificateDatabase(certificateDatabase.toNativePath(),
+ 'dartdart');
+
+ var server = new SecureTestServer();
+ int port = server.start();
+
+ EndTest = () {
+ Expect.equals(CLIENT_NAMES.length, server.numConnections);
+ server.stop();
+ };
+
+ for (var x in CLIENT_NAMES) {
+ new SecureTestClient(port, x);
+ }
+}
diff --git a/tests/standalone/io/tls_socket_test.dart b/tests/standalone/io/secure_socket_test.dart
similarity index 61%
rename from tests/standalone/io/tls_socket_test.dart
rename to tests/standalone/io/secure_socket_test.dart
index 061d93f..36386f0 100644
--- a/tests/standalone/io/tls_socket_test.dart
+++ b/tests/standalone/io/secure_socket_test.dart
@@ -11,40 +11,50 @@
#import("dart:isolate");
#import("dart:io");
+void WriteAndClose(Socket socket, String message) {
+ var data = message.charCodes;
+ int written = 0;
+ void write() {
+ written += socket.writeList(data, written, data.length - written);
+ if (written < data.length) {
+ socket.onWrite = write;
+ } else {
+ socket.close(true);
+ }
+ }
+ write();
+}
+
void main() {
var testPkcertDatabase =
new Path.fromNative(new Options().script).directoryPath.append('pkcert/');
- TlsSocket.setCertificateDatabase(testPkcertDatabase.toNativePath());
- // TODO(3593): Use a Dart HTTPS server for this test using TLS server sockets.
+ SecureSocket.setCertificateDatabase(testPkcertDatabase.toNativePath());
+ // TODO(3593): Use a Dart HTTPS server for this test.
// When we use a Dart HTTPS server, allow --short_socket_write. The flag
// causes fragmentation of the client hello message, which doesn't seem to
// work with www.google.dk.
- var tls = new TlsSocket("www.google.dk", 443);
+ var secure = new SecureSocket("www.google.dk", 443);
List<String> chunks = <String>[];
- tls.onConnect = () {
- var request_bytes =
- "GET / HTTP/1.0\r\nHost: www.google.dk\r\n\r\n".charCodes;
- tls.writeList(request_bytes, 0, 20);
- tls.writeList(request_bytes, 20, request_bytes.length - 20);
+ secure.onConnect = () {
+ WriteAndClose(secure, "GET / HTTP/1.0\r\nHost: www.google.dk\r\n\r\n");
};
var useReadList; // Mutually recursive onData callbacks.
void useRead() {
- var data = tls.read();
+ var data = secure.read();
var received = new String.fromCharCodes(data);
chunks.add(received);
- tls.onData = useReadList;
+ secure.onData = useReadList;
}
useReadList = () {
var buffer = new List(2000);
- int len = tls.readList(buffer, 0, 2000);
+ int len = secure.readList(buffer, 0, 2000);
var received = new String.fromCharCodes(buffer.getRange(0, len));
chunks.add(received);
- tls.onData = useRead;
+ secure.onData = useRead;
};
- tls.onData = useRead;
- tls.onClosed = () {
+ secure.onData = useRead;
+ secure.onClosed = () {
String fullPage = Strings.concatAll(chunks);
Expect.isTrue(fullPage.contains('</body></html>'));
- tls.close();
};
}
diff --git a/tests/standalone/io/secure_stream_test.dart b/tests/standalone/io/secure_stream_test.dart
new file mode 100644
index 0000000..54969f2
--- /dev/null
+++ b/tests/standalone/io/secure_stream_test.dart
@@ -0,0 +1,36 @@
+// Copyright (c) 2012, 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.
+//
+// VMOptions=
+// VMOptions=--short_socket_read
+// The --short_socket_write option does not work with external server
+// www.google.dk. Add this to the test when we have secure server sockets.
+// See TODO below.
+
+#import("dart:isolate");
+#import("dart:io");
+
+void main() {
+ var testPkcertDatabase =
+ new Path.fromNative(new Options().script).directoryPath.append('pkcert/');
+ SecureSocket.setCertificateDatabase(testPkcertDatabase.toNativePath());
+ // TODO(3593): Use a Dart HTTPS server for this test.
+ // When we use a Dart HTTPS server, allow --short_socket_write. The flag
+ // causes fragmentation of the client hello message, which doesn't seem to
+ // work with www.google.dk.
+ var secure = new SecureSocket("www.google.dk", 443);
+ List<String> chunks = <String>[];
+ var input = secure.inputStream;
+ var output = secure.outputStream;
+
+ output.write("GET / HTTP/1.0\r\nHost: www.google.dk\r\n\r\n".charCodes);
+ output.close();
+ input.onData = () {
+ chunks.add(new String.fromCharCodes(input.read()));
+ };
+ input.onClosed = () {
+ String fullPage = Strings.concatAll(chunks);
+ Expect.isTrue(fullPage.contains('</body></html>'));
+ };
+}
diff --git a/tests/standalone/io/string_stream_test.dart b/tests/standalone/io/string_stream_test.dart
index f335291..d1369dc 100644
--- a/tests/standalone/io/string_stream_test.dart
+++ b/tests/standalone/io/string_stream_test.dart
@@ -29,8 +29,8 @@
Expect.equals(new String.fromCharCodes([0xffff]), s[5]);
// Surrogate pair for U+1D11E.
- Expect.equals(new String.fromCharCodes([0xd834]), s[6]);
- Expect.equals(new String.fromCharCodes([0xdd1e]), s[7]);
+ Expect.equals(new String.fromCharCodes([0xd834, 0xdd1e]),
+ s.substring(6, 8));
}
stream.onData = stringData;
}
diff --git a/tests/standalone/io/test_runner_exit_code_script.dart b/tests/standalone/io/test_runner_exit_code_script.dart
index f137022..37fbc8e 100644
--- a/tests/standalone/io/test_runner_exit_code_script.dart
+++ b/tests/standalone/io/test_runner_exit_code_script.dart
@@ -14,6 +14,9 @@
var startTime = new Date.now();
var progress =
new ProgressIndicator.fromName(progressType, startTime, false);
+ if (progressType == 'buildbot') {
+ BuildbotProgressIndicator.stepName = 'myStepName';
+ }
// Build a dummy test case.
var configuration = new TestOptionsParser().parse(['--timeout', '2'])[0];
var dummyCommand = new Command("noop", []);
diff --git a/tests/standalone/io/testing_server.dart b/tests/standalone/io/testing_server.dart
index 62b2404..59a0c9e 100644
--- a/tests/standalone/io/testing_server.dart
+++ b/tests/standalone/io/testing_server.dart
@@ -8,7 +8,7 @@
static const INIT = 0;
static const SHUTDOWN = -1;
- abstract void onConnection(Socket connection);
+ void onConnection(Socket connection); // Abstract.
void errorHandlerServer(Exception e) {
Expect.fail("Server socket error $e");
@@ -38,7 +38,7 @@
initialize();
}
- abstract void run();
+ void run(); // Abstract.
void initialize() {
_receivePort.receive((var message, SendPort replyTo) {
diff --git "a/tests/standalone/io/\303\246\303\270\303\245/\303\246\303\270\303\245.dat" "b/tests/standalone/io/\303\246\303\270\303\245/\303\246\303\270\303\245.dat"
deleted file mode 100644
index 5a9c6c8..0000000
--- "a/tests/standalone/io/\303\246\303\270\303\245/\303\246\303\270\303\245.dat"
+++ /dev/null
@@ -1 +0,0 @@
-æøå
\ No newline at end of file
diff --git a/tests/standalone/package/package1_test.dart b/tests/standalone/package/package1_test.dart
index f449868..b331d1c 100644
--- a/tests/standalone/package/package1_test.dart
+++ b/tests/standalone/package/package1_test.dart
@@ -2,5 +2,7 @@
// 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.
+// PackageRoot=none
+
#library('package1_test.dart');
#import('package:package1.dart');
diff --git a/tests/standalone/package/package_isolate_test.dart b/tests/standalone/package/package_isolate_test.dart
index 96e304f..7f4bc61 100644
--- a/tests/standalone/package/package_isolate_test.dart
+++ b/tests/standalone/package/package_isolate_test.dart
@@ -2,6 +2,8 @@
// 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.
+// PackageRoot=tests/standalone/package/packages/
+
library package_isolate_test;
import 'package:shared.dart' as shared;
import 'dart:isolate';
diff --git a/tests/standalone/package/package_test.dart b/tests/standalone/package/package_test.dart
index b304f6d..e55181a 100644
--- a/tests/standalone/package/package_test.dart
+++ b/tests/standalone/package/package_test.dart
@@ -2,6 +2,8 @@
// 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.
+// PackageRoot=none
+
#library('package_test');
#import('package:lib1.dart');
diff --git a/tests/standalone/standalone.status b/tests/standalone/standalone.status
index 0f9c960..d888b07 100644
--- a/tests/standalone/standalone.status
+++ b/tests/standalone/standalone.status
@@ -6,7 +6,8 @@
package/invalid_uri_test: Fail, OK # Fails intentionally
-io/tls_socket_test: Pass, Timeout # Issue 6730.
+io/secure_socket_test: Pass, Timeout # Issue 6730.
+io/secure_stream_test: Pass, Timeout # Issue 6730.
[ $runtime == vm && $checked ]
# These tests have type errors on purpose.
@@ -41,6 +42,7 @@
[ $runtime == vm && $system == windows ]
io/file_system_links_test: Skip # No links on Windows.
+io/secure_server_stream_test: Pass, Crash, Timeout # Issue 6893
[ $compiler == none && $runtime == drt ]
io/*: Skip # Don't run tests using dart:io in the browser
diff --git a/tests/utils/uri_test.dart b/tests/utils/uri_test.dart
index 7acc5cf..66820dc 100644
--- a/tests/utils/uri_test.dart
+++ b/tests/utils/uri_test.dart
@@ -187,10 +187,11 @@
"origin for non-http/https uri should fail");
// URI encode tests
- // Note: dart2js won't handle '\ud800\udc00' and frog
- // won't handle '\u{10000}'. So we cons this up synthetically...
+ // Create a string with code point 0x10000 encoded as a surrogate pair.
var s = decodeUtf8([0xf0, 0x90, 0x80, 0x80]);
+ Expect.stringEquals("\u{10000}", s);
+
testEncodeDecode("\uFFFE", "%EF%BF%BE");
testEncodeDecode("\uFFFF", "%EF%BF%BF");
testEncodeDecode("\uFFFE", "%EF%BF%BE");
diff --git a/tests/utils/utf8_test.dart b/tests/utils/utf8_test.dart
index 541f101..b92d5aaa 100644
--- a/tests/utils/utf8_test.dart
+++ b/tests/utils/utf8_test.dart
@@ -7,8 +7,6 @@
String decode(List<int> bytes) => decodeUtf8(bytes);
-bool isRunningOnJavaScript() => identical(1, 1.0);
-
main() {
// Google favorite: "Îñţérñåţîöñåļîžåţîờñ".
String string = decode([0xc3, 0x8e, 0xc3, 0xb1, 0xc5, 0xa3, 0xc3, 0xa9, 0x72,
@@ -37,14 +35,12 @@
0xb2, 0xe0, 0xa5, 0x88]);
Expect.stringEquals("िसवा अणामालै", string);
- if (!isRunningOnJavaScript()) {
- // DESERET CAPITAL LETTER BEE, unicode 0x10412(0xD801+0xDC12)
- // UTF-8: F0 90 90 92
- string = decode([0xf0, 0x90, 0x90, 0x92]);
- Expect.stringEquals("𐐒", string);
- } else {
- print('Skipping non-BMP character test');
- }
+ // DESERET CAPITAL LETTER BEE, unicode 0x10412(0xD801+0xDC12)
+ // UTF-8: F0 90 90 92
+ string = decode([0xf0, 0x90, 0x90, 0x92]);
+ Expect.equals(string.length, 2);
+ Expect.equals("𐐒".length, 2);
+ Expect.stringEquals("𐐒", string);
// TODO(ahe): Add tests of bad input.
}
diff --git a/tests/utils/utils.status b/tests/utils/utils.status
index 1ddd3b0..2ce46b6 100644
--- a/tests/utils/utils.status
+++ b/tests/utils/utils.status
@@ -8,7 +8,6 @@
[ $compiler == dart2js ]
dummy_compiler_test: Slow, Pass
recursive_import_test: Slow, Pass
-utf8_test: Fail # issue 6418
[ $compiler == none && $runtime == drt ]
dummy_compiler_test: Fail # http://dartbug.com/2264
@@ -23,12 +22,6 @@
[ $system == macos || $system == windows ]
*_layout_test: Skip
-[ $compiler == dartc ]
-# dart2js issue 6323
-dummy_compiler_test: Fail, OK
-recursive_import_test: Fail, OK
-
-
[ $compiler == dart2dart ]
# Skip until we stabilize language tests.
*: Skip
diff --git a/tools/VERSION b/tools/VERSION
index 1889699..9937b3b 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -1,4 +1,4 @@
MAJOR 0
MINOR 2
-BUILD 4
-PATCH 2
+BUILD 5
+PATCH 0
diff --git a/tools/bots/pub.py b/tools/bots/pub.py
index e101783..29e49ae 100755
--- a/tools/bots/pub.py
+++ b/tools/bots/pub.py
@@ -41,6 +41,12 @@
print 'Generating API Docs: %s' % (' '.join(args))
bot.RunProcess(args)
+ with bot.BuildStep('Build package-root'):
+ args = [sys.executable, './tools/build.py', '--mode=' + build_info.mode,
+ 'packages']
+ print 'Building package-root: %s' % (' '.join(args))
+ bot.RunProcess(args)
+
bot.RunTest('pub', build_info, ['pub', 'pkg'])
diff --git a/tools/create_sdk.py b/tools/create_sdk.py
index a3235e8..5793e3e 100755
--- a/tools/create_sdk.py
+++ b/tools/create_sdk.py
@@ -112,14 +112,12 @@
CopyShellScript(os.path.join(home, 'sdk', 'bin', executable),
os.path.join(sdk_root, 'bin'))
- if utils.GuessOS() != 'win32':
- # TODO(ahe): Enable for Windows as well.
- subprocess.call([os.path.join(build_dir, 'gen_snapshot'),
- '--script_snapshot=%s' %
- os.path.join(sdk_root, 'lib', '_internal', 'compiler',
- 'implementation', 'dart2js.dart.snapshot'),
- os.path.join(sdk_root, 'lib', '_internal', 'compiler',
- 'implementation', 'dart2js.dart')])
+ subprocess.call([os.path.join(build_dir, 'gen_snapshot'),
+ '--script_snapshot=%s' %
+ os.path.join(sdk_root, 'lib', '_internal', 'compiler',
+ 'implementation', 'dart2js.dart.snapshot'),
+ os.path.join(sdk_root, 'lib', '_internal', 'compiler',
+ 'implementation', 'dart2js.dart')])
@@ -263,6 +261,23 @@
"var pathTo7zip = '7zip/7za.exe';"),
])
+ # Copy in cURL on all operating systems, since we need the certificates file
+ # even outside Windows. Leave out the EXE on non-Windows systems, though.
+ curl_ignore_patterns = ignore_patterns('.svn') if utils.GuessOS() == 'win32' \
+ else ignore_patterns('.svn', '*.exe')
+ copytree(join(HOME, 'third_party', 'curl'),
+ join(join(UTIL, 'pub'), 'curl'),
+ ignore=curl_ignore_patterns)
+
+ ReplaceInFiles([
+ join(UTIL, 'pub', 'curl_client.dart'),
+ ], [
+ ("var pathToCurl = '../../third_party/curl/curl.exe';",
+ "var pathToCurl = 'curl/curl.exe';"),
+ ("var pathToCertificates = '../../third_party/curl/ca-certificates.crt';",
+ "var pathToCertificates = 'curl/ca-certificates.crt';"),
+ ])
+
version = utils.GetVersion()
# Copy dart2js/dartdoc/pub.
diff --git a/tools/gyp/configurations_make.gypi b/tools/gyp/configurations_make.gypi
index 6900999..b4679b5 100644
--- a/tools/gyp/configurations_make.gypi
+++ b/tools/gyp/configurations_make.gypi
@@ -29,10 +29,6 @@
'-fvisibility-inlines-hidden',
'-fno-omit-frame-pointer',
],
- 'ldflags': [
- '-rdynamic',
- '-Wl,-rpath,<(PRODUCT_DIR)/lib.target',
- ],
},
'Dart_ia32_Base': {
@@ -57,9 +53,6 @@
'-mfloat-abi=softfp',
'-fno-strict-overflow',
],
- 'ldflags': [
- '-Wl,-rpath=<(arm_cross_libc)/usr/lib',
- ],
},
'Dart_Debug': {
diff --git a/tools/make_links.py b/tools/make_links.py
new file mode 100644
index 0000000..3f54004
--- /dev/null
+++ b/tools/make_links.py
@@ -0,0 +1,71 @@
+#!/usr/bin/env python
+# Copyright (c) 2012, 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.
+
+
+'''Tool for creating symlinks from SOURCES to TARGET.
+
+For each SOURCE in SOURCES create a link from SOURCE to TARGET. If a
+SOURCE ends with .../lib, the lib suffix is ignored when determining
+the name of the target link.
+
+Usage:
+ python tools/make_links.py TARGET SOURCES...
+'''
+
+import os
+import subprocess
+import sys
+import utils
+
+
+def make_link(source, target):
+ # TODO(ahe): Remove this code when the build bots are green again.
+ bug_cleanup = os.path.join(target, 'lib')
+ if os.path.islink(bug_cleanup):
+ print 'Removing %s' % bug_cleanup
+ sys.stdout.flush()
+ os.unlink(bug_cleanup)
+ # End of temporary code.
+
+ if os.path.islink(target):
+ print 'Removing %s' % target
+ sys.stdout.flush()
+ os.unlink(target)
+
+ if os.path.isdir(target):
+ print 'Removing %s' % target
+ sys.stdout.flush()
+ os.rmdir(target)
+
+ print 'Creating link from %s to %s' % (source, target)
+ sys.stdout.flush()
+
+ if utils.GuessOS() == 'win32':
+ return subprocess.call(['mklink', '/j', target, source], shell=True)
+ else:
+ return subprocess.call(['ln', '-s', source, target])
+
+
+def main(argv):
+ target = os.path.relpath(argv[1])
+ for source in argv[2:]:
+ # Assume the source directory is named ".../TARGET_NAME/lib".
+ (name, lib) = os.path.split(source)
+ if lib != 'lib':
+ name = source
+ # Remove any addtional path components preceding TARGET_NAME.
+ (path, name) = os.path.split(name)
+ if utils.GuessOS() == 'win32':
+ source = os.path.relpath(source)
+ else:
+ source = os.path.relpath(source, start=target)
+ exit_code = make_link(source, os.path.join(target, name))
+ if exit_code != 0:
+ return exit_code
+ return 0
+
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv))
diff --git a/tools/revert.py b/tools/revert.py
index 33d014c..ce3eff0 100755
--- a/tools/revert.py
+++ b/tools/revert.py
@@ -177,14 +177,10 @@
revisions = parse_args()
git_user = runs_git()
if has_new_code(git_user):
- if git_user:
- maybe_fail('Your tree has local modifications! Move to a clean tree and '
- 'try running this script again.')
- else:
- maybe_fail('WARNING: This checkout has local modifications!! This could '
- 'result in a CL that is not just a revert and/or you could lose your'
- ' local changes! Are you **SURE** you want to continue? ',
- user_input=True)
+ maybe_fail('WARNING: This checkout has local modifications!! This could '
+ 'result in a CL that is not just a revert and/or you could lose your'
+ ' local changes! Are you **SURE** you want to continue? ',
+ user_input=True)
if git_user:
run_cmd(['git', 'cl', 'rebase'])
run_cmd(['gclient', 'sync'])
diff --git a/tools/testing/dart/test_options.dart b/tools/testing/dart/test_options.dart
index 0b1ee54..8a3a2a6 100644
--- a/tools/testing/dart/test_options.dart
+++ b/tools/testing/dart/test_options.dart
@@ -156,7 +156,7 @@
'Step name for use by -pbuildbot',
['--step_name'],
[],
- 'string'),
+ null),
new _TestOptionSpecification(
'report',
'Print a summary report of the number of tests, by expectation',
@@ -227,12 +227,6 @@
false,
'bool'),
new _TestOptionSpecification(
- 'additional-compiler-flags',
- 'Additional flags to control test compilation',
- ['--additional-compiler-flags'],
- [],
- ''),
- new _TestOptionSpecification(
'dart',
'Path to dart executable',
['--dart'],
@@ -263,6 +257,12 @@
false,
'bool'),
new _TestOptionSpecification(
+ 'build_directory',
+ 'The name of the build directory, where products are placed.',
+ ['--build-directory'],
+ [],
+ ''),
+ new _TestOptionSpecification(
'noBatch',
'Do not run browser tests in batch mode',
['-n', '--nobatch'],
diff --git a/tools/testing/dart/test_progress.dart b/tools/testing/dart/test_progress.dart
index 68ee945..33e0765 100644
--- a/tools/testing/dart/test_progress.dart
+++ b/tools/testing/dart/test_progress.dart
@@ -407,7 +407,7 @@
}
void _printFailureSummary() {
- if (!_failureSummary.isEmpty) {
+ if (!_failureSummary.isEmpty && stepName != null) {
print('@@@STEP_FAILURE@@@');
print('@@@BUILD_STEP $stepName failures@@@');
}
diff --git a/tools/testing/dart/test_suite.dart b/tools/testing/dart/test_suite.dart
index 84fd882..4ce2287 100644
--- a/tools/testing/dart/test_suite.dart
+++ b/tools/testing/dart/test_suite.dart
@@ -105,11 +105,7 @@
/**
* The output directory for this suite's configuration.
*/
- String get buildDir {
- var mode = (configuration['mode'] == 'debug') ? 'Debug' : 'Release';
- var arch = configuration['arch'].toUpperCase();
- return "${TestUtils.outputDir(configuration)}$mode$arch";
- }
+ String get buildDir => TestUtils.buildDir(configuration);
/**
* The path to the compiler for this suite's configuration. Returns `null` if
@@ -619,7 +615,8 @@
Set<String> expectations = testExpectations.expectations(testName);
if (info.hasCompileError &&
- TestUtils.isBrowserRuntime(configuration['runtime'])) {
+ TestUtils.isBrowserRuntime(configuration['runtime']) &&
+ configuration['report']) {
SummaryReport.addCompileErrorSkipTest();
return;
}
@@ -711,12 +708,6 @@
case 'dart2dart':
var compilerArguments = new List.from(args);
- var additionalFlags =
- configuration['additional-compiler-flags'].split(' ');
- for (final flag in additionalFlags) {
- if (flag.isEmpty) continue;
- compilerArguments.add(flag);
- }
compilerArguments.add('--output-type=dart');
String tempDir = createOutputDirectory(info.filePath, '');
compilerArguments.add('--out=$tempDir/out.dart');
@@ -888,7 +879,7 @@
if (compiler != 'none') {
commands.add(_compileCommand(
dartWrapperFilename, compiledDartWrapperFilename,
- compiler, tempDir, vmOptions));
+ compiler, tempDir, vmOptions, optionsFromFile));
// some tests require compiling multiple input scripts.
List<String> otherScripts = optionsFromFile['otherScripts'];
@@ -899,7 +890,7 @@
Path fromPath = filePath.directoryPath.join(namePath);
commands.add(_compileCommand(
fromPath.toNativePath(), '$tempDir/$baseName.js',
- compiler, tempDir, vmOptions));
+ compiler, tempDir, vmOptions, optionsFromFile));
}
}
@@ -931,6 +922,13 @@
dumpRenderTreeFilename,
'--no-timeout'
];
+ if (compiler == 'none') {
+ String packageRoot =
+ packageRootArgument(optionsFromFile['packageRoot']);
+ if (packageRoot != null) {
+ args.add(packageRoot);
+ }
+ }
if (runtime == 'drt' &&
(compiler == 'none' || compiler == 'dart2dart')) {
var dartFlags = ['--ignore-unrecognized-flags'];
@@ -981,12 +979,17 @@
/** Helper to create a compilation command for a single input file. */
Command _compileCommand(String inputFile, String outputFile,
- String compiler, String dir, var vmOptions) {
+ String compiler, String dir, vmOptions, optionsFromFile) {
String executable = compilerPath;
List<String> args = TestUtils.standardOptions(configuration);
switch (compiler) {
case 'dart2js':
case 'dart2dart':
+ String packageRoot =
+ packageRootArgument(optionsFromFile['packageRoot']);
+ if (packageRoot != null) {
+ args.add(packageRoot);
+ }
if (compiler == 'dart2dart') args.add('--out=$outputFile');
args.add('--out=$outputFile');
args.add(inputFile);
@@ -1096,6 +1099,11 @@
List<String> commonArgumentsFromFile(Path filePath, Map optionsFromFile) {
List args = TestUtils.standardOptions(configuration);
+
+ String packageRoot = packageRootArgument(optionsFromFile['packageRoot']);
+ if (packageRoot != null) {
+ args.add(packageRoot);
+ }
args.addAll(additionalOptions(filePath));
if (configuration['compiler'] == 'dartc') {
args.add('--error_format');
@@ -1123,6 +1131,15 @@
return args;
}
+ String packageRootArgument(String packageRootFromFile) {
+ if (packageRootFromFile == "none") return null;
+ String packageRoot = packageRootFromFile;
+ if (packageRootFromFile == null) {
+ packageRoot = "$buildDir/packages/";
+ }
+ return "--package-root=$packageRoot";
+ }
+
/**
* Special options for individual tests are currently specified in various
* ways: with comments directly in test files, by using certain imports, or by
@@ -1183,6 +1200,7 @@
RegExp testOptionsRegExp = new RegExp(r"// VMOptions=(.*)");
RegExp dartOptionsRegExp = new RegExp(r"// DartOptions=(.*)");
RegExp otherScriptsRegExp = new RegExp(r"// OtherScripts=(.*)");
+ RegExp packageRootRegExp = new RegExp(r"// PackageRoot=(.*)");
RegExp multiTestRegExp = new RegExp(r"/// [0-9][0-9]:(.*)");
RegExp multiHtmlTestRegExp =
new RegExp(r"useHtmlIndividualConfiguration()");
@@ -1217,6 +1235,7 @@
// Find the options in the file.
List<List> result = new List<List>();
List<String> dartOptions;
+ String packageRoot;
bool hasCompileError = contents.contains("@compile-error");
bool hasRuntimeError = contents.contains("@runtime-error");
bool isStaticClean = false;
@@ -1236,6 +1255,15 @@
dartOptions = match[1].split(' ').filter((e) => e != '');
}
+ matches = packageRootRegExp.allMatches(contents);
+ for (var match in matches) {
+ if (packageRoot != null) {
+ throw new Exception(
+ 'More than one "// PackageRoot=" line in test $filePath');
+ }
+ packageRoot = match[1];
+ }
+
matches = staticCleanRegExp.allMatches(contents);
for (var match in matches) {
if (isStaticClean) {
@@ -1284,6 +1312,7 @@
return { "vmOptions": result,
"dartOptions": dartOptions,
+ "packageRoot": packageRoot,
"hasCompileError": hasCompileError,
"hasRuntimeError": hasRuntimeError,
"isStaticClean" : isStaticClean,
@@ -1474,6 +1503,9 @@
* [base] directory if that [relativePath] does not already exist.
*/
static Directory mkdirRecursive(Path base, Path relativePath) {
+ if (relativePath.isAbsolute) {
+ base = new Path('/');
+ }
Directory dir = new Directory.fromPath(base);
Expect.isTrue(dir.existsSync(),
"Expected ${dir} to already exist");
@@ -1516,19 +1548,6 @@
}
}
- static String outputDir(Map configuration) {
- var result = '';
- var system = configuration['system'];
- if (system == 'linux') {
- result = 'out/';
- } else if (system == 'macos') {
- result = 'xcodebuild/';
- } else if (system == 'windows') {
- result = 'build/';
- }
- return result;
- }
-
static Path dartDir() {
File scriptFile = new File(testScriptPath);
Path scriptPath = new Path.fromNative(scriptFile.fullPathSync());
@@ -1552,9 +1571,8 @@
args.add("--allow-mock-compilation");
}
}
- // TODO(riocw): Unify our minification calling convention between dart2js
- // and dart2dart.
- if (compiler == "dart2js" && configuration["minified"]) {
+ if ((compiler == "dart2js" || compiler == "dart2dart") &&
+ configuration["minified"]) {
args.add("--minify");
}
return args;
@@ -1579,6 +1597,23 @@
static bool isJsCommandLineRuntime(String runtime) =>
const ['d8', 'jsshell'].contains(runtime);
+ static String buildDir(Map configuration) {
+ if (configuration['build_directory'] != '') {
+ return configuration['build_directory'];
+ }
+ var outputDir = '';
+ var system = configuration['system'];
+ if (system == 'linux') {
+ outputDir = 'out/';
+ } else if (system == 'macos') {
+ outputDir = 'xcodebuild/';
+ } else if (system == 'windows') {
+ outputDir = 'build/';
+ }
+ var mode = (configuration['mode'] == 'debug') ? 'Debug' : 'Release';
+ var arch = configuration['arch'].toUpperCase();
+ return "$outputDir$mode$arch";
+ }
}
class SummaryReport {
diff --git a/tools/testing/drt-trampoline.py b/tools/testing/drt-trampoline.py
index fc27a7d..ac5b23d69 100644
--- a/tools/testing/drt-trampoline.py
+++ b/tools/testing/drt-trampoline.py
@@ -8,40 +8,70 @@
#
# Expected invocation: python drt-trampoline.py <path to DRT> <DRT command line>
+import optparse
import os
import signal
import subprocess
import sys
-DART_FLAGS_PREFIX = '--dart-flags='
-OUT_EXPECTATION_PREFIX = '--out-expectation='
+def parse_options(argv):
+ parser = optparse.OptionParser()
+ parser.add_option('--dart-flags',
+ metavar='FLAGS',
+ dest='dart_flags')
+ parser.add_option('--out-expectation',
+ metavar='FILE',
+ dest='out_expected_file')
+ parser.add_option('--package-root',
+ metavar='DIRECTORY',
+ dest='dart_package_root')
+ parser.add_option('--no-timeout',
+ action='store_true')
+ return parser.parse_args(args=argv)
+
def main(argv):
drt_path = argv[1]
- command_line = argv[2:]
+ (options, arguments) = parse_options(argv[2:])
cmd = [drt_path]
env = None
test_file = None
- out_expected_file = None
+ dart_flags = options.dart_flags
+ out_expected_file = options.out_expected_file
+ dart_package_root = options.dart_package_root
is_png = False
- # parse arguments, filtering out flags, and selecting the input test file
- for arg in command_line:
- if arg.startswith(DART_FLAGS_PREFIX):
+ if dart_flags:
+ if not env:
env = dict(os.environ.items())
- env['DART_FLAGS'] = arg[len(DART_FLAGS_PREFIX):]
- elif arg.startswith(OUT_EXPECTATION_PREFIX):
- out_expected_file = arg[len(OUT_EXPECTATION_PREFIX):]
- if out_expected_file.endswith('.png'):
- cmd.append('--notree')
- is_png = True
- elif not out_expected_file.endswith('.txt'):
- raise Exception(
- 'Bad file expectation (%s), ' % out_expected_file
- + 'please specify either a .txt or a .png file')
- elif '.html' in arg:
+ env['DART_FLAGS'] = dart_flags
+
+ if dart_package_root:
+ if not env:
+ env = dict(os.environ.items())
+ absolute_path = os.path.abspath(dart_package_root)
+ absolute_path = absolute_path.replace(os.path.sep, '/')
+ if not absolute_path.startswith('/'):
+ # Happens on Windows for C:\packages
+ absolute_path = '/%s' % absolute_path
+ env['DART_PACKAGE_ROOT'] = 'file://%s' % absolute_path
+
+ if out_expected_file:
+ if out_expected_file.endswith('.png'):
+ cmd.append('--notree')
+ is_png = True
+ elif not out_expected_file.endswith('.txt'):
+ raise Exception(
+ 'Bad file expectation (%s) please specify either a .txt or a .png file'
+ % out_expected_file)
+
+ if options.no_timeout:
+ cmd.append('--no-timeout')
+
+ for arg in arguments:
+ if '.html' in arg:
test_file = arg
else:
cmd.append(arg)
diff --git a/tools/utils/vim/syntax/dart.vim b/tools/utils/vim/syntax/dart.vim
index f954ebd..669db58 100644
--- a/tools/utils/vim/syntax/dart.vim
+++ b/tools/utils/vim/syntax/dart.vim
@@ -34,7 +34,7 @@
syn keyword dartStatement return
syn keyword dartStorageClass static abstract
syn keyword dartExceptions throw try catch finally
-syn keyword dartExceptions Error FormatException Exception ExpectException FutureAlreadyCompleteException FutureNotCompleteException ArgumentError IllegalJSRegExpException IntegerDivisionByZeroException NoSuchMethodError NullPointerException OutOfMemoryError RangeError StackOverflowException StateError UnimplementedError UnsupportedError
+syn keyword dartExceptions Error FormatException Exception ExpectException FutureAlreadyCompleteException FutureNotCompleteException ArgumentError IllegalJSRegExpException IntegerDivisionByZeroException NoSuchMethodError NullThrownError OutOfMemoryError RangeError StackOverflowException StateError UnimplementedError UnsupportedError
syn keyword dartExceptions_DEPRECATED BadNumberFormatException
syn keyword dartAssert assert
syn keyword dartClassDecl extends implements interface
diff --git a/utils/apidoc/apidoc.gyp b/utils/apidoc/apidoc.gyp
index abd2961..c029b94 100644
--- a/utils/apidoc/apidoc.gyp
+++ b/utils/apidoc/apidoc.gyp
@@ -45,6 +45,7 @@
'--mode=static',
'--exclude-lib=dartdoc',
'--exclude-lib=http',
+ '--exclude-lib=oauth2',
'--exclude-lib=webdriver',
'--include-lib=matcher',
'--include-lib=mock',
diff --git a/pkg/http/lib/src/curl_client.dart b/utils/pub/curl_client.dart
similarity index 70%
rename from pkg/http/lib/src/curl_client.dart
rename to utils/pub/curl_client.dart
index 079d1c3..20a1027 100644
--- a/pkg/http/lib/src/curl_client.dart
+++ b/utils/pub/curl_client.dart
@@ -6,32 +6,36 @@
import 'dart:io';
-import 'base_client.dart';
-import 'base_request.dart';
-import 'streamed_response.dart';
+import '../../pkg/http/lib/http.dart' as http;
+import 'io.dart';
import 'utils.dart';
-/// A drop-in replacement for [Client] that uses the `curl` command-line utility
-/// rather than [dart:io] to make requests. This class will only exist
+/// A drop-in replacement for [http.Client] that uses the `curl` command-line
+/// utility rather than [dart:io] to make requests. This class will only exist
/// temporarily until [dart:io] natively supports requests over HTTPS.
-class CurlClient extends BaseClient {
- /// The path to the `curl` executable to run. By default, this will look up
- /// `curl` on the system path.
+class CurlClient extends http.BaseClient {
+ /// The path to the `curl` executable to run.
+ ///
+ /// By default on Unix-like operating systems, this will look up `curl` on the
+ /// system path. On Windows, it will use the bundled `curl.exe`.
final String executable;
/// Creates a new [CurlClient] with [executable] as the path to the `curl`
- /// executable. By default, this will look up `curl` on the system path.
+ /// executable.
+ ///
+ /// By default on Unix-like operating systems, this will look up `curl` on the
+ /// system path. On Windows, it will use the bundled `curl.exe`.
CurlClient([String executable])
- : executable = executable == null ? "curl" : executable;
+ : executable = executable == null ? _defaultExecutable : executable;
/// Sends a request via `curl` and returns the response.
- Future<StreamedResponse> send(BaseRequest request) {
+ Future<http.StreamedResponse> send(http.BaseRequest request) {
var requestStream = request.finalize();
return withTempDir((tempDir) {
var headerFile = new Path(tempDir).append("curl-headers").toNativePath();
var arguments = _argumentsForRequest(request, headerFile);
var process;
- return Process.start("curl", arguments).chain((process_) {
+ return Process.start(executable, arguments).chain((process_) {
process = process_;
if (requestStream.closed) {
process.stdin.close();
@@ -48,8 +52,16 @@
/// Returns the list of arguments to `curl` necessary for performing
/// [request]. [headerFile] is the path to the file where the response headers
/// should be stored.
- List<String> _argumentsForRequest(BaseRequest request, String headerFile) {
- var arguments = ["--dump-header", headerFile];
+ List<String> _argumentsForRequest(
+ http.BaseRequest request, String headerFile) {
+ // Note: This line of code gets munged by create_sdk.py to be the correct
+ // relative path to the certificate file in the SDK.
+ var pathToCertificates = "../../third_party/curl/ca-certificates.crt";
+
+ var arguments = [
+ "--dump-header", headerFile,
+ "--cacert", relativeToPub(pathToCertificates)
+ ];
if (request.method == 'HEAD') {
arguments.add("--head");
} else {
@@ -72,7 +84,7 @@
'accept': '',
'user-agent': ''
};
- mapAddAll(headers, request.headers);
+ request.headers.forEach((name, value) => headers[name] = value);
if (request.contentLength < 0) {
headers['content-length'] = '';
headers['transfer-encoding'] = 'chunked';
@@ -106,7 +118,7 @@
.transform((stderrBytes) {
var message = new String.fromCharCodes(stderrBytes);
if (exitCode == 47) {
- throw new RedirectLimitExceededException(message);
+ throw new RedirectLimitExceededException([]);
} else {
throw new HttpException(message);
}
@@ -148,9 +160,9 @@
return completer.future;
}
- /// Returns a [StreamedResponse] from the response data printed by the `curl`
- /// [process]. [lines] are the headers that `curl` wrote to a file.
- StreamedResponse _buildResponse(Process process, List<String> lines) {
+ /// Returns a [http.StreamedResponse] from the response data printed by the
+ /// `curl` [process]. [lines] are the headers that `curl` wrote to a file.
+ http.StreamedResponse _buildResponse(Process process, List<String> lines) {
// When curl follows redirects, it prints the redirect headers as well as
// the headers of the final request. Each block is separated by a blank
// line. We just care about the last block. There is one trailing empty
@@ -162,7 +174,7 @@
var status = int.parse(statusParts[1]);
var isRedirect = status >= 300 && status < 400;
var reasonPhrase =
- Strings.join(" ", statusParts.getRange(2, statusParts.length - 2));
+ Strings.join(statusParts.getRange(2, statusParts.length - 2), " ");
var headers = <String>{};
for (var line in lines) {
if (line.isEmpty) continue;
@@ -179,9 +191,20 @@
contentLength = int.parse(headers['content-length']);
}
- return new StreamedResponse(responseStream, status, contentLength,
+ return new http.StreamedResponse(responseStream, status, contentLength,
headers: headers,
isRedirect: isRedirect,
reasonPhrase: reasonPhrase);
}
+
+ /// The default executable to use for running curl. On Windows, this is the
+ /// path to the bundled `curl.exe`; elsewhere, this is just "curl", and we
+ /// assume it to be installed and on the user's PATH.
+ static String get _defaultExecutable {
+ if (Platform.operatingSystem != 'windows') return 'curl';
+ // Note: This line of code gets munged by create_sdk.py to be the correct
+ // relative path to curl in the SDK.
+ var pathToCurl = "../../third_party/curl/curl.exe";
+ return relativeToPub(pathToCurl);
+ }
}
diff --git a/utils/pub/io.dart b/utils/pub/io.dart
index 793c7263..ed5dee6 100644
--- a/utils/pub/io.dart
+++ b/utils/pub/io.dart
@@ -365,6 +365,13 @@
.toNativePath();
}
+/// Resolves [path] relative to the location of pub.dart.
+String relativeToPub(String path) {
+ var scriptPath = new File(new Options().script).fullPathSync();
+ var scriptDir = new Path.fromNative(scriptPath).directoryPath;
+ return scriptDir.append(path).canonicalize().toNativePath();
+}
+
// TODO(nweiz): make this configurable
/**
* The amount of time in milliseconds to allow HTTP requests before assuming
@@ -535,6 +542,19 @@
return completer.future;
}
+/// Creates a temporary directory and passes its path to [fn]. Once the [Future]
+/// returned by [fn] completes, the temporary directory and all its contents
+/// will be deleted.
+Future withTempDir(Future fn(String path)) {
+ var tempDir;
+ var future = new Directory('').createTemp().chain((dir) {
+ tempDir = dir;
+ return fn(tempDir.path);
+ });
+ future.onComplete((_) => tempDir.delete(recursive: true));
+ return future;
+}
+
/// Tests whether or not the git command-line app is available for use.
Future<bool> get isGitInstalled {
if (_isGitInstalledCache != null) {
@@ -633,14 +653,10 @@
// read from stdin instead of a file. Consider resurrecting that version if
// we can figure out why it fails.
- // Find 7zip.
- var scriptPath = new File(new Options().script).fullPathSync();
- var scriptDir = new Path.fromNative(scriptPath).directoryPath;
-
// Note: This line of code gets munged by create_sdk.py to be the correct
// relative path to 7zip in the SDK.
var pathTo7zip = '../../third_party/7zip/7za.exe';
- var command = scriptDir.append(pathTo7zip).canonicalize().toNativePath();
+ var command = relativeToPub(pathTo7zip);
var tempDir;
@@ -674,8 +690,7 @@
if (tarFile == null) throw 'The gzip file did not contain a tar file.';
// Untar the archive into the destination directory.
- return runProcess(command, ['x', '-o"$destination"', tarFile],
- workingDir: tempDir);
+ return runProcess(command, ['x', tarFile], workingDir: destination);
}).chain((result) {
if (result.exitCode != 0) {
throw 'Could not un-tar (exit code ${result.exitCode}). Error:\n'
diff --git a/utils/pub/utils.dart b/utils/pub/utils.dart
index 21275f8..4097885 100644
--- a/utils/pub/utils.dart
+++ b/utils/pub/utils.dart
@@ -129,3 +129,24 @@
new Timer(milliSeconds, completer.complete);
return completer.future;
}
+
+/// Configures [future] so that its result (success or exception) is passed on
+/// to [completer].
+void chainToCompleter(Future future, Completer completer) {
+ future.handleException((e) {
+ completer.completeException(e);
+ return true;
+ });
+ future.then(completer.complete);
+}
+
+/// Like [String.split], but only splits on the first occurrence of the pattern.
+/// This will always return an array of two elements or fewer.
+List<String> split1(String toSplit, String pattern) {
+ if (toSplit.isEmpty) return <String>[];
+
+ var index = toSplit.indexOf(pattern);
+ if (index == -1) return [toSplit];
+ return [toSplit.substring(0, index),
+ toSplit.substring(index + pattern.length)];
+}
diff --git a/pkg/http/test/curl_client_test.dart b/utils/tests/pub/curl_client_test.dart
similarity index 82%
rename from pkg/http/test/curl_client_test.dart
rename to utils/tests/pub/curl_client_test.dart
index d94ad38..98432e0 100644
--- a/pkg/http/test/curl_client_test.dart
+++ b/utils/tests/pub/curl_client_test.dart
@@ -8,24 +8,25 @@
import 'dart:isolate';
import 'dart:uri';
-import '../../unittest/lib/unittest.dart';
-import '../lib/http.dart' as http;
-import '../lib/src/utils.dart';
-import 'utils.dart';
+import '../../../pkg/unittest/lib/unittest.dart';
+import '../../../pkg/http/lib/http.dart' as http;
+import '../../../pkg/http/test/utils.dart';
+import '../../pub/curl_client.dart';
+import '../../pub/io.dart';
void main() {
setUp(startServer);
tearDown(stopServer);
test('head', () {
- expect(new http.CurlClient().head(serverUrl).transform((response) {
+ expect(new CurlClient().head(serverUrl).transform((response) {
expect(response.statusCode, equals(200));
expect(response.body, equals(''));
}), completes);
});
test('get', () {
- expect(new http.CurlClient().get(serverUrl, headers: {
+ expect(new CurlClient().get(serverUrl, headers: {
'X-Random-Header': 'Value',
'X-Other-Header': 'Other Value'
}).transform((response) {
@@ -42,7 +43,7 @@
});
test('post', () {
- expect(new http.CurlClient().post(serverUrl, headers: {
+ expect(new CurlClient().post(serverUrl, headers: {
'X-Random-Header': 'Value',
'X-Other-Header': 'Other Value'
}, fields: {
@@ -67,7 +68,7 @@
});
test('post without fields', () {
- expect(new http.CurlClient().post(serverUrl, headers: {
+ expect(new CurlClient().post(serverUrl, headers: {
'X-Random-Header': 'Value',
'X-Other-Header': 'Other Value',
'Content-Type': 'text/plain'
@@ -86,7 +87,7 @@
});
test('put', () {
- expect(new http.CurlClient().put(serverUrl, headers: {
+ expect(new CurlClient().put(serverUrl, headers: {
'X-Random-Header': 'Value',
'X-Other-Header': 'Other Value'
}, fields: {
@@ -111,7 +112,7 @@
});
test('put without fields', () {
- expect(new http.CurlClient().put(serverUrl, headers: {
+ expect(new CurlClient().put(serverUrl, headers: {
'X-Random-Header': 'Value',
'X-Other-Header': 'Other Value',
'Content-Type': 'text/plain'
@@ -130,7 +131,7 @@
});
test('delete', () {
- expect(new http.CurlClient().delete(serverUrl, headers: {
+ expect(new CurlClient().delete(serverUrl, headers: {
'X-Random-Header': 'Value',
'X-Other-Header': 'Other Value'
}).transform((response) {
@@ -147,7 +148,7 @@
});
test('read', () {
- expect(new http.CurlClient().read(serverUrl, headers: {
+ expect(new CurlClient().read(serverUrl, headers: {
'X-Random-Header': 'Value',
'X-Other-Header': 'Other Value'
}), completion(parse(equals({
@@ -161,12 +162,12 @@
});
test('read throws an error for a 4** status code', () {
- expect(new http.CurlClient().read(serverUrl.resolve('/error')),
+ expect(new CurlClient().read(serverUrl.resolve('/error')),
throwsHttpException);
});
test('readBytes', () {
- var future = new http.CurlClient().readBytes(serverUrl, headers: {
+ var future = new CurlClient().readBytes(serverUrl, headers: {
'X-Random-Header': 'Value',
'X-Other-Header': 'Other Value'
}).transform((bytes) => new String.fromCharCodes(bytes));
@@ -182,12 +183,12 @@
});
test('readBytes throws an error for a 4** status code', () {
- expect(new http.CurlClient().readBytes(serverUrl.resolve('/error')),
+ expect(new CurlClient().readBytes(serverUrl.resolve('/error')),
throwsHttpException);
});
test('#send a StreamedRequest', () {
- var client = new http.CurlClient();
+ var client = new CurlClient();
var request = new http.StreamedRequest("POST", serverUrl);
request.headers[HttpHeaders.CONTENT_TYPE] =
'application/json; charset=utf-8';
@@ -214,7 +215,7 @@
test('with one redirect', () {
var url = serverUrl.resolve('/redirect');
- expect(new http.CurlClient().get(url).transform((response) {
+ expect(new CurlClient().get(url).transform((response) {
expect(response.statusCode, equals(200));
expect(response.body, parse(equals({
'method': 'GET',
@@ -225,36 +226,36 @@
});
test('with too many redirects', () {
- expect(new http.CurlClient().get(serverUrl.resolve('/loop?1')),
+ expect(new CurlClient().get(serverUrl.resolve('/loop?1')),
throwsRedirectLimitExceededException);
});
test('with a generic failure', () {
- expect(new http.CurlClient().get('url fail'),
+ expect(new CurlClient().get('url fail'),
throwsHttpException);
});
test('with one redirect via HEAD', () {
var url = serverUrl.resolve('/redirect');
- expect(new http.CurlClient().head(url).transform((response) {
+ expect(new CurlClient().head(url).transform((response) {
expect(response.statusCode, equals(200));
}), completes);
});
test('with too many redirects via HEAD', () {
- expect(new http.CurlClient().head(serverUrl.resolve('/loop?1')),
+ expect(new CurlClient().head(serverUrl.resolve('/loop?1')),
throwsRedirectLimitExceededException);
});
test('with a generic failure via HEAD', () {
- expect(new http.CurlClient().head('url fail'),
+ expect(new CurlClient().head('url fail'),
throwsHttpException);
});
test('without following redirects', () {
var request = new http.Request('GET', serverUrl.resolve('/redirect'));
request.followRedirects = false;
- expect(new http.CurlClient().send(request).chain(http.Response.fromStream)
+ expect(new CurlClient().send(request).chain(http.Response.fromStream)
.transform((response) {
expect(response.statusCode, equals(302));
expect(response.isRedirect, true);
diff --git a/utils/tests/string_encoding/unicode_test.dart b/utils/tests/string_encoding/unicode_test.dart
index 3fb23a6..054ff45 100755
--- a/utils/tests/string_encoding/unicode_test.dart
+++ b/utils/tests/string_encoding/unicode_test.dart
@@ -24,24 +24,24 @@
void registerTests(TestSuite suite) {
register("testCodepointsToString", testCodepointsToString, suite);
- register("testStringToCodepoints", testStringToCodepoints, suite);
- register("testEmptyCodepointsToString", testEmptyCodepointsToString, suite);
- register("testEmptyStringToCodepoints", testEmptyStringToCodepoints, suite);
+ register("testStringCharCodes", testStringCharCodes, suite);
+ register("testEmptyStringFromCharCodes", testEmptyStringFromCharCodes, suite);
+ register("testEmptyStringCharCodes", testEmptyStringCharCodes, suite);
}
- void testStringToCodepoints() {
- Expect.listEquals(testCodepoints, stringToCodepoints(testPhrase));
+ void testStringCharCodes() {
+ Expect.listEquals(testCodepoints, testPhrase.charCodes());
}
void testCodepointsToString() {
- Expect.stringEquals(testPhrase, codepointsToString(testCodepoints));
+ Expect.stringEquals(testPhrase, new String.fromCharCodes(testCodepoints));
}
- void testEmptyCodepointsToString() {
- Expect.stringEquals("", codepointsToString(<int>[]));
+ void testEmptyStringFromCharCodes() {
+ Expect.stringEquals("", new String.fromCharCodes(<int>[]));
}
- void testEmptyStringToCodepoints() {
- Expect.listEquals([], stringToCodepoints(""));
+ void testEmptyStringCharCodes() {
+ Expect.listEquals([], "".charCodes());
}
}