+const Module = require('module');
function checkSystemInfoApiPrivilege(func: any, permissions: string[]) {
let override_func = func;
checkSystemInfoApiPrivilege(tizen.systeminfo.addPropertyValueArrayChangeListener, permissions);
}
+
+export function refineResolveFilename(permissions: string[]) {
+ const originalResolveFilename = Module._resolveFilename;
+ Module._resolveFilename = function(...args: any[]) {
+ let path = '';
+ if (args[0] === 'fs') {
+ path = originalResolveFilename('fs_tizen', args[1], args[2]);
+ } else {
+ path = originalResolveFilename(...args);
+ }
+ if (path.startsWith('/') && !global.webapis.isValidPath(path))
+ throw new Error(`Invalid access to ${path}`);
+ return path;
+ }
+ Object.defineProperty(Module, '_resolveFilename', { writable: false });
+}
import { wrt } from '../browser/wrt';
-const Module = require('module');
export class DeviceAPIRouter {
currentApplication: any;
];
this.initWebapis();
+ this.permissions = wrt.getPrivileges(this.id);
this.refineResolveFilename();
if (isGlobal) {
- this.permissions = wrt.getPrivileges(this.id);
this.refineApplicationApis();
this.refinePackageApis();
this.refineFilesystemApis()
this.initProductWebapis();
}
- refineResolveFilename() {
- const originalResolveFilename = Module._resolveFilename;
- Module._resolveFilename = function(...args: any[]) {
- let path = '';
- if (args[0] === 'fs') {
- path = originalResolveFilename('fs_tizen', args[1], args[2]);
- } else {
- path = originalResolveFilename(...args);
- }
- if (path.startsWith('/') && !global.webapis.isValidPath(path))
- throw new Error(`Invalid access to ${path}`);
- return path;
- }
- Object.defineProperty(Module, '_resolveFilename', { writable: false });
- }
-
initEdgeWebapis() {
if (wrt['edge'] && !global.webapis.edge) {
let edge = wrt.edge as NativeWRTjs.EdgeExtension;
AccessControlManager.initialize(this.permissions);
}
+ refineResolveFilename() {
+ const AccessControlManager = require('./access_control_manager');
+ AccessControlManager.refineResolveFilename(this.permissions);
+ }
+
getServiceId() {
return global.webapis.getServiceId();
}