mirror of
https://github.com/servo/servo.git
synced 2025-08-05 05:30:08 +01:00
auto merge of #1580 : brunoabinader/servo/dom-exception, r=Ms2ger
Spec: http://dom.spec.whatwg.org/#domexception This is a subtask for #1542.
This commit is contained in:
commit
74562b43f3
4 changed files with 157 additions and 0 deletions
|
@ -160,6 +160,10 @@ DOMInterfaces = {
|
|||
],
|
||||
},
|
||||
|
||||
'DOMException': {
|
||||
'nativeType': 'DOMException',
|
||||
},
|
||||
|
||||
'DOMImplementation': {
|
||||
'nativeType': 'DOMImplementation',
|
||||
},
|
||||
|
|
105
src/components/script/dom/domexception.rs
Normal file
105
src/components/script/dom/domexception.rs
Normal file
|
@ -0,0 +1,105 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use dom::bindings::codegen::DOMExceptionBinding;
|
||||
use dom::bindings::utils::DOMString;
|
||||
use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object};
|
||||
use dom::window::Window;
|
||||
|
||||
#[repr(uint)]
|
||||
#[deriving(ToStr)]
|
||||
enum DOMErrorName {
|
||||
IndexSizeError = 1,
|
||||
HierarchyRequestError = 3,
|
||||
WrongDocumentError = 4,
|
||||
InvalidCharacterError = 5,
|
||||
NoModificationAllowedError = 7,
|
||||
NotFoundError = 8,
|
||||
NotSupportedError = 9,
|
||||
InvalidStateError = 11,
|
||||
SyntaxError = 12,
|
||||
InvalidModificationError = 13,
|
||||
NamespaceError = 14,
|
||||
InvalidAccessError = 15,
|
||||
SecurityError = 18,
|
||||
NetworkError = 19,
|
||||
AbortError = 20,
|
||||
URLMismatchError = 21,
|
||||
QuotaExceededError = 22,
|
||||
TimeoutError = 23,
|
||||
InvalidNodeTypeError = 24,
|
||||
DataCloneError = 25,
|
||||
EncodingError
|
||||
}
|
||||
|
||||
pub struct DOMException {
|
||||
code: DOMErrorName,
|
||||
reflector_: Reflector
|
||||
}
|
||||
|
||||
impl DOMException {
|
||||
pub fn new_inherited(code: DOMErrorName) -> DOMException {
|
||||
DOMException {
|
||||
code: code,
|
||||
reflector_: Reflector::new()
|
||||
}
|
||||
}
|
||||
|
||||
pub fn new(window: &Window, code: DOMErrorName) -> @mut DOMException {
|
||||
reflect_dom_object(@mut DOMException::new_inherited(code), window, DOMExceptionBinding::Wrap)
|
||||
}
|
||||
}
|
||||
|
||||
impl Reflectable for DOMException {
|
||||
fn reflector<'a>(&'a self) -> &'a Reflector {
|
||||
&self.reflector_
|
||||
}
|
||||
|
||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||
&mut self.reflector_
|
||||
}
|
||||
}
|
||||
|
||||
impl DOMException {
|
||||
// http://dom.spec.whatwg.org/#dom-domexception-code
|
||||
pub fn Code(&self) -> u16 {
|
||||
match self.code {
|
||||
// http://dom.spec.whatwg.org/#concept-throw
|
||||
EncodingError => 0,
|
||||
_ => self.code as u16
|
||||
}
|
||||
}
|
||||
|
||||
// http://dom.spec.whatwg.org/#error-names-0
|
||||
pub fn Name(&self) -> DOMString {
|
||||
self.code.to_str()
|
||||
}
|
||||
|
||||
// http://dom.spec.whatwg.org/#error-names-0
|
||||
pub fn Message(&self) -> DOMString {
|
||||
match self.code {
|
||||
IndexSizeError => ~"The index is not in the allowed range.",
|
||||
HierarchyRequestError => ~"The operation would yield an incorrect node tree.",
|
||||
WrongDocumentError => ~"The object is in the wrong document.",
|
||||
InvalidCharacterError => ~"The string contains invalid characters.",
|
||||
NoModificationAllowedError => ~"The object can not be modified.",
|
||||
NotFoundError => ~"The object can not be found here.",
|
||||
NotSupportedError => ~"The operation is not supported.",
|
||||
InvalidStateError => ~"The object is in an invalid state.",
|
||||
SyntaxError => ~"The string did not match the expected pattern.",
|
||||
InvalidModificationError => ~"The object can not be modified in this way.",
|
||||
NamespaceError => ~"The operation is not allowed by Namespaces in XML.",
|
||||
InvalidAccessError => ~"The object does not support the operation or argument.",
|
||||
SecurityError => ~"The operation is insecure.",
|
||||
NetworkError => ~"A network error occurred.",
|
||||
AbortError => ~"The operation was aborted.",
|
||||
URLMismatchError => ~"The given URL does not match another URL.",
|
||||
QuotaExceededError => ~"The quota has been exceeded.",
|
||||
TimeoutError => ~"The operation timed out.",
|
||||
InvalidNodeTypeError => ~"The supplied node is incorrect or has an incorrect ancestor for this operation.",
|
||||
DataCloneError => ~"The object can not be cloned.",
|
||||
EncodingError => ~"The encoding operation (either encoded or decoding) failed."
|
||||
}
|
||||
}
|
||||
}
|
47
src/components/script/dom/webidls/DOMException.webidl
Normal file
47
src/components/script/dom/webidls/DOMException.webidl
Normal file
|
@ -0,0 +1,47 @@
|
|||
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* The origin of this IDL file is:
|
||||
* http://dom.spec.whatwg.org/#domexception
|
||||
*/
|
||||
|
||||
// XXXkhuey this is an 'exception', not an interface, but we don't have any
|
||||
// parser or codegen mechanisms for dealing with exceptions.
|
||||
interface DOMException {
|
||||
const unsigned short INDEX_SIZE_ERR = 1;
|
||||
const unsigned short DOMSTRING_SIZE_ERR = 2; // historical
|
||||
const unsigned short HIERARCHY_REQUEST_ERR = 3;
|
||||
const unsigned short WRONG_DOCUMENT_ERR = 4;
|
||||
const unsigned short INVALID_CHARACTER_ERR = 5;
|
||||
const unsigned short NO_DATA_ALLOWED_ERR = 6; // historical
|
||||
const unsigned short NO_MODIFICATION_ALLOWED_ERR = 7;
|
||||
const unsigned short NOT_FOUND_ERR = 8;
|
||||
const unsigned short NOT_SUPPORTED_ERR = 9;
|
||||
const unsigned short INUSE_ATTRIBUTE_ERR = 10; // historical
|
||||
const unsigned short INVALID_STATE_ERR = 11;
|
||||
const unsigned short SYNTAX_ERR = 12;
|
||||
const unsigned short INVALID_MODIFICATION_ERR = 13;
|
||||
const unsigned short NAMESPACE_ERR = 14;
|
||||
const unsigned short INVALID_ACCESS_ERR = 15;
|
||||
const unsigned short VALIDATION_ERR = 16; // historical
|
||||
const unsigned short TYPE_MISMATCH_ERR = 17; // historical; use JavaScript's TypeError instead
|
||||
const unsigned short SECURITY_ERR = 18;
|
||||
const unsigned short NETWORK_ERR = 19;
|
||||
const unsigned short ABORT_ERR = 20;
|
||||
const unsigned short URL_MISMATCH_ERR = 21;
|
||||
const unsigned short QUOTA_EXCEEDED_ERR = 22;
|
||||
const unsigned short TIMEOUT_ERR = 23;
|
||||
const unsigned short INVALID_NODE_TYPE_ERR = 24;
|
||||
const unsigned short DATA_CLONE_ERR = 25;
|
||||
|
||||
// Error code as u16
|
||||
readonly attribute unsigned short code;
|
||||
|
||||
// The name of the error code (ie, a string repr of |code|)
|
||||
readonly attribute DOMString name;
|
||||
|
||||
// A custom message set by the thrower.
|
||||
readonly attribute DOMString message;
|
||||
};
|
|
@ -55,6 +55,7 @@ pub mod dom {
|
|||
pub mod document;
|
||||
pub mod documentfragment;
|
||||
pub mod documenttype;
|
||||
pub mod domexception;
|
||||
pub mod domimplementation;
|
||||
pub mod domparser;
|
||||
pub mod element;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue