[Alarm] Delete (add/get)AlarmNotification from tv, common and ivi profiles 07/164307/4
authorLukasz Bardeli <l.bardeli@samsung.com>
Mon, 18 Dec 2017 11:13:28 +0000 (12:13 +0100)
committerLukasz Bardeli <l.bardeli@samsung.com>
Mon, 18 Dec 2017 13:01:30 +0000 (13:01 +0000)
        addAlarmNotification and getAlarmNotification methods are available
        on mobile and wearable profiles only. This fix delete those property from
        AlarmManager when plugins are build on different profile.

[Verification] Code compiles without error. Checked in chrome console.
               TCT passrate on wearable 100%

Change-Id: I5d35656845edfb10c06b3f3c978423ff3f0b6866
Signed-off-by: Lukasz Bardeli <l.bardeli@samsung.com>
src/alarm/alarm.gyp
src/alarm/alarm_api.js
src/alarm/alarm_instance.cc
src/alarm/alarm_manager.cc
src/alarm/alarm_manager.h
src/utils/utils_api.js
src/utils/utils_instance.cc
src/utils/utils_instance.h

index 5d212ec6e579adbd008e8bf0dce9f3bc63b92e41..6a5739e9896913cd91c33c27639b5f0e3790aee3 100644 (file)
@@ -8,7 +8,6 @@
       'type': 'loadable_module',
       'dependencies': [
         '../common/common.gyp:tizen_common',
-        '../notification/notification.gyp:tizen_notification',
       ],
       'sources': [
         'alarm_api.js',
             ]
           },
         }],
+        ['extension_host_os == "mobile"', {
+            'dependencies': [
+              '../notification/notification.gyp:tizen_notification',
+            ],
+        }],
+        ['extension_host_os == "wearable"', {
+            'dependencies': [
+             '../notification/notification.gyp:tizen_notification',
+            ],
+        }]
       ],
     },
   ],
index cfa5f987875950a7ef86eefab4823e1b132a4228..e8507f694765c4f34d859012f1336d7a2a1d1702 100755 (executable)
@@ -486,5 +486,44 @@ tizen.AlarmAbsolute.prototype.getNextScheduledDate = function () {
     }
 };
 
+// Singleton to check on which profile plugins are executed
+var ProfileAlarm = (function() {
+    var m_profile = null;
+    function ProfileAlarm() {
+       if (m_profile == null) {
+           m_profile = privUtils_.checkProfile();
+       }
+       Object.defineProperties(this, {
+           profile: {
+               get: function() {
+                   return m_profile;
+               },
+               set: function() {},
+               enumerable: true
+           }
+       })
+    };
+
+    var instance;
+    return {
+        getInstance: function() {
+            if (instance == null) {
+                instance = new ProfileAlarm();
+                // Hide the constructor so the returned objected can't be new'd...
+                instance.constructor = null;
+            }
+            return instance;
+        }
+   };
+})();
+
+var _profile = ProfileAlarm.getInstance().profile;
+
+// Notifications feature are available on mobile and wearable profile
+if (_profile != 'mobile' && _profile != 'wearable') {
+    delete AlarmManager.prototype.addAlarmNotification;
+    delete AlarmManager.prototype.getAlarmNotification;
+}
+
 //exports //////////////////////////////////////////////////////////////
 exports = new AlarmManager();
