From: Piotr Kosko/Native/Web API (PLT) /SRPOL/Engineer/Samsung Electronics Date: Fri, 5 Mar 2021 09:56:59 +0000 (+0100) Subject: [Application] Enable system events listener X-Git-Tag: submit/tizen/20210628.105256~2^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=63db80a9e966c8c08af26e3ddbd71666f233ae2f;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Application] Enable system events listener [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 --- diff --git a/src/application/application_api.js b/src/application/application_api.js index e9321922..e7fea80b 100755 --- a/src/application/application_api.js +++ b/src/application/application_api.js @@ -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); } }