Merge branch 'tizen_4.0' into tizen_5.0
[platform/core/api/webapi-plugins.git] / src / ppm / ppm_api.js
1 /*
2  * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *    Licensed under the Apache License, Version 2.0 (the "License");
5  *    you may not use this file except in compliance with the License.
6  *    You may obtain a copy of the License at
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *    Unless required by applicable law or agreed to in writing, software
11  *    distributed under the License is distributed on an "AS IS" BASIS,
12  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *    See the License for the specific language governing permissions and
14  *    limitations under the License.
15  */
16
17 var validator_ = xwalk.utils.validator;
18 var type_ = xwalk.utils.type;
19 var types_ = validator_.Types;
20 var native_ = new xwalk.utils.NativeManager(extension);
21
22 function PPMManager() {}
23
24 function RequestStatus(privilege, result_) {
25     Object.defineProperties(this, {
26         privilege: { value: privilege, writable: false },
27         result: { value: result_, writable: false }
28     });
29 }
30
31 PPMManager.prototype.checkPermission = function() {
32     var args = validator_.validateArgs(arguments, [
33         { name: 'privilege', type: types_.STRING }
34     ]);
35
36     var callArgs = {
37         privilege: args.privilege
38     };
39
40     var result = native_.callSync('PPMManager_checkPermission', callArgs);
41
42     if (native_.isFailure(result)) {
43         throw native_.getErrorObject(result);
44     }
45
46     return native_.getResultObject(result);
47 };
48
49 PPMManager.prototype.checkPermissions = function() {
50     var args = validator_.validateArgs(arguments, [
51         { name: 'privileges', type: types_.ARRAY, values: types_.STRING }
52     ]);
53
54     var callArgs = {
55         privileges: args.privileges
56     };
57
58     var result = native_.callSync('PPMManager_checkPermissions', callArgs);
59
60     var data = [];
61
62     if (native_.isFailure(result)) {
63         throw native_.getErrorObject(result);
64     } else {
65         var obj = native_.getResultObject(result);
66
67         obj.forEach(function(o) {
68             data.push({ privilege: o.privilege, type: o.type });
69         });
70     }
71
72     return data;
73 };
74
75 PPMManager.prototype.requestPermission = function() {
76     var args = validator_.validateArgs(arguments, [
77         { name: 'privilege', type: types_.STRING },
78         { name: 'successCallback', type: types_.FUNCTION },
79         { name: 'errorCallback', type: types_.FUNCTION, optional: true, nullable: true }
80     ]);
81
82     var callback = function(result) {
83         if (native_.isFailure(result)) {
84             native_.callIfPossible(args.errorCallback, native_.getErrorObject(result));
85         } else {
86             args.successCallback(result.result, result.privilege);
87         }
88     };
89
90     var callArgs = {
91         privilege: args.privilege
92     };
93
94     var result = native_.call('PPMManager_requestPermission', callArgs, callback);
95
96     if (native_.isFailure(result)) {
97         throw native_.getErrorObject(result);
98     }
99 };
100
101 PPMManager.prototype.requestPermissions = function() {
102     var args = validator_.validateArgs(arguments, [
103         { name: 'privileges', type: types_.ARRAY, values: types_.STRING },
104         { name: 'successCallback', type: types_.FUNCTION },
105         { name: 'errorCallback', type: types_.FUNCTION, optional: true, nullable: true }
106     ]);
107
108     var callback = function(result) {
109         if (native_.isFailure(result)) {
110             native_.callIfPossible(args.errorCallback, native_.getErrorObject(result));
111         } else {
112             var data = [];
113             var obj = native_.getResultObject(result);
114
115             obj.forEach(function(o) {
116                 data.push(new RequestStatus(o.privilege, o.result));
117             });
118             args.successCallback(data);
119         }
120     };
121
122     var callArgs = {
123         privileges: args.privileges
124     };
125
126     var result = native_.call('PPMManager_requestPermissions', callArgs, callback);
127
128     if (native_.isFailure(result)) {
129         throw native_.getErrorObject(result);
130     }
131 };
132
133 // Exports
134 exports = new PPMManager();