[Service] Routing API - tizen.application
[platform/framework/web/wrtjs.git] / wrt_app / service / device_api_router.ts
index cbdb948..934f57d 100644 (file)
@@ -1,17 +1,71 @@
 import { wrt } from '../browser/wrt';
 
 export class DeviceAPIRouter {
-  service_id?: string;
-  package_id?: string;
-  current_application?: any;
+  currentApplication: any;
+  funcCurrentApplication: any;
+  funcRequestedAppcontrol: any;
+  funcGetAppinfo: any;
+  funcGetAppcerts: any;
+  funcGetSharedUri: any;
+  funcGetMetadata: any;
 
-  constructor(id: string, sandbox: any) {
-    let tizen = global.tizen;
-    this.service_id = id.split(':')[0];
-    let app_info = tizen.application.getAppInfo(this.service_id);
-    if (app_info)
-      this.package_id = app_info.packageId;
-    console.log(`DeviceAPIRouter created for ${this.service_id} ${this.package_id}`);
-    // TODO
+  constructor() {
+    this.RefineApplicationApis();
+  }
+
+  GetServiceId() {
+    return global.webapis.getServiceId();
+  }
+
+  RefineApplicationApis() {
+    // tizen.application.getCurrentApplication()
+    this.funcCurrentApplication = global.tizen.application.getCurrentApplication;
+    global.tizen.application.getCurrentApplication = () => {
+      console.log(`getCurrentApplication() : ${this.GetServiceId()}`);
+      if (this.currentApplication)
+        return this.currentApplication;
+      this.currentApplication = this.funcCurrentApplication();
+      // tizen.application.getCurrentApplication().getRequestedAppControl()
+      this.funcRequestedAppcontrol = this.currentApplication.getRequestedAppControl;
+      this.currentApplication.getRequestedAppControl = () => {
+        console.log(`getRequestedAppControl() : ${this.GetServiceId()}`);
+        if (wrt.tv)
+          wrt.tv.setCurrentApplication(this.GetServiceId());
+        return this.funcRequestedAppcontrol();
+      }
+      return this.currentApplication;
+    }
+    // tizen.application.getAppInfo()
+    this.funcGetAppinfo = global.tizen.application.getAppInfo;
+    global.tizen.application.getAppInfo = (app_id?: string) => {
+      console.log(`getAppInfo()`);
+      if (!app_id)
+        app_id = this.GetServiceId();
+      return this.funcGetAppinfo(app_id);
+    }
+    // tizen.application.getAppCerts()
+    this.funcGetAppcerts = global.tizen.application.getAppCerts;
+    global.tizen.application.getAppCerts = (app_id?: string) => {
+      console.log(`getAppCerts()`);
+      if (!app_id)
+        app_id = this.GetServiceId();
+      return this.funcGetAppcerts(app_id);
+    }
+    // tizen.application.getAppSharedURI()
+    this.funcGetSharedUri = global.tizen.application.getAppSharedURI;
+    global.tizen.application.getAppSharedURI = (app_id?: string) => {
+      console.log(`getAppSharedURI()`);
+      if (!app_id)
+        app_id = this.GetServiceId();
+      return this.funcGetSharedUri(app_id);
+    }
+    // tizen.application.getAppMetaData()
+    this.funcGetMetadata = global.tizen.application.getAppMetaData;
+    global.tizen.application.getAppMetaData = (app_id?: string) => {
+      console.log(`getAppMetaData()`);
+      if (!app_id)
+        app_id = this.GetServiceId();
+      return this.funcGetMetadata(app_id);
+    }
   }
 }
\ No newline at end of file