[Application] Enable system events listener 20/254620/4
authorPiotr Kosko/Native/Web API (PLT) /SRPOL/Engineer/Samsung Electronics <p.kosko@samsung.com>
Fri, 5 Mar 2021 09:56:59 +0000 (10:56 +0100)
committerPiotr Kosko/Native/Web API (PLT) /SRPOL/Engineer/Samsung Electronics <p.kosko@samsung.com>
Tue, 9 Mar 2021 11:37:24 +0000 (12:37 +0100)
[ACR] https://code.sec.samsung.net/jira/browse/TWDAPI-276

[Verification] Code compiles without errors.
TCT passrate for application, appcontrol, capablity, deprecated - 100%

Checked some of native events from:
https://docs.tizen.org/application/native/guides/app-management/event/

var app = tizen.application.getCurrentApplication();
watchId =
        app.addEventListener({"name": "location_enable_state"}, function(event, data)
        {
          console.log("Event" + JSON.stringify(event) + " Data: " + JSON.stringify(data));
        });

var watchId =
        app.addEventListener({"appId": app.appInfo.id, "name": "custom_user_event"}, function(event, data)
        {
          console.log("Event" + JSON.stringify(event) + " Data: " + JSON.stringify(data));
          /* Do something. */
        });

after triggering associated event - listener seem to be called properly:
> app.broadcastEvent({'name': 'custom_user_event'}, {'test': 't'})
console-via-logger.js:173 Event{"appId":"Bwk0GVY1f3.BasicUI40","name":"custom_user_event"} Data: {"test":"t"}
> // ebable location on device
console-via-logger.js:173 Event{"name":"LOCATION_ENABLE_STATE"} Data: {"value":"disabled","type":"LOCATION_ENABLE_STATE"}

Change-Id: I73ae5b2b180c441db4f2da2eb84292b04b8e188f
Id: I65c83787c7d366fef918103be882370614034354

src/application/application_api.js

index e932192..e7fea80 100755 (executable)
@@ -32,35 +32,35 @@ var ApplicationUsageMode = {
 };
 
 //  TODO: Please uncomment below lines when system events is ready
