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);