[Mediakey] Conditional support for module 49/254049/1
authorPiotr Kosko/Native/Web API (PLT) /SRPOL/Engineer/Samsung Electronics <p.kosko@samsung.com>
Mon, 22 Feb 2021 12:58:05 +0000 (13:58 +0100)
committerPiotr Kosko/Native/Web API (PLT) /SRPOL/Engineer/Samsung Electronics <p.kosko@samsung.com>
Mon, 22 Feb 2021 14:45:03 +0000 (15:45 +0100)
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

src/mediakey/mediakey_api.js
src/utils/utils_api.js

index 2bd69b7..bce70ed 100755 (executable)
@@ -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
+);
index 33ee00b..5161056 100644 (file)
@@ -1574,6 +1574,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.
@@ -1593,6 +1609,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);