From: Piotr Kosko/Native/Web API (PLT) /SRPOL/Engineer/Samsung Electronics
Date: Mon, 22 Feb 2021 12:58:05 +0000 (+0100)
Subject: [Mediakey] Conditional support for module
X-Git-Tag: submit/tizen/20210223.072943~1^2
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=650a1b35e1e96fe27e36d2c6bd98dd00c3476df7;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git
[Mediakey] Conditional support for module
Tested in chrome and with TCT (capability & mediakey).
With feature disabled:
TCT:
capability 100% pass
mediakey - not exectued
Chrome:
> tizen.mediakey === undefined
true
With feature enabled:
TCT:
capability 100% pass
mediakey 100% pass
Chrome:
> tizen.mediakey === undefined
false
> tizen.mediakey
MediaKeyManager {}
Change-Id: I1b6a4654c0aabcb2e21defd0d05936d65115263f
---
diff --git a/src/mediakey/mediakey_api.js b/src/mediakey/mediakey_api.js
index 2bd69b7c..bce70edb 100755
--- a/src/mediakey/mediakey_api.js
+++ b/src/mediakey/mediakey_api.js
@@ -63,4 +63,10 @@ MediaKeyManager.prototype.unsetMediaKeyEventListener = function() {
native.removeListener(ON_RELEASED_MEDIA_KEY_EVENT_CALLBACK);
};
-exports = new MediaKeyManager();
+// conditional API export
+var relatedFeature = 'http://tizen.org/feature/network.bluetooth.audio.media';
+exports = xwalk.utils.exportModuleIfFeatureSupported(
+ relatedFeature,
+ new MediaKeyManager(),
+ undefined
+);
diff --git a/src/utils/utils_api.js b/src/utils/utils_api.js
index dee5a3d9..684b0f82 100644
--- a/src/utils/utils_api.js
+++ b/src/utils/utils_api.js
@@ -1602,6 +1602,22 @@ for (var prop in errors) {
Object.defineProperties(WebAPIException, error_constants);
Object.defineProperties(WebAPIException.prototype, error_constants);
+// Modules should be 'undefined' if related feature is not supported.
+// Below function could be used for conditional definition of JS API exports as in below:
+// var relatedFeature = 'http://tizen.org/feature/network.bluetooth.audio.media';
+// xwalk.utils.exportModuleIfFeatureSupported(relatedFeature, exports,
+// new MediaKeyManager(), undefined);
+function exportModuleIfFeatureSupported(relatedFeature, successExport, failureExport) {
+ try {
+ if (true === tizen.systeminfo.getCapability(relatedFeature)) {
+ return successExport;
+ }
+ } catch (e) {
+ // ignore errors
+ }
+ return failureExport;
+}
+
// Export WebAPIException and WebAPIError into global scope.
// For compliance reasons their constructors should not be exported in tizen namespace,
// but should be available internally to allow throwing exceptions from modules.
@@ -1621,6 +1637,7 @@ Utils.prototype.converter = _converter;
Utils.prototype.validator = _validator;
Utils.prototype.NativeManager = NativeManager;
Utils.prototype.CommonListenerManager = CommonListenerManager;
+Utils.prototype.exportModuleIfFeatureSupported = exportModuleIfFeatureSupported;
var native_ = new NativeManager(extension);