+class AccessControlManager {
+ constructor(permissions, sandbox) {
+ this.permissions = permissions;
+ this.sandbox = sandbox;
+ this.systeminfo = {};
+ this.systeminfo.getPropertyValue = sandbox.tizen.systeminfo.getPropertyValue;
+ }
+ initialize() {
+ const permissions = this.permissions;
+ let tizen = this.sandbox.tizen;
+ if (!permissions.includes("http://tizen.org/privilege/alarm")) {
+ tizen.alarm.add =
+ tizen.alarm.remove =
+ tizen.alarm.removeAll =
+ tizen.alarm.get =
+ tizen.alarm.getAll =
+ tizen.alarm.getAlarmNotification =
+ tizen.alarm.addAlarmNotification = function() {
+ console.log('The alarm permission is missing.');
+ }
+ }
+ if (!permissions.includes("http://tizen.org/privilege/apphistory.read")) {
+ tizen.application.getAppsUsageInfo =
+ tizen.application.getBatteryUsageInfo = function() {
+ console.log('The application.read permission is missing.');
+ }
+ }
+ if (!permissions.includes("http://tizen.org/privilege/application.launch")) {
+ tizen.application.launch =
+ tizen.application.launchAppControl = function() {
+ console.log('The application.launch permission is missing.');
+ }
+ }
+ if (!permissions.includes("http://tizen.org/privilege/application.info")) {
+ tizen.application.getAppMetaData = function() {
+ console.log('The application.info permission is missing.');
+ }
+ }
+ if (!permissions.includes("http://tizen.org/privilege/appmanager.certificate")) {
+ tizen.application.getAppCerts = function() {
+ console.log('The application.certificate permission is missing.');
+ }
+ }
+ if (!permissions.includes("http://tizen.org/privilege/appmanager.kill")) {
+ tizen.application.kill = function() {
+ console.log('The application.kill permission is missing.');
+ }
+ }
+ if (!permissions.includes("http://tizen.org/privilege/appmanager.launch") ||
+ !permissions.includes("http://tizen.org/privilege/datasharing")) {
+ tizen.datacontrol.addChangeListener =
+ tizen.datacontrol.removeChangeListener = function() {
+ console.log('The appmanager.launch or datasharing permission is missing.');
+ }
+ }
+ if (!permissions.includes("http://tizen.org/privilege/datacontrol.consumer")) {
+ tizen.datacontrol.getValue =
+ tizen.datacontrol.updateValue =
+ tizen.datacontrol.insert =
+ tizen.datacontrol.update =
+ tizen.datacontrol.remove =
+ tizen.datacontrol.select =
+ tizen.datacontrol.addValue =
+ tizen.datacontrol.removeValue =
+ tizen.datacontrol.getDataControlConsumer = function() {
+ console.log('The datacontrol.consumer permission is missing.');
+ }
+ }
+ if (!permissions.includes("http://tizen.org/privilege/filesystem.read")) {
+ tizen.filesystem.listDirectory =
+ tizen.filesystem.isFile =
+ tizen.filesystem.isDirectory =
+ tizen.filesystem.pathExists =
+ tizen.filesystem.copyFile =
+ tizen.filesystem.copyDirectory =
+ tizen.filesystem.moveFile =
+ tizen.filesystem.moveDirectory =
+ tizen.filesystem.resolve = function() {
+ console.log('The filesystem.read permission is missing.');
+ }
+ }
+ if (!permissions.includes("http://tizen.org/privilege/filesystem.write")) {
+ tizen.filesystem.createDirectory =
+ tizen.filesystem.deleteFile =
+ tizen.filesystem.deleteDirectory =
+ tizen.filesystem.copyFile =
+ tizen.filesystem.copyDirectory =
+ tizen.filesystem.moveFile =
+ tizen.filesystem.moveDirectory =
+ tizen.filesystem.rename = function() {
+ console.log('The filesystem.write permission is missing.');
+ }
+ }
+ if (!permissions.includes("http://tizen.org/privilege/notification")) {
+ tizen.alarm.addAlarmNotification = function() {
+ console.log('The notification permission is missing.');
+ }
+ }
+ if (!permissions.includes("http://tizen.org/privilege/package.info")) {
+ tizen.package.setPackageInfoEventListener =
+ tizen.package.unsetPackageInfoEventListener =
+ tizen.package.getPackageInfo =
+ tizen.package.getPackagesInfo = function() {
+ console.log('The package.info permission is missing.');
+ }
+ }
+ if (!permissions.includes("http://tizen.org/privilege/packagemanager.install")) {
+ tizen.package.install =
+ tizen.package.uninstall = function() {
+ console.log('The packagemanager.install permission is missing.');
+ }
+ }
+ // systeminfo : Runtime privilege validation is required, based on parameters
+ tizen.systeminfo.getPropertyValue = function(type, onSuccessCallback, onErrorCallback) {
+ if (type === "CELLULAR_NETWORK" && !permissions.includes("http://tizen.org/privilege/telephony")) {
+ console.log('The telephony permission is missing.');
+ return;
+ }
+ this.systeminfo.getPropertyValue.apply(tizen.systeminfo, arguments);
+ }.bind(this);
+ }
+}
+module.exports = AccessControlManager;