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);
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,
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,
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;
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,
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;
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;
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);
}
int ret = 0;
ret = widget_instance_destroy(instance_id);
- ASSERT_EQ(ret, 0);
+ ASSERT_EQ(ret, __pid);
}
TEST_F(WidgetInstanceTest, InstanceFini) {