From: Piotr Kosko/Tizen API (PLT) /SRPOL/Engineer/Samsung Electronics
Date: Wed, 16 Mar 2022 13:12:30 +0000 (+0100)
Subject: [Messageport] Optimization of ports creation
X-Git-Tag: submit/tizen/20220325.070959~1
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6805e6b89d4719434dbda20481eb7f6a7bedb226;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git
[Messageport] Optimization of ports creation
[Verification] Code compiles without errors.
Checked in chrome console, requesting same port name reuses previously
constructed object.
TCT passrate is 100%.
Change-Id: Icd8c398dbbba2e7df0c767a8af0d339e06c1bba1
---
diff --git a/src/messageport/messageport_api.js b/src/messageport/messageport_api.js
index 09391fc9..0fe58264 100755
--- a/src/messageport/messageport_api.js
+++ b/src/messageport/messageport_api.js
@@ -62,24 +62,26 @@ MessagePortManager.prototype.requestLocalMessagePort = function(localMessagePort
);
}
- var localPortId; // TODO remove
- var nativeParam = {
- localMessagePortName: args.localMessagePortName
- };
-
- var result = native_.callSync(
- 'MessagePortManagerRequestLocalMessagePort',
- nativeParam
- );
+ // call C++ layer only if port does not already exist
+ if (!ports[args.localMessagePortName]) {
+ var nativeParam = {
+ localMessagePortName: args.localMessagePortName
+ };
+
+ var result = native_.callSync(
+ 'MessagePortManagerRequestLocalMessagePort',
+ nativeParam
+ );
- if (native_.isSuccess(result)) {
- var returnObject = new LocalMessagePort(args.localMessagePortName, false);
- ports[nativeParam.localMessagePortName] = native_.getResultObject(result);
- } else {
- throw native_.getErrorObject(result);
+ if (native_.isSuccess(result)) {
+ var id = native_.getResultObject(result);
+ ports[nativeParam.localMessagePortName] = new LocalMessagePort(args.localMessagePortName, false, id);
+ } else {
+ throw native_.getErrorObject(result);
+ }
}
- return returnObject;
+ return args.localMessagePortName;
};
MessagePortManager.prototype.requestTrustedLocalMessagePort = function(
@@ -96,23 +98,26 @@ MessagePortManager.prototype.requestTrustedLocalMessagePort = function(
);
}
- var nativeParam = {
- localMessagePortName: args.localMessagePortName
- };
+ // call C++ layer only if port does not already exist
+ if (!ports[args.localMessagePortName]) {
+ var nativeParam = {
+ localMessagePortName: args.localMessagePortName
+ };
- var result = native_.callSync(
- 'MessagePortManagerRequestTrustedLocalMessagePort',
- nativeParam
- );
+ var result = native_.callSync(
+ 'MessagePortManagerRequestTrustedLocalMessagePort',
+ nativeParam
+ );
- if (native_.isSuccess(result)) {
- var returnObject = new LocalMessagePort(args.localMessagePortName, true);
- ports[nativeParam.localMessagePortName] = native_.getResultObject(result);
- } else {
- throw native_.getErrorObject(result);
+ if (native_.isSuccess(result)) {
+ var id = native_.getResultObject(result);
+ ports[nativeParam.localMessagePortName] = new LocalMessagePort(args.localMessagePortName, true, id);
+ } else {
+ throw native_.getErrorObject(result);
+ }
}
- return returnObject;
+ return ports[args.localMessagePortName];
};
MessagePortManager.prototype.requestRemoteMessagePort = function(
@@ -179,10 +184,11 @@ MessagePortManager.prototype.requestTrustedRemoteMessagePort = function(
return returnObject;
};
-function LocalMessagePort(messagePortName, isTrusted) {
+function LocalMessagePort(messagePortName, isTrusted, id) {
Object.defineProperties(this, {
messagePortName: { value: messagePortName, writable: false, enumerable: true },
- isTrusted: { value: !!isTrusted, writable: false, enumerable: true }
+ isTrusted: { value: !!isTrusted, writable: false, enumerable: true },
+ _id: { value: id, writable: false, enumerable: false }
});
}
@@ -193,7 +199,7 @@ LocalMessagePort.prototype.addMessagePortListener = function(listener) {
native_.addListener(LOCAL_MESSAGE_PORT_LISTENER_ID, MessagePortChangeCallback);
- var portId = ports[this.messagePortName];
+ var portId = ports[this.messagePortName]._id;
if (!callbacks.hasOwnProperty(portId)) callbacks[portId] = [];
@@ -209,7 +215,7 @@ LocalMessagePort.prototype.removeMessagePortListener = function(watchId) {
]);
var toDelete;
- var listeners = callbacks[ports[this.messagePortName]];
+ var listeners = callbacks[ports[this.messagePortName]._id];
for (var key in listeners) {
var listenerId = listeners[key][1];
@@ -343,7 +349,7 @@ RemoteMessagePort.prototype.sendMessage = function() {
data: filteredData,
trusted: this.isTrusted,
localPortId: args.localMessagePort
- ? ports[args.localMessagePort.messagePortName]
+ ? ports[args.localMessagePort.messagePortName]._id
: -1
};