Upstream version 6.34.113.0
[platform/framework/web/crosswalk.git] / src / xwalk / application / extension / application_widget_common_api.js
1 var errors = {
2   '1': { type: 'INDEX_SIZE_ERR', name: 'IndexSizeError', message: '' },
3   '2': { type: 'DOMSTRING_SIZE_ERR', name: 'DOMStringSizeError', message: '' },
4   '3': { type: 'HIERARCHY_REQUEST_ERR', name: 'HierarchyRequestError', message: '' },
5   '4': { type: 'WRONG_DOCUMENT_ERR', name: 'WrongDocumentError', message: '' },
6   '5': { type: 'INVALID_CHARACTER_ERR', name: 'InvalidCharacterError', message: '' },
7   '6': { type: 'NO_DATA_ALLOWED_ERR', name: 'NoDataAllowedError', message: '' },
8   '7': { type: 'NO_MODIFICATION_ALLOWED_ERR', name: 'NoModificationAllowedError', message: '' },
9   '8': { type: 'NOT_FOUND_ERR', name: 'NotFoundError', message: '' },
10   '9': { type: 'NOT_SUPPORTED_ERR', name: 'Not_supportedError', message: '' },
11   '10': { type: 'INUSE_ATTRIBUTE_ERR', name: 'InuseAttributeError', message: '' },
12   '11': { type: 'INVALID_STATE_ERR', name: 'InvalidStateError', message: '' },
13   '12': { type: 'SYNTAX_ERR', name: 'SyntaxError', message: '' },
14   '13': { type: 'INVALID_MODIFICATION_ERR', name: 'InvalidModificationError', message: '' },
15   '14': { type: 'NAMESPACE_ERR', name: 'NamespaceError', message: '' },
16   '15': { type: 'INVALID_ACCESS_ERR', name: 'InvalidAccessError', message: '' },
17   '16': { type: 'VALIDATION_ERR', name: 'ValidationError', message: '' },
18   '17': { type: 'TYPE_MISMATCH_ERR', name: 'TypeMismatchError', message: '' },
19   '18': { type: 'SECURITY_ERR', name: 'SecurityError', message: '' },
20   '19': { type: 'NETWORK_ERR', name: 'NetworkError', message: '' },
21   '20': { type: 'ABORT_ERR', name: 'AbortError', message: '' },
22   '21': { type: 'URL_MISMATCH_ERR', name: 'UrlMismatchError', message: '' },
23   '22': { type: 'QUOTA_EXCEEDED_ERR', name: 'QuotaExceededError', message: '' },
24   '23': { type: 'TIMEOUT_ERR', name: 'TimeoutError', message: '' },
25   '24': { type: 'INVALID_NODE_TYPE_ERR', name: 'InvalidNodeTypeError', message: '' },
26   '25': { type: 'DATA_CLONE_ERR', name: 'DataCloneError', message: '' },
27 };
28
29 var CustomDOMException = function(code, message) {
30   var _code, _message, _name;
31
32   if (typeof code !== 'number') {
33     throw TypeError('Wrong argument type for Exception.');
34   } else if ((code in errors) === false) {
35     throw TypeError('Unknown exception code: ' + code);
36   } else {
37     _code = code;
38     _name = errors[_code].name;
39     if (typeof message === 'string') {
40       _message = message;
41     } else {
42       _message = errors[_code].message;
43     }
44   }
45
46   var props = {};
47   var newException;
48
49   try {
50     document.removeChild({})
51   } catch (e) {
52     newException = Object.create(e)
53   }
54
55   var proto = newException.__proto__;
56
57   props = Object.getOwnPropertyDescriptor(proto, "name");
58   props.value = _name;
59   Object.defineProperty(newException, "name", props);
60
61   props = Object.getOwnPropertyDescriptor(proto, "code");
62   props.value = _code;
63   Object.defineProperty(newException, "code", props);
64
65   props = Object.getOwnPropertyDescriptor(proto, "message");
66   props.value = _message;
67   Object.defineProperty(newException, "message", props);
68
69   props.value = function() {
70     return _name + ": " + _message;
71   }
72   Object.defineProperty(newException, "toString", props);
73
74   return newException;
75 }
76
77 for (var value in errors) {
78   Object.defineProperty(CustomDOMException, errors[value].type,
79       { value: parseInt(value) });
80 }
81
82 exports.CustomDOMException = CustomDOMException;