Add widget_instance_terminate_app API
authorhyunho <hhstark.kang@samsung.com>
Tue, 29 Dec 2020 05:45:36 +0000 (14:45 +0900)
committerSukhyungKang <shine.kang@samsung.com>
Mon, 19 Sep 2022 23:31:33 +0000 (08:31 +0900)
Change-Id: Id5041388ed5adcc558f1f901999c975083768399
Signed-off-by: hyunho <hhstark.kang@samsung.com>
include/widget_instance.h
mock/aul_mock.h
mock/mock.cc
src/widget_instance.c
unittest/src/test_widget_service_instance.cc

index 9167275fb891c18186544dcae2141be71b371776..3349e46cc1d76b1293015d88d7dcbabcd4650d57 100644 (file)
@@ -67,6 +67,7 @@ int widget_instance_get_error_code(widget_instance_h instance, int *err);
 int widget_instance_create(const char *widget_id, char **instance_id);
 int widget_instance_launch(const char *instance_id, char *content_info, int w, int h);
 int widget_instance_terminate(const char *instance_id);
+int widget_instance_terminate_app(const char *instance_id);
 int widget_instance_destroy(const char *instance_id);
 int widget_instance_resume(const char *instance_id);
 int widget_instance_pause(const char *instance_id);
index 0916a7f7ca9aafd630cf1a50d5f43c65c5c5b866..ae33d14b97189c8a21dfe9ed3bd09f0d4853f80b 100644 (file)
@@ -31,6 +31,7 @@ typedef void *aul_app_com_connection_h;
 typedef int (*app_com_cb)(const char *endpoint, aul_app_com_result_e result, bundle *envelope, void *user_data);
 typedef void (*aul_widget_instance_foreach_cb)(const char *instance_id, void *data);
 
+DECLARE_FAKE_VALUE_FUNC(int, aul_terminate_pid, int);
 DECLARE_FAKE_VALUE_FUNC(int, aul_widget_service_set_disable,
     const char *, bool);
 DECLARE_FAKE_VALUE_FUNC(int, aul_app_com_create, const char *, aul_app_com_permission_h,
index 8b5ccba7bd51da4b879702c627032f0f56445dca..031ede4b2159235a451d2772e22f7285f5a81f1c 100644 (file)
@@ -32,6 +32,7 @@ DEFINE_FAKE_VALUE_FUNC(int, system_info_get_platform_bool,
 DEFINE_FAKE_VALUE_FUNC(uid_t, getuid);
 
 /* aul */
+DEFINE_FAKE_VALUE_FUNC(int, aul_terminate_pid, int);
 DEFINE_FAKE_VALUE_FUNC(int, aul_widget_service_set_disable,
     const char*, bool);
 DEFINE_FAKE_VALUE_FUNC(int, aul_app_com_create, const char *, aul_app_com_permission_h,
index 607cac351e2c206c81d7109d145e9567b65ae8f8..3148cee8984826748d0b2fccc41c7fb4648f4124 100644 (file)
@@ -513,6 +513,34 @@ EAPI int widget_instance_terminate(const char *instance_id)
        return ret;
 }
 
+EAPI int widget_instance_terminate_app(const char *instance_id)
+{
+       int ret;
+       struct _widget_instance *instance;
+
+       if (instance_id == NULL)
+               return -1;
+
+       instance = __pick_instance(instance_id);
+       if (!instance) {
+               _E("illegal operation: termiante app (instance not yet initialized: %s)", instance_id);
+               return -1;
+       }
+
+       if (instance->pid <= 0) {
+               _E("Invalid pid (%d)", instance->pid);
+               return -1;
+       }
+
+       ret = aul_terminate_pid(instance->pid);
+       if (ret != 0) {
+               _E("Fail to terminate (%d)", instance->pid);
+               return -1;
+       }
+
+       return ret;
+}
+
 EAPI int widget_instance_destroy(const char *instance_id)
 {
        int ret = 0;
index 4635165494cbdab76a1325c412e8538236dae265..97ce0af7e805bd37f3726023fd3661fb1858d5bb 100644 (file)
@@ -30,9 +30,9 @@ namespace {
 const char *__fake_tzplatform_mkpath(enum tzplatform_variable id, const char *path) {
   return get_db_path();
 }
-
+static int __pid = 77;
 int __fake_aul_launch_app_async(const char *appid, bundle *kb) {
-  return 0;
+  return __pid;
 }
 
 int __fake_aul_app_com_create(const char *endpoint, aul_app_com_permission_h permission,
@@ -58,10 +58,15 @@ int __fake_aul_debug_info_set(bundle *src, bundle *dst) {
   return 0;
 }
 
+int __fake_aul_terminate_pid(int pid) {
+  return 0;
+}
+
 class WidgetInstanceTest : public ::testing::Test {
   public:
     virtual void SetUp() {
       tzplatform_mkpath_fake.custom_fake = __fake_tzplatform_mkpath;
+      aul_terminate_pid_fake.custom_fake= __fake_aul_terminate_pid;
       aul_launch_app_async_fake.custom_fake= __fake_aul_launch_app_async;
       aul_app_com_create_fake.custom_fake = __fake_aul_app_com_create;
       aul_app_com_leave_fake.custom_fake = __fake_aul_app_com_leave;
@@ -93,28 +98,28 @@ TEST_F(WidgetInstanceTest, InstanceLaunch) {
   int ret = 0;
 
   ret = widget_instance_launch(instance_id, (char *)"TestContent", 4, 2);
-  ASSERT_EQ(ret, 0);
+  ASSERT_EQ(ret, __pid);
 }
 
 TEST_F(WidgetInstanceTest, InstanceResume) {
   int ret = 0;
 
   ret = widget_instance_resume(instance_id);
-  ASSERT_EQ(ret, 0);
+  ASSERT_EQ(ret, __pid);
 }
 
 TEST_F(WidgetInstanceTest, InstancePause) {
   int ret = 0;
 
   ret = widget_instance_pause(instance_id);
-  ASSERT_EQ(ret, 0);
+  ASSERT_EQ(ret, __pid);
 }
 
 TEST_F(WidgetInstanceTest, InstanceResize) {
   int ret = 0;
 
   ret = widget_instance_resize(instance_id, 4, 2);
-  ASSERT_EQ(ret, 0);
+  ASSERT_EQ(ret, __pid);
 }
 
 widget_instance_h ins;
@@ -285,6 +290,13 @@ TEST_F(WidgetInstanceTest, InstanceTerminate) {
   int ret = 0;
 
   ret = widget_instance_terminate(instance_id);
+  ASSERT_EQ(ret, __pid);
+}
+
+TEST_F(WidgetInstanceTest, AppTerminate) {
+  int ret = 0;
+
+  ret = widget_instance_terminate_app(instance_id);
   ASSERT_EQ(ret, 0);
 }
 
@@ -292,7 +304,7 @@ TEST_F(WidgetInstanceTest, InstanceDestroy) {
   int ret = 0;
 
   ret = widget_instance_destroy(instance_id);
-  ASSERT_EQ(ret, 0);
+  ASSERT_EQ(ret, __pid);
 }
 
 TEST_F(WidgetInstanceTest, InstanceFini) {