1 import { wrt } from '../browser/wrt';
3 export class DeviceAPIRouter {
4 currentApplication: any;
5 funcCurrentApplication: any;
6 funcRequestedAppcontrol: any;
11 funcGetPackageInfo: any;
18 constructor(id: string, isGlobal: boolean) {
20 let ids = id.split(':');
21 this.serviceId = ids[0];
22 this.callerAppId = ids[1] ?? '';
23 this.packageId = this.serviceId.split('.')[0];
27 this.refineApplicationApis();
28 this.refinePackageApis();
29 this.refineFilesystemApis()
30 this.initAccessControlManager();
35 global.webapis = global.webapis ?? {};
37 global.webapis.getCallerAppId = () => {
38 return this.callerAppId;
40 global.webapis.getServiceId = () => {
41 return this.serviceId;
43 let app_info = global.tizen.application.getAppInfo(this.serviceId);
45 this.packageId = app_info.packageId;
47 global.webapis.getPackageId = () => {
48 return this.packageId;
52 initAccessControlManager() {
53 const permissions = wrt.getPrivileges(this.id);
54 console.log(`permissions : ${permissions}`);
55 const AccessControlManager = require('./access_control_manager');
56 AccessControlManager.initialize(permissions);
60 return global.webapis.getServiceId();
64 return global.webapis.getPackageId();
67 refineApplicationApis() {
68 // tizen.application.getCurrentApplication()
69 this.funcCurrentApplication = global.tizen.application.getCurrentApplication;
70 global.tizen.application.getCurrentApplication = () => {
71 console.log(`Routing - getCurrentApplication() : ${this.getServiceId()}`);
72 if (this.currentApplication)
73 return this.currentApplication;
74 this.currentApplication = this.funcCurrentApplication();
75 // tizen.application.getCurrentApplication().getRequestedAppControl()
76 this.funcRequestedAppcontrol = this.currentApplication.getRequestedAppControl;
77 this.currentApplication.getRequestedAppControl = () => {
78 console.log(`Routing - getRequestedAppControl() : ${this.getServiceId()}`);
80 wrt.tv.setCurrentApplication(this.getServiceId());
81 return this.funcRequestedAppcontrol();
83 return this.currentApplication;
85 // tizen.application.getAppInfo()
86 this.funcGetAppInfo = global.tizen.application.getAppInfo;
87 global.tizen.application.getAppInfo = (app_id?: string) => {
88 console.log(`Routing - getAppInfo()`);
90 app_id = this.getServiceId();
91 return this.funcGetAppInfo(app_id);
93 // tizen.application.getAppCerts()
94 this.funcGetAppcerts = global.tizen.application.getAppCerts;
95 global.tizen.application.getAppCerts = (app_id?: string) => {
96 console.log(`Routing - getAppCerts()`);
98 app_id = this.getServiceId();
99 return this.funcGetAppcerts(app_id);
101 // tizen.application.getAppSharedURI()
102 this.funcGetSharedUri = global.tizen.application.getAppSharedURI;
103 global.tizen.application.getAppSharedURI = (app_id?: string) => {
104 console.log(`Routing - getAppSharedURI()`);
106 app_id = this.getServiceId();
107 return this.funcGetSharedUri(app_id);
109 // tizen.application.getAppMetaData()
110 this.funcGetMetadata = global.tizen.application.getAppMetaData;
111 global.tizen.application.getAppMetaData = (app_id?: string) => {
112 console.log(`Routing - getAppMetaData()`);
114 app_id = this.getServiceId();
115 return this.funcGetMetadata(app_id);
119 refinePackageApis() {
120 // tizen.package.getPackageInfo()
121 this.funcGetPackageInfo = global.tizen.package.getPackageInfo;
122 global.tizen.package.getPackageInfo = (...args: any[]) => {
123 let package_id = args[0];
124 if (!args.length || args[0] === null)
125 package_id = this.getPackageId();
126 console.log(`Routing - getPackageInfo() : ${package_id}`);
127 return this.funcGetPackageInfo(package_id);
131 injectVirtualRootResolver(func: Function) {
132 return (...args: any[]) => {
134 args[0] = wrt.resolveVirtualRoot(this.getServiceId(), args[0]);
135 console.log(args[0]);
136 return func.apply(global.tizen.filesystem, args);
140 refineFilesystemApis() {
141 global.tizen.filesystem.resolve = this.injectVirtualRootResolver(global.tizen.filesystem.resolve);
142 global.tizen.filesystem.listDirectory = this.injectVirtualRootResolver(global.tizen.filesystem.listDirectory);
143 global.tizen.filesystem.createDirectory = this.injectVirtualRootResolver(global.tizen.filesystem.createDirectory);
144 global.tizen.filesystem.createDirectory = this.injectVirtualRootResolver(global.tizen.filesystem.createDirectory);
145 global.tizen.filesystem.deleteDirectory = this.injectVirtualRootResolver(global.tizen.filesystem.deleteDirectory);
146 global.tizen.filesystem.openFile = this.injectVirtualRootResolver(global.tizen.filesystem.openFile);
147 global.tizen.filesystem.deleteFile = this.injectVirtualRootResolver(global.tizen.filesystem.deleteFile);
148 global.tizen.filesystem.moveFile = this.injectVirtualRootResolver(global.tizen.filesystem.moveFile);
149 global.tizen.filesystem.copyFile = this.injectVirtualRootResolver(global.tizen.filesystem.copyFile);
150 global.tizen.filesystem.isFile = this.injectVirtualRootResolver(global.tizen.filesystem.isFile);
151 global.tizen.filesystem.toURI = this.injectVirtualRootResolver(global.tizen.filesystem.toURI);
152 global.tizen.filesystem.isDirectory = this.injectVirtualRootResolver(global.tizen.filesystem.isDirectory);
153 global.tizen.filesystem.pathExists = this.injectVirtualRootResolver(global.tizen.filesystem.pathExists);