-//var SystemEvent = {
-//  BATTERY_CHARGER_STATUS: 'BATTERY_CHARGER_STATUS',
-//  BATTERY_LEVEL_STATUS: 'BATTERY_LEVEL_STATUS',
-//  USB_STATUS: 'USB_STATUS',
-//  USBHOST_STATUS: 'USBHOST_STATUS',
-//  EARJACK_STATUS: 'EARJACK_STATUS',
-//  DISPLAY_STATE: 'DISPLAY_STATE',
-//  BOOT_COMPLETED: 'BOOT_COMPLETED',
-//  SYSTEM_SHUTDOWN: 'SYSTEM_SHUTDOWN',
-//  LOW_MEMORY: 'LOW_MEMORY',
-//  WIFI_STATE: 'WIFI_STATE',
-//  BT_STATE: 'BT_STATE',
-//  BT_TRANSFERING_STATE: 'BT_TRANSFERING_STATE',
-//  MOBILE_DATA_STATE: 'MOBILE_DATA_STATE',
-//  DATA_ROAMING_STATE: 'DATA_ROAMING_STATE',
-//  LOCATION_ENABLE_STATE: 'LOCATION_ENABLE_STATE',
-//  GPS_ENABLE_STATE: 'GPS_ENABLE_STATE',
-//  NPS_ENABLE_STATE: 'NPS_ENABLE_STATE',
-//  INCOMING_MSG: 'INCOMING_MSG',
-//  TIME_CHANGED: 'TIME_CHANGED',
-//  TIME_ZONE: 'TIME_ZONE',
-//  HOUR_FORMAT: 'HOUR_FORMAT',
-//  LANGUAGE_SET: 'LANGUAGE_SET',
-//  REGION_FORMAT: 'REGION_FORMAT',
-//  SILENT_MODE: 'SILENT_MODE',
-//  VIBRATION_STATE: 'VIBRATION_STATE',
-//  SCREEN_AUTOROTATE_STATE: 'SCREEN_AUTOROTATE_STATE',
-//  FONT_SET: 'FONT_SET'
-//};
+var SystemEvent = {
+    BATTERY_CHARGER_STATUS: 'BATTERY_CHARGER_STATUS',
+    BATTERY_LEVEL_STATUS: 'BATTERY_LEVEL_STATUS',
+    USB_STATUS: 'USB_STATUS',
+    USBHOST_STATUS: 'USBHOST_STATUS',
+    EARJACK_STATUS: 'EARJACK_STATUS',
+    DISPLAY_STATE: 'DISPLAY_STATE',
+    BOOT_COMPLETED: 'BOOT_COMPLETED',
+    SYSTEM_SHUTDOWN: 'SYSTEM_SHUTDOWN',
+    LOW_MEMORY: 'LOW_MEMORY',
+    WIFI_STATE: 'WIFI_STATE',
+    BT_STATE: 'BT_STATE',
+    BT_TRANSFERING_STATE: 'BT_TRANSFERING_STATE',
+    MOBILE_DATA_STATE: 'MOBILE_DATA_STATE',
+    DATA_ROAMING_STATE: 'DATA_ROAMING_STATE',
+    LOCATION_ENABLE_STATE: 'LOCATION_ENABLE_STATE',
+    GPS_ENABLE_STATE: 'GPS_ENABLE_STATE',
+    NPS_ENABLE_STATE: 'NPS_ENABLE_STATE',
+    INCOMING_MSG: 'INCOMING_MSG',
+    TIME_CHANGED: 'TIME_CHANGED',
+    TIME_ZONE: 'TIME_ZONE',
+    HOUR_FORMAT: 'HOUR_FORMAT',
+    LANGUAGE_SET: 'LANGUAGE_SET',
+    REGION_FORMAT: 'REGION_FORMAT',
+    SILENT_MODE: 'SILENT_MODE',
+    VIBRATION_STATE: 'VIBRATION_STATE',
+    SCREEN_AUTOROTATE_STATE: 'SCREEN_AUTOROTATE_STATE',
+    FONT_SET: 'FONT_SET'
+};
 
 // helper functions ////////////////////////////////////////////////////
 function _createApplicationControlData(object) {
@@ -963,16 +963,15 @@ Application.prototype.addEventListener = function(event, callback) {
 
     var data = {};
 
-    //  TODO: Please uncomment below lines when system events is ready
-    //  if (Object.keys(SystemEvent).indexOf(args.event.name) > -1) {
-    //    data.name = 'tizen.system.event.' + args.event.name.toLowerCase();
-    //  } else {
-    _checkEventName(args.event.name);
-    _checkAppId(args.event.appId);
+    if (Object.keys(SystemEvent).indexOf(args.event.name.toUpperCase()) > -1) {
+        data.name = 'tizen.system.event.' + args.event.name.toLowerCase();
+    } else {
+        _checkEventName(args.event.name);
+        _checkAppId(args.event.appId);
 
-    // the 'event.' prefix is required by platform
-    data.name = 'event.' + args.event.appId + '.' + args.event.name;
-    //  }
+        // the 'event.' prefix is required by platform
+        data.name = 'event.' + args.event.appId + '.' + args.event.name;
+    }
 
     var watchId = nextWatchId();
     data.listenerId = data.name;
@@ -985,20 +984,21 @@ Application.prototype.addEventListener = function(event, callback) {
             var eventName = msg.name;
             var parsedName = eventName.split('.');
             var eventInfo = {};
-            if (parsedName.length < 3) {
+            if (parsedName.length < 4) {
                 privUtils_.log('Invalid event name returned' + eventName);
             }
             for (var id in event_listeners_[eventName]) {
                 if (event_listeners_[eventName].hasOwnProperty(id)) {
                     if (msg.data) {
-                        eventInfo.appId = parsedName[1];
-                        eventInfo.name = parsedName[2];
+                        // custom event value format: "event.Bwk0GVY1f3.BasicUI40.custom_user_event"
+                        eventInfo.appId = parsedName[1] + '.' + parsedName[2]; // e.g. "Bwk0GVY1f3.BasicUI40"
+                        eventInfo.name = parsedName[3]; // e.g. "custom_user_event"
                         event_listeners_[eventName][id](eventInfo, msg.data);
                     } else {
+                        // system event value format: "tizen.system.event.location_enable_state"
                         delete msg.name;
-                        msg.type = parsedName[2];
-                        //TODO: type should come from native site
-                        eventInfo.name = parsedName[2].toUpperCase();
+                        msg.type = parsedName[3].toUpperCase(); // e.g. "LOCATION_ENABLE_STATE"
+                        eventInfo.name = parsedName[3].toUpperCase();
                         event_listeners_[eventName][id](eventInfo, msg);
                     }
                 }