var type_ = xwalk.utils.type;
var native_ = new xwalk.utils.NativeManager(extension);
-var ExceptionMap = {
- 'UnknownError' : WebAPIException.UNKNOWN_ERR,
- 'TypeMismatchError' : WebAPIException.TYPE_MISMATCH_ERR,
- 'InvalidValuesError' : WebAPIException.INVALID_VALUES_ERR,
- 'IOError' : WebAPIException.IO_ERR,
- 'ServiceNotAvailableError' : WebAPIException.SERVICE_NOT_AVAILABLE_ERR,
- 'SecurityError' : WebAPIException.SECURITY_ERR,
- 'NetworkError' : WebAPIException.NETWORK_ERR,
- 'NotSupportedError' : WebAPIException.NOT_SUPPORTED_ERR,
- 'NotFoundError' : WebAPIException.NOT_FOUND_ERR,
- 'InvalidAccessError' : WebAPIException.INVALID_ACCESS_ERR,
- 'AbortError' : WebAPIException.ABORT_ERR,
- 'QuotaExceededError' : WebAPIException.QUOTA_EXCEEDED_ERR
-};
-
-function callNative(cmd, args) {
- var json = {'cmd': cmd, 'args': args};
- var argjson = JSON_.stringify(json);
- var resultString = extension.internal.sendSyncMessage(argjson);
- var result = JSON_.parse(resultString);
-
- if (typeof result !== 'object') {
- throw new WebAPIException(WebAPIException.UNKNOWN_ERR);
- }
-
- if (result['status'] == 'success') {
- if (result.hasOwnProperty('result')) {
- return result['result'];
- }
- return true;
- }
- else if (result['status'] == 'error') {
- var err = result['error'];
- if (err) {
- if (ExceptionMap[err.name]) {
- throw new WebAPIException(ExceptionMap[err.name], err.message);
- } else {
- throw new WebAPIException(WebAPIException.UNKNOWN_ERR, err.message);
- }
- }
- return false;
- }
-}
-
-function SetReadOnlyProperty(obj, n, v) {
- Object.defineProperty(obj, n, {value: v, writable: false});
-}
-
var FeedbackType = {
TYPE_SOUND: 'TYPE_SOUND',
- TYPE_VIBRATION: 'TYPE_VIBRATION',
- NONE: 'NONE'
+ TYPE_VIBRATION: 'TYPE_VIBRATION'
};
var FeedbackPattern = {
LIST_REORDER: 'LIST_REORDER',
LIST_SLIDER: 'LIST_SLIDER',
VOLUME_KEY: 'VOLUME_KEY'
- };
+};
function FeedbackManager() {
// constructor of FeedbackManager
{name: 'pattern', type: types_.ENUM, values: Object.keys(FeedbackPattern)},
{name: 'type', type: types_.ENUM, values: Object.keys(FeedbackType)},
]);
- return callNative('FeedbackManager_isPatternSupported', args);
+
+ var result = native_.callSync('FeedbackManager_isPatternSupported', args);
+ if (native_.isFailure(result)) {
+ throw native_.getErrorObject(result);
+ }
+ return native_.getResultObject(result);
};
FeedbackManager.prototype.play = function(pattern, type) {
]);
var nativeParam = {
- 'pattern': args.pattern,
- 'type': args.type ? args.type : 'any'
- };
+ 'pattern': args.pattern,
+ 'type': args.type ? args.type : 'any'
+ };
- callNative('FeedbackManager_play', nativeParam);
- return;
+ var result = native_.callSync('FeedbackManager_play', nativeParam);
+ if (native_.isFailure(result)) {
+ throw native_.getErrorObject(result);
+ }
};
FeedbackManager.prototype.stop = function() {
var args = validator_.validateArgs(arguments, []);
- callNative('FeedbackManager_stop', args);
- return;
+ var result = native_.callSync('FeedbackManager_stop', args);
+ if (native_.isFailure(result)) {
+ throw native_.getErrorObject(result);
+ }
};
exports = new FeedbackManager();