blob: bf5f0b6a6383ca9c9229d3de593a888f4b66636f [file] [log] [blame]
// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
part of $LIBRARYNAME;
$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS {
static const String INDEX_SIZE = 'IndexSizeError';
static const String HIERARCHY_REQUEST = 'HierarchyRequestError';
static const String WRONG_DOCUMENT = 'WrongDocumentError';
static const String INVALID_CHARACTER = 'InvalidCharacterError';
static const String NO_MODIFICATION_ALLOWED = 'NoModificationAllowedError';
static const String NOT_FOUND = 'NotFoundError';
static const String NOT_SUPPORTED = 'NotSupportedError';
static const String INVALID_STATE = 'InvalidStateError';
static const String SYNTAX = 'SyntaxError';
static const String INVALID_MODIFICATION = 'InvalidModificationError';
static const String NAMESPACE = 'NamespaceError';
static const String INVALID_ACCESS = 'InvalidAccessError';
static const String TYPE_MISMATCH = 'TypeMismatchError';
static const String SECURITY = 'SecurityError';
static const String NETWORK = 'NetworkError';
static const String ABORT = 'AbortError';
static const String URL_MISMATCH = 'URLMismatchError';
static const String QUOTA_EXCEEDED = 'QuotaExceededError';
static const String TIMEOUT = 'TimeoutError';
static const String INVALID_NODE_TYPE = 'InvalidNodeTypeError';
static const String DATA_CLONE = 'DataCloneError';
$if DART2JS
String get name {
var errorName = JS('String', '#.name', this);
// Although Safari nightly has updated the name to SecurityError, Safari 5
// and 6 still return SECURITY_ERR.
if (Device.isWebKit && errorName == 'SECURITY_ERR') return 'SecurityError';
// Chrome release still uses old string, remove this line when Chrome stable
// also prints out SyntaxError.
if (Device.isWebKit && errorName == 'SYNTAX_ERR') return 'SyntaxError';
return errorName;
}
$endif
$if JSINTEROP
String _name;
String _message;
// To suppress missing implicit constructor warnings.
factory DomException._() { throw new UnsupportedError("Not supported"); }
@Deprecated("Internal Use Only")
static DomException internalCreateDomException() {
return new DomException._internalWrap();
}
js.JsObject blink_jsObject;
factory DomException._internalWrap() {
return new DomException.internal_();
}
DomException.internal_() { }
DomException.jsInterop(String m) {
var name_index = m.indexOf(': ');
if (name_index < 0) {
_name = "";
_message = m;
} else {
_name = m.substring(0, name_index);
_message = m.substring(name_index + 1).trim();
}
}
@DomName('DOMException.message')
@DocsEditable()
String get message => _message;
@DomName('DOMException.name')
@DocsEditable()
String get name => _name;
@DomName('DOMException.toString')
@DocsEditable()
String toString() => "${_name}: $_message";
$else
$!MEMBERS
$endif
$if DART2JS
@DomName('DOMException.toString')
@DocsEditable()
String toString() => JS('String', 'String(#)', this);
$endif
}