index a65a604b56ea72ed42857a0df0b019e4ed1e208f..504149cd3f89ed133734951c1965b9f97845b431 100644 (file)
@@ -29,14 +29,10 @@ AlarmInstance::AlarmInstance() {
   using namespace std::placeholders;
 
   RegisterSyncHandler("AlarmManager_add", std::bind(&AlarmManager::Add, &manager_, _1, _2));
-  RegisterSyncHandler("AlarmManager_addAlarmNotification",
-                      std::bind(&AlarmManager::AddAlarmNotification, &manager_, _1, _2));
   RegisterSyncHandler("AlarmManager_remove", std::bind(&AlarmManager::Remove, &manager_, _1, _2));
   RegisterSyncHandler("AlarmManager_removeAll",
                       std::bind(&AlarmManager::RemoveAll, &manager_, _1, _2));
   RegisterSyncHandler("AlarmManager_get", std::bind(&AlarmManager::Get, &manager_, _1, _2));
-  RegisterSyncHandler("AlarmManager_getAlarmNotification",
-                      std::bind(&AlarmManager::GetAlarmNotification, &manager_, _1, _2));
   RegisterSyncHandler("AlarmManager_getAll", std::bind(&AlarmManager::GetAll, &manager_, _1, _2));
   // AlarmRelative
   RegisterSyncHandler("AlarmRelative_getRemainingSeconds",
@@ -44,6 +40,14 @@ AlarmInstance::AlarmInstance() {
   // AlarmAbsolute
   RegisterSyncHandler("AlarmAbsolute_getNextScheduledDate",
                       std::bind(&AlarmManager::GetNextScheduledDate, &manager_, _1, _2));
+
+  // Block of code related to Notification
+#if defined(TIZEN_MOBILE) || defined(TIZEN_WEARABLE)
+  RegisterSyncHandler("AlarmManager_addAlarmNotification",
+                      std::bind(&AlarmManager::AddAlarmNotification, &manager_, _1, _2));
+  RegisterSyncHandler("AlarmManager_getAlarmNotification",
+                      std::bind(&AlarmManager::GetAlarmNotification, &manager_, _1, _2));
+#endif
 }
 
 AlarmInstance::~AlarmInstance() {
index 2588fa25f2060442d1dd94f5a1382e2167a19d7d..c7d67a112f91cce6ed8c2141940881f04a51ee06 100644 (file)
 #include <app.h>
 #include <app_alarm.h>
 #include <app_control_internal.h>
+
+#if defined(TIZEN_MOBILE) || defined(TIZEN_WEARABLE)
 #include <notification_internal.h>
+#endif
 
 #include "common/converter.h"
 #include "common/logger.h"
@@ -245,6 +248,7 @@ void AlarmManager::Add(const picojson::value& args, picojson::object& out) {
   ReportSuccess(result, out);
 }
 
+#if defined(TIZEN_MOBILE) || defined(TIZEN_WEARABLE)
 void AlarmManager::AddAlarmNotification(const picojson::value& args, picojson::object& out) {
   using namespace extension::notification;
   ScopeLogger();
@@ -466,6 +470,7 @@ void AlarmManager::AddAlarmNotification(const picojson::value& args, picojson::o
   result_obj.insert(std::make_pair("id", picojson::value(std::to_string(alarm_id))));
   ReportSuccess(result, out);
 }
+#endif
 
 void AlarmManager::Remove(const picojson::value& args, picojson::object& out) {
   ScopeLogger();
@@ -664,6 +669,7 @@ void AlarmManager::Get(const picojson::value& args, picojson::object& out) {
   }
 }
 
+#if defined(TIZEN_MOBILE) || defined(TIZEN_WEARABLE)
 void AlarmManager::GetAlarmNotification(const picojson::value& args, picojson::object& out) {
   using namespace extension::notification;
   ScopeLogger();
@@ -711,7 +717,7 @@ void AlarmManager::GetAlarmNotification(const picojson::value& args, picojson::o
 
   ReportSuccess(result, out);
 }
-
+#endif
 static bool AlarmIterateCB(int alarm_id, void* user_data) {
   ScopeLogger();
 
index f7c0f3fd3ee77623445414eabaf6c525fa696fb5..df5559bfa9976dbacafdd6469569325b6b057952 100644 (file)
@@ -29,13 +29,15 @@ class AlarmManager {
   virtual ~AlarmManager();
 
   void Add(const picojson::value& args, picojson::object& out);
-  void AddAlarmNotification(const picojson::value& args, picojson::object& out);
   void Remove(const picojson::value& args, picojson::object& out);
   void RemoveAll(const picojson::value& args, picojson::object& out);
   void Get(const picojson::value& args, picojson::object& out);
-  void GetAlarmNotification(const picojson::value& args, picojson::object& out);
   void GetAll(const picojson::value& args, picojson::object& out);
 
+#if defined(TIZEN_MOBILE) || defined(TIZEN_WEARABLE)
+  void AddAlarmNotification(const picojson::value& args, picojson::object& out);
+  void GetAlarmNotification(const picojson::value& args, picojson::object& out);
+#endif
   // AlarmRelative
   void GetRemainingSeconds(const picojson::value& args, picojson::object& out);
   // AlarmAbsolute
index 07dfedb3326c75a0a609082a58c876773095406c..26721ae781f1a5e2382ae27e7ea3092ccb8f09f8 100644 (file)
@@ -287,6 +287,13 @@ Utils.prototype.checkBackwardCompabilityPrivilegeAccess = function(current_privi
   }
 };
 
+Utils.prototype.checkProfile = function() {
+  var result = native_.callSync('Utils_checkProfile', {});
+
+  return native_.getResultObject(result);
+};
+
+
 /////////////////////////////////////////////////////////////////////////////
 /** @constructor */
 var Type = function() {};
index 65f5995ab1c8f0003127596ff37c40de3a123e66..9cb9dd57cf4ce0d7ac8e01943943f176b2b627f0 100644 (file)
@@ -33,6 +33,7 @@ UtilsInstance::UtilsInstance() {
                 CheckBackwardCompabilityPrivilegeAccess);
   REGISTER_SYNC("Utils_toLongLong", ToLongLong);
   REGISTER_SYNC("Utils_toUnsignedLongLong", ToUnsignedLongLong);
+  REGISTER_SYNC("Utils_checkProfile", CheckProfile);
 
 #undef REGISTER_SYNC
 #undef REGISTER_ASYNC
@@ -116,5 +117,22 @@ void UtilsInstance::ToUnsignedLongLong(const picojson::value& args, picojson::ob
   ReportSuccess(picojson::value(static_cast<double>(output)), out);
 }
 
+void UtilsInstance::CheckProfile(const picojson::value& args, picojson::object& out) {
+  ScopeLogger();
+
+  std::string profile = "common";
+#if defined(TIZEN_MOBILE)
+  profile = "mobile";
+#elif defined(TIZEN_WEARABLE)
+  profile = "wearable";
+#elif defined(TIZEN_TV) || defined(USBHOST)
+  profile = "tv";
+#elif defined(TIZEN_IVI)
+  profile = "ivi";
+#endif
+
+  ReportSuccess(picojson::value(profile), out);
+}
+
 }  // namespace utils
 }  // namespace extension
index fee0d412e93f06f68c2eff224ed6708ed84de802..c39a91d47ca9670a248dea78443c96318ad82027 100644 (file)
@@ -24,6 +24,7 @@ class UtilsInstance : public common::ParsedInstance {
 
   void ToLongLong(const picojson::value& args, picojson::object& out);
   void ToUnsignedLongLong(const picojson::value& args, picojson::object& out);
+  void CheckProfile(const picojson::value& args, picojson::object& out);
 };
 }  // namespace utils
 }  // namespace extension