static mmi_iu_output_intent_received_cb iu_output_intent_received_callback = NULL;
static void *iu_output_intent_user_data = NULL;
+static mmi_iu_output_event_received_cb iu_output_event_received_callback = NULL;
+static void *iu_output_event_user_data = NULL;
+
static bool initialized = false;
static string g_system_app_id;
return MMI_IU_ERROR_NOT_INITIALIZED;
}
- if (iu_engine)
+ if (iu_engine) {
if (!iu_engine->set_input_event(type, event)) {
- LOGE("Failed to set input event");
- return MMI_IU_ERROR_OPERATION_FAILED;
+ if (iu_output_event_received_callback)
+ iu_output_event_received_callback(app_id, type, event, iu_output_event_user_data);
+
+ return MMI_IU_ERROR_NONE;
}
+ }
_I("app state: %d\n", g_app_state);
return MMI_IU_ERROR_NONE;
}
+EXPORT_API int mmi_iu_set_output_event_received_callback(mmi_iu_output_event_received_cb callback, void *user_data)
+{
+ if (!callback) {
+ _W("[ERROR] Invalid parameter");
+ return MMI_IU_ERROR_INVALID_PARAMETER;
+ }
+
+ if (!initialized) {
+ _W("[ERROR] Not initialized");
+ return MMI_IU_ERROR_NOT_INITIALIZED;
+ }
+
+ iu_output_event_received_callback = callback;
+ iu_output_event_user_data = user_data;
+
+ return MMI_IU_ERROR_NONE;
+}
+
EXPORT_API int mmi_iu_unset_output_intent_received_callback()
{
if (!initialized) {
return MMI_IU_ERROR_NONE;
}
+EXPORT_API int mmi_iu_unset_output_event_received_callback()
+{
+ if (!initialized) {
+ _W("[ERROR] Not initialized");
+ return MMI_IU_ERROR_NOT_INITIALIZED;
+ }
+
+ iu_output_event_received_callback = NULL;
+ iu_output_event_user_data = NULL;
+
+ return MMI_IU_ERROR_NONE;
+}
+
EXPORT_API int mmi_iu_set_app_state(mmi_state app_state)
{
if (!initialized) {
static string output_action;
+static int g_received_event_type = -1;
+static void *g_received_event_data = NULL;
+
+#define MMI_EVENT_VOICE_TYPE_GO 1000 // for test
+
namespace {
static void output_intent_received_cb(const char *app_id, const char *json_data, void *user_data)
g_object_unref(parser);
}
+static void output_event_received_cb(const char *app_id, int type, void *event, void *user_data)
+{
+ g_received_event_type = type;
+ g_received_event_data = event;
+}
+
class IUClientFeedInputEventTest : public testing::Test {
public:
virtual void SetUp() {
MMI_PROVIDER_EVENT_VOICE = ecore_event_type_new();
MMI_PROVIDER_EVENT_VISION = ecore_event_type_new();
+ g_received_event_type = -1;
+ g_received_event_data = NULL;
+
int ret = mmi_iu_init();
EXPECT_EQ(ret, MMI_IU_ERROR_NONE);
ret = mmi_iu_set_output_intent_received_callback(output_intent_received_cb, NULL);
EXPECT_EQ(ret, MMI_IU_ERROR_NONE);
+
+ ret = mmi_iu_set_output_event_received_callback(output_event_received_cb, NULL);
+ EXPECT_EQ(ret, MMI_IU_ERROR_NONE);
}
+
virtual void TearDown() {
mmi_iu_shutdown();
TEST_F(IUClientFeedInputEventTest, utc_mmi_iu_feed_intent_voice_move_up)
{
- mmi_provider_event_voice ve;
+ mmi_provider_event_voice ve = { 0, };
ve.type = MMI_EVENT_VOICE_TYPE_UP;
int ret = feed_input_event_test(MMI_STATE_EXPLORATION, MMI_PROVIDER_EVENT_VOICE, &ve);
TEST_F(IUClientFeedInputEventTest, utc_mmi_iu_feed_intent_voice_move_down)
{
- mmi_provider_event_voice ve;
+ mmi_provider_event_voice ve = { 0, };
ve.type = MMI_EVENT_VOICE_TYPE_DOWN;
int ret = feed_input_event_test(MMI_STATE_EXPLORATION, MMI_PROVIDER_EVENT_VOICE, &ve);
TEST_F(IUClientFeedInputEventTest, utc_mmi_iu_feed_intent_voice_move_right)
{
- mmi_provider_event_voice ve;
+ mmi_provider_event_voice ve = { 0, };
ve.type = MMI_EVENT_VOICE_TYPE_RIGHT;
int ret = feed_input_event_test(MMI_STATE_EXPLORATION, MMI_PROVIDER_EVENT_VOICE, &ve);
TEST_F(IUClientFeedInputEventTest, utc_mmi_iu_feed_intent_voice_move_left)
{
- mmi_provider_event_voice ve;
+ mmi_provider_event_voice ve = { 0, };
ve.type = MMI_EVENT_VOICE_TYPE_LEFT;
int ret = feed_input_event_test(MMI_STATE_EXPLORATION, MMI_PROVIDER_EVENT_VOICE, &ve);
TEST_F(IUClientFeedInputEventTest, utc_mmi_iu_feed_intent_gesture_hand_up)
{
- mmi_provider_event_gesture ge;
+ mmi_provider_event_gesture ge = { 0, };
ge.type = MMI_EVENT_GESTURE_TYPE_SWIPE_UP;
int ret = feed_input_event_test(MMI_STATE_EXPLORATION, MMI_PROVIDER_EVENT_GESTURE, &ge);
TEST_F(IUClientFeedInputEventTest, utc_mmi_iu_feed_intent_gesture_hand_down)
{
- mmi_provider_event_gesture ge;
+ mmi_provider_event_gesture ge = { 0, };
ge.type = MMI_EVENT_GESTURE_TYPE_SWIPE_DOWN;
int ret = feed_input_event_test(MMI_STATE_EXPLORATION, MMI_PROVIDER_EVENT_GESTURE, &ge);
TEST_F(IUClientFeedInputEventTest, utc_mmi_iu_feed_intent_gesture_hand_right)
{
- mmi_provider_event_gesture ge;
+ mmi_provider_event_gesture ge = { 0, };
ge.type = MMI_EVENT_GESTURE_TYPE_SWIPE_RIGHT;
int ret = feed_input_event_test(MMI_STATE_EXPLORATION, MMI_PROVIDER_EVENT_GESTURE, &ge);
TEST_F(IUClientFeedInputEventTest, utc_mmi_iu_feed_intent_gesture_hand_left)
{
- mmi_provider_event_gesture ge;
+ mmi_provider_event_gesture ge = { 0, };
ge.type = MMI_EVENT_GESTURE_TYPE_SWIPE_LEFT;
int ret = feed_input_event_test(MMI_STATE_EXPLORATION, MMI_PROVIDER_EVENT_GESTURE, &ge);
TEST_F(IUClientFeedInputEventTest, utc_mmi_iu_feed_intent_voice_execute)
{
- mmi_provider_event_voice ve;
+ mmi_provider_event_voice ve = { 0, };
ve.type = MMI_EVENT_VOICE_TYPE_EXECUTE;
int ret = feed_input_event_test(MMI_STATE_EXECUTION, MMI_PROVIDER_EVENT_VOICE, &ve);
TEST_F(IUClientFeedInputEventTest, utc_mmi_iu_feed_intent_voice_play)
{
- mmi_provider_event_voice ve;
+ mmi_provider_event_voice ve = { 0, };
ve.type = MMI_EVENT_VOICE_TYPE_PLAY;
int ret = feed_input_event_test(MMI_STATE_EXECUTION, MMI_PROVIDER_EVENT_VOICE, &ve);
TEST_F(IUClientFeedInputEventTest, utc_mmi_iu_feed_intent_voice_yes)
{
- mmi_provider_event_voice ve;
+ mmi_provider_event_voice ve = { 0, };
ve.type = MMI_EVENT_VOICE_TYPE_YES;
int ret = feed_input_event_test(MMI_STATE_EXECUTION, MMI_PROVIDER_EVENT_VOICE, &ve);
TEST_F(IUClientFeedInputEventTest, utc_mmi_iu_feed_intent_gesture_hand_push)
{
- mmi_provider_event_gesture ge;
+ mmi_provider_event_gesture ge = { 0, };
ge.type = MMI_EVENT_GESTURE_TYPE_PUSH;
int ret = feed_input_event_test(MMI_STATE_EXECUTION, MMI_PROVIDER_EVENT_GESTURE, &ge);
TEST_F(IUClientFeedInputEventTest, utc_mmi_iu_feed_intent_voice_cancel)
{
- mmi_provider_event_voice ve;
+ mmi_provider_event_voice ve = { 0, };
ve.type = MMI_EVENT_VOICE_TYPE_CANCEL;
int ret = feed_input_event_test(MMI_STATE_FEEDBACK, MMI_PROVIDER_EVENT_VOICE, &ve);
TEST_F(IUClientFeedInputEventTest, utc_mmi_iu_feed_intent_voice_back)
{
- mmi_provider_event_voice ve;
+ mmi_provider_event_voice ve = { 0, };
ve.type = MMI_EVENT_VOICE_TYPE_BACK;
int ret = feed_input_event_test(MMI_STATE_FEEDBACK, MMI_PROVIDER_EVENT_VOICE, &ve);
}
)";
- mmi_provider_event_vision vision_event;
+ mmi_provider_event_vision vision_event = { 0, };
vision_event.type = MMI_EVENT_VISION_TYPE_USER_MOVE_AWAY;
int ret = feed_input_event_test(MMI_STATE_OBSERVATION, MMI_PROVIDER_EVENT_VISION, &vision_event);
TEST_F(IUClientFeedInputEventTest, utc_mmi_iu_feed_intent_voice_exit)
{
- mmi_provider_event_voice ve;
+ mmi_provider_event_voice ve = { 0, };
ve.type = MMI_EVENT_VOICE_TYPE_EXIT;
int ret = feed_input_event_test(MMI_STATE_TERMINATION, MMI_PROVIDER_EVENT_VOICE, &ve);
TEST_F(IUClientFeedInputEventTest, utc_mmi_iu_feed_intent_voice_stop)
{
- mmi_provider_event_voice ve;
+ mmi_provider_event_voice ve = { 0, };
ve.type = MMI_EVENT_VOICE_TYPE_STOP;
int ret = feed_input_event_test(MMI_STATE_TERMINATION, MMI_PROVIDER_EVENT_VOICE, &ve);
TEST_F(IUClientFeedInputEventTest, utc_mmi_iu_feed_intent_voice_terminate)
{
- mmi_provider_event_voice ve;
+ mmi_provider_event_voice ve = { 0, };
ve.type = MMI_EVENT_VOICE_TYPE_TERMINATE;
int ret = feed_input_event_test(MMI_STATE_TERMINATION, MMI_PROVIDER_EVENT_VOICE, &ve);
ret = mmi_iu_set_focus_app_id(SYSTEM_APP_ID);
EXPECT_EQ(ret, MMI_IU_ERROR_NONE);
- mmi_provider_event_gesture ge;
+ mmi_provider_event_gesture ge = { 0, };
ge.type = MMI_EVENT_GESTURE_TYPE_PUSH;
ret = mmi_iu_feed_input_event(TEST_APP_ID, MMI_PROVIDER_EVENT_GESTURE, &ge);
EXPECT_STREQ(output_action.c_str(), "");
}
+
+TEST_F(IUClientFeedInputEventTest, utc_mmi_iu_feed_intent_voice_go)
+{
+ int timestamp = 1234;
+ mmi_provider_event_voice ve = { 0, };
+ ve.type = MMI_EVENT_VOICE_TYPE_GO;
+ ve.timestamp = timestamp;
+
+ int ret = feed_input_event_test(MMI_STATE_TERMINATION, MMI_PROVIDER_EVENT_VOICE, &ve);
+ EXPECT_EQ(ret, MMI_IU_ERROR_NONE);
+
+ EXPECT_EQ(g_received_event_type, MMI_PROVIDER_EVENT_VOICE);
+ EXPECT_EQ(g_received_event_data, &ve);
+
+ mmi_provider_event_voice *rcv_ve = (mmi_provider_event_voice *)g_received_event_data;
+ EXPECT_EQ(rcv_ve->timestamp, timestamp);
+}
+
} // namespace