[Bugs]
* There was a problem with missing unregistration of
listeners for local ports, it was added.
* There was invalid calling of listeners (only latest listener was called),
now each registered listener is called properly.
[Verification] Messageport TCT passrate 100%.
Below scenario calls 3 different callbacks:
abc = tizen.messageport.requestLocalMessagePort("abc");
abc.addMessagePortListener((data, name) => {console.log(abc.messagePortName + " -> \"" + data + "\" : \"" + name + "\"")} );
abc.addMessagePortListener((data, name) => {console.log("2" + abc.messagePortName + " -> \"" + data + "\" : \"" + name + "\"")} );
abc.addMessagePortListener((data, name) => {console.log("3" + abc.messagePortName + " -> \"" + data + "\" : \"" + name + "\"")} );
abc_remote = tizen.messageport.requestRemoteMessagePort(tizen.application.getCurrentApplication().appInfo.id, "abc");
abc_remote.sendMessage([{key: "key1", value: "val1"}]);
Change-Id: If3a4b362de76599904c83737137c0d0cd4d023c7
if (!msg.hasOwnProperty('remotePort')) rmp = null;
else rmp = new RemoteMessagePort(msg.remotePort, msg.remoteAppId, msg.trusted);
for (var i = 0; i < listeners.length; i++) {
if (!msg.hasOwnProperty('remotePort')) rmp = null;
else rmp = new RemoteMessagePort(msg.remotePort, msg.remoteAppId, msg.trusted);
for (var i = 0; i < listeners.length; i++) {
- var func = listeners[i][0];
- setTimeout(function() {
- func(msg.message, rmp);
- }, 0);
+ setTimeout(
+ function(f) {
+ f(msg.message, rmp);
+ }.bind(null, listeners[i][0]),
+ 0
+ );
MessageportInstance::~MessageportInstance() {
ScopeLogger();
MessageportInstance::~MessageportInstance() {
ScopeLogger();
+ for (int port : local_ports) {
+ int ret = message_port_unregister_local_port(port);
+ if (MESSAGE_PORT_ERROR_NONE != ret) {
+ LoggerW("Failed to unregister local port listener during instance destructor.");
+ }
+ }
+ for (int port : local_trusted_ports) {
+ int ret = message_port_unregister_trusted_local_port(port);
+ if (MESSAGE_PORT_ERROR_NONE != ret) {
+ LoggerW("Failed to unregister local trusted port listener during instance destructor");
+ }
+ }
}
enum MessageportCallbacks {
}
enum MessageportCallbacks {
+ local_ports.push_back(portId);
ReportSuccess(picojson::value(static_cast<double>(portId)), out);
}
}
ReportSuccess(picojson::value(static_cast<double>(portId)), out);
}
}
+ local_trusted_ports.push_back(portId);
ReportSuccess(picojson::value(static_cast<double>(portId)), out);
}
}
ReportSuccess(picojson::value(static_cast<double>(portId)), out);
}
}
void MessagePortManagerRequesttrustedremotemessageport(const picojson::value& args,
picojson::object& out);
void RemoteMessagePortSendmessage(const picojson::value& args, picojson::object& out);
void MessagePortManagerRequesttrustedremotemessageport(const picojson::value& args,
picojson::object& out);
void RemoteMessagePortSendmessage(const picojson::value& args, picojson::object& out);
+ std::vector<int> local_ports;
+ std::vector<int> local_trusted_ports;
};
} // namespace messageport
};
} // namespace messageport