[MessagePort] Fixed issue with removeMessagePortListener without any added earlier 47/194647/1
authorLukasz Bardeli <l.bardeli@samsung.com>
Wed, 5 Dec 2018 09:18:08 +0000 (10:18 +0100)
committerPiotr Kosko/Native/Web API (SWP) /SRPOL/Professional/삼성전자 <p.kosko@samsung.com>
Thu, 6 Dec 2018 13:19:02 +0000 (14:19 +0100)
If any listener was added before remove then error was thrown
'Cannot read property length of undefined'

[Verification] Code compiles without error. TCT passrate 100%

Change-Id: I96000345ae483a9fa2c0b50a6be0ece427ce8e1b
Signed-off-by: Lukasz Bardeli <l.bardeli@samsung.com>
src/messageport/messageport_api.js

index ab612f13edfd06a1111987be58b26d279e4dcb47..4883d79dafd4e54ff07ee6fb12c166595b3626f8 100755 (executable)
@@ -251,22 +251,22 @@ LocalMessagePort.prototype.removeMessagePortListener = function(watchId) {
     {'name' : 'watchId', 'type': types_.LONG, 'nullable': false, 'optional': false }
   ]);
 
-  var to_delete;
+  var toDelete;
   var listeners = callbacks[ports[this.messagePortName]];
 
-  for (var i = 0, j = listeners.length; i < j; i++) {
-    var listener_id = listeners[i][1];
-    if (watchId == listener_id) {
-      to_delete = i;
+  for (var key in listeners) {
+    var listenerId = listeners[key][1];
+    if (watchId == listenerId) {
+      toDelete = key;
       break;
     }
   }
 
-  if (typeof to_delete === 'undefined')
+  if (typeof toDelete === 'undefined')
     throw new WebAPIException(WebAPIException.NOT_FOUND_ERR,
         'The port of the target application is not found.');
 
-  listeners.splice(to_delete, 1);
+  listeners.splice(toDelete, 1);
 
 };