Add TEST_CODE for flight mode 90/132190/1
authorjin0.kim <jin0.kim@samsung.com>
Thu, 1 Jun 2017 11:07:44 +0000 (19:37 +0830)
committerjin0.kim <jin0.kim@samsung.com>
Thu, 1 Jun 2017 11:07:44 +0000 (19:37 +0830)
Change-Id: Iffa1fcb56f93e530cc7afb4e1f2fd1dcd94d0691

data/org.tizen.w-home.xml.in
src/moments/moments_control_view.c
test/feature_test/group_feature_moments_control_button_status_behavior.c
test/test_function.h

index e72868333f2e4230d38187f41be679ba2f2fb4b1..c56380f0ea203723782545204c57b555f3480309 100755 (executable)
@@ -25,5 +25,6 @@
                <privilege>http://tizen.org/privilege/notification</privilege>
                <privilege>http://tizen.org/privilege/telephony</privilege>
                <privilege>http://tizen.org/privilege/network.get</privilege>
+               <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
        </privileges>
 </manifest>
index 3c7bcd4785221cd3d3b10b22f5ef17e5f8e1c7f4..f29ae7eeb525757fdade6656fab11858a14a4f91 100755 (executable)
@@ -36,6 +36,8 @@ static struct __control_view_s {
        Evas_Object *control_layout;
        Evas_Object *do_not_disturb_popup;
        Evas_Object *do_not_disturb_layout;
+       Evas_Object *flight_mode_popup;
+       Evas_Object *flight_mode_layout;
        Eina_List *button_list;
 } s_info = {
        .base_win = NULL,
@@ -43,6 +45,8 @@ static struct __control_view_s {
        .control_layout = NULL,
        .do_not_disturb_popup = NULL,
        .do_not_disturb_layout = NULL,
+       .flight_mode_popup = NULL,
+       .flight_mode_popup = NULL,
        .button_list = NULL,
 };
 
@@ -55,6 +59,7 @@ static bool __is_stand_alone(void);
 static bool __is_with_phone(void);
 static bool __is_with_bt_device(void);
 static void __do_not_disturb_pressed_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void __flight_mode_pressed_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
 
 const char *controls_btn_group_name[MOMENTS_CONTROLS_BTN_TYPE_MAX] = {
                                                                                                                                                CONTROLS_GROUP_ICON_ONLY,
@@ -65,7 +70,7 @@ const char *controls_btn_group_name[MOMENTS_CONTROLS_BTN_TYPE_MAX] = {
 control_info_t control_button_list[MOMENTS_CONTROLS_MAX] = {
        {MOMENTS_CONTROLS_DO_NOT_DISTURB,  MOMENTS_CONTROLS_BTN_TYPE_ICON_AND_BAR,  "do not disturb",  "donotdisturb.png",    0, "",   0, __do_not_disturb_pressed_cb, NULL},
        {MOMENTS_CONTROLS_VOLUME,          MOMENTS_CONTROLS_BTN_TYPE_ICON_AND_TEXT, "volume",          "multimedia.png",      0, "10", 0, NULL, NULL},
-       {MOMENTS_CONTROLS_FLIGHT_MODE,      MOMENTS_CONTROLS_BTN_TYPE_ICON_AND_BAR, "flight mode",    "flight_mode.png",          0, "",   0, NULL, NULL},
+       {MOMENTS_CONTROLS_FLIGHT_MODE,      MOMENTS_CONTROLS_BTN_TYPE_ICON_AND_BAR, "flight mode",    "flight_mode.png",          0, "",   0, __flight_mode_pressed_cb, NULL},
        {MOMENTS_CONTROLS_BRIGHTNESS,      MOMENTS_CONTROLS_BTN_TYPE_ICON_AND_TEXT, "brightness",      "brightness.png",      0, "7",  0, NULL, NULL},
        {MOMENTS_CONTROLS_MUSIC_PLAYER,    MOMENTS_CONTROLS_BTN_TYPE_ICON_ONLY,     "music player",    "music.png",           0, "7",  0, NULL, NULL},
        {MOMENTS_CONTROLS_CALL_FORWARDING, MOMENTS_CONTROLS_BTN_TYPE_ICON_ONLY,     "call forwarding", "call_forwarding.png", 0, "7",  0, NULL, NULL},
@@ -174,6 +179,18 @@ static void __change_do_not_disturb_button_cb(keynode_t *node, void *user_data)
        }
 }
 
+static void __change_flight_mode_button_cb(keynode_t *node, void *user_data)
+{
+       int is_flight_mode = false;
+
+       vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &is_flight_mode);
+       if (is_flight_mode == false) {
+               elm_object_signal_emit(control_button_list[MOMENTS_CONTROLS_FLIGHT_MODE].button_layout, "control_bar_off", "control_bar");
+       } else {
+               elm_object_signal_emit(control_button_list[MOMENTS_CONTROLS_FLIGHT_MODE].button_layout, "control_bar_on", "control_bar");
+       }
+}
+
 control_info_t *moments_control_create_button(Evas_Object *base_layout, int button_id)
 {
        control_info_t *button = (control_info_t *)malloc(sizeof(control_info_t));
@@ -196,6 +213,11 @@ control_info_t *moments_control_create_button(Evas_Object *base_layout, int butt
                        _E("Failed to register the changed_apps_order callback");
                }
                break;
+       case MOMENTS_CONTROLS_FLIGHT_MODE:
+               if (vconf_notify_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, __change_flight_mode_button_cb, NULL) < 0) {
+                       _E("Failed to register the changed_apps_order callback");
+               }
+               break;
        default:
                break;
        }
@@ -215,6 +237,9 @@ void moments_control_destroy_button(control_info_t *button_info)
                case MOMENTS_CONTROLS_DO_NOT_DISTURB:
                        vconf_ignore_key_changed(VCONFKEY_SETAPPL_BLOCKMODE_WEARABLE_BOOL, __change_do_not_disturb_button_cb);
                        break;
+               case MOMENTS_CONTROLS_FLIGHT_MODE:
+                       vconf_ignore_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, __change_flight_mode_button_cb);
+                       break;
                default:
                        break;
                }
@@ -392,7 +417,7 @@ static void __do_not_disturb_popup_ok_cb(void *data, Evas_Object *obj, void *eve
 static Evas_Object *__do_not_disturb_popup_view_create()
 {
        if (s_info.base_win == NULL) {
-               _D("base window is null!!!");
+               _E("base window is null!!!");
                return NULL;
        }
 
@@ -453,7 +478,107 @@ static void __do_not_disturb_pressed_cb(void *data, Evas *e, Evas_Object *obj, v
                moments_hide();
                __do_not_disturb_popup_view_create();
        } else {
-               vconf_set_bool(VCONFKEY_SETAPPL_BLOCKMODE_WEARABLE_BOOL, false);
+               int ret = vconf_set_bool(VCONFKEY_SETAPPL_BLOCKMODE_WEARABLE_BOOL, false);
+               if (ret < 0) {
+                       _E("Failed to set vconfkey(%s) : %d", VCONFKEY_SETAPPL_BLOCKMODE_WEARABLE_BOOL, ret);
+               }
+       }
+}
+
+static void __flight_mode_popup_cancel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       if (evas_object_visible_get(s_info.flight_mode_popup) == false) {
+               return;
+       }
+
+       if (s_info.flight_mode_popup) {
+               elm_popup_dismiss(s_info.flight_mode_popup);
+               s_info.flight_mode_popup = NULL;
+       }
+}
+
+static void __flight_mode_popup_ok_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       if (evas_object_visible_get(s_info.flight_mode_popup) == false) {
+               return;
+       }
+
+       int ret = vconf_set_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, true);
+       if (ret < 0) {
+               __T("Failed to set vconfkey(%s) : %d", VCONFKEY_TELEPHONY_FLIGHT_MODE, ret);
+       }
+
+       elm_popup_dismiss(s_info.flight_mode_popup);
+       s_info.flight_mode_popup = NULL;
+}
+
+static Evas_Object *__flight_mode_popup_view_create()
+{
+       if (s_info.base_win == NULL) {
+               _E("base window is null!!!");
+               return NULL;
+       }
+
+       Evas_Object *popup = elm_popup_add(s_info.base_win);
+       s_info.flight_mode_popup = popup;
+
+       elm_object_style_set(popup, "circle");
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK, __flight_mode_popup_cancel_cb, NULL);
+       evas_object_smart_callback_add(popup, "dismissed", NULL, NULL);
+
+       Evas_Object *layout = elm_layout_add(popup);
+       s_info.flight_mode_layout = layout;
+       elm_layout_theme_set(layout, "layout", "popup", "content/circle/buttons2");
+       elm_object_content_set(popup, layout);
+
+       /* FIXME - string */
+       elm_object_translatable_part_text_set(layout, "elm.text.title", "Flight mode");
+       elm_object_translatable_part_text_set(layout, "elm.text", "disables calls, messaging and all connections. To use Wi-Fi and Bluetooth, go to Settings.");
+
+       Evas_Object *left_btn = elm_button_add(popup);
+       elm_object_style_set(left_btn, "popup/circle/left");
+       evas_object_size_hint_weight_set(left_btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_part_content_set(popup, "button1", left_btn);
+       evas_object_smart_callback_add(left_btn, "clicked", __flight_mode_popup_cancel_cb, popup);
+
+       Evas_Object *left_icon_image = elm_image_add(left_btn);
+       elm_image_file_set(left_icon_image, IMAGEDIR"/tw_ic_popup_btn_delete.png", NULL);
+       evas_object_size_hint_weight_set(left_icon_image, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_part_content_set(left_btn, "elm.swallow.content", left_icon_image);
+       evas_object_show(left_icon_image);
+
+       Evas_Object *right_btn = elm_button_add(popup);
+       elm_object_style_set(right_btn, "popup/circle/right");
+       evas_object_size_hint_weight_set(right_btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_part_content_set(popup, "button2", right_btn);
+       evas_object_smart_callback_add(right_btn, "clicked", __flight_mode_popup_ok_cb, popup);
+
+       Evas_Object *right_icon_image = elm_image_add(right_btn);
+       elm_image_file_set(right_icon_image, IMAGEDIR"/tw_ic_popup_btn_check.png", NULL);
+       evas_object_size_hint_weight_set(right_icon_image, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_part_content_set(right_btn, "elm.swallow.content", right_icon_image);
+       evas_object_show(right_icon_image);
+
+       evas_object_move(popup, 0, 0);
+       evas_object_show(popup);
+
+       return popup;
+}
+
+static void __flight_mode_pressed_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       int is_flight_mode = false;
+
+       vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &is_flight_mode);
+       if (is_flight_mode == false) {
+               moments_hide();
+               __flight_mode_popup_view_create();
+       } else {
+               int ret = vconf_set_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, false);
+               if (ret < 0) {
+                       _E("Failed to set vconfkey(%s) : %d", VCONFKEY_TELEPHONY_FLIGHT_MODE, ret);
+               }
        }
 }
 
@@ -502,5 +627,28 @@ void __t__set_do_not_disturb_state(bool state)
                _E("Failed to set vconfkey(%s) : %d", VCONFKEY_SETAPPL_BLOCKMODE_WEARABLE_BOOL, ret);
        }
 }
+Evas_Object *__t__get_moments_flight_mode_popup(void)
+{
+       return s_info.flight_mode_popup;
+}
+Evas_Object *__t__get_moments_flight_mode_popup_layout(void)
+{
+       return s_info.flight_mode_layout;
+}
+void __t__set_flight_mode_state(bool state)
+{
+       int ret = vconf_set_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, state);
+       if (ret < 0) {
+               _E("Failed to set vconfkey(%s) : %d", VCONFKEY_TELEPHONY_FLIGHT_MODE, ret);
+       }
+}
+void __t__flight_mode_popup_cancel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       __flight_mode_popup_cancel_cb(data, obj, event_info);
+}
+void __t__flight_mode_popup_ok_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       __flight_mode_popup_ok_cb(data, obj, event_info);
+}
 #endif
 
index 26a010453bae88c321f23e0c6e5c3dc76edcb410..5f6df9731dc9bcac1c40444f389de64dec15509c 100755 (executable)
@@ -28,6 +28,7 @@ static void __group_set_up(void)
        __t__set_state_3g_with_phone_connection();
        __t__update_control_view();
        __t__set_do_not_disturb_state(false);
+       __t__set_flight_mode_state(false);
 
        TEST_GROUP_SET_UP_DONE(0.0, s_info.group);
 }
@@ -204,6 +205,147 @@ unit_case_func_t __continue_check_ok_button_clicked_on_do_not_disturb_popup(void
        TEST_CASE_DONE(s_info.group);
 }
 
+unit_case_func_t __continue_check_flight_mode(void * data);
+unit_case_func_t __case_check_flight_mode(void * data)
+{
+       Eina_List *button_list = __t__get_moments_control_button_list();
+       TEST_ASSERT_TRUE_UPGRADE(button_list != NULL);
+
+       Eina_List *l;
+       control_info_t *button = NULL;
+
+       EINA_LIST_FOREACH(button_list, l, button) {
+               if (button->index == MOMENTS_CONTROLS_FLIGHT_MODE) {
+                       break;
+               }
+       }
+
+       TEST_ASSERT_TRUE_UPGRADE(button != NULL);
+       s_info.current_button = button;
+
+       double val = 0.0;
+       TEST_ASSERT_EQUAL_STRING_UPGRADE("default", edje_object_part_state_get(elm_layout_edje_get(button->button_layout), CONTROLS_BAR, &val));
+
+       TEST_ASSERT_TRUE_UPGRADE(button->pressed != NULL);
+
+       button->pressed(NULL, NULL, NULL, NULL);
+
+       TEST_CASE_CONTINUE(0.3, __continue_check_flight_mode, NULL);
+}
+
+unit_case_func_t __continue_check_flight_mode(void * data)
+{
+       TEST_ASSERT_TRUE_UPGRADE(moments_get_visible() == false);
+
+       Evas_Object *popup = __t__get_moments_flight_mode_popup();
+       TEST_ASSERT_TRUE_UPGRADE(popup != NULL);
+       TEST_ASSERT_TRUE_UPGRADE(evas_object_visible_get(popup));
+
+       Evas_Object *layout = __t__get_moments_flight_mode_popup_layout();
+       const char *title_text = elm_object_part_text_get(layout, "elm.text.title");
+       TEST_ASSERT_TRUE_UPGRADE(title_text != NULL);
+       TEST_ASSERT_EQUAL_STRING_UPGRADE("Flight mode", title_text);
+
+       const char *contents_text = elm_object_part_text_get(layout, "elm.text");
+       TEST_ASSERT_TRUE_UPGRADE(contents_text != NULL);
+       TEST_ASSERT_EQUAL_STRING_UPGRADE("disables calls, messaging and all connections. To use Wi-Fi and Bluetooth, go to Settings.", contents_text);
+
+       Evas_Object *left_btn = elm_object_part_content_get(popup, "button1");
+       TEST_ASSERT_TRUE_UPGRADE(left_btn != NULL);
+
+       Evas_Object *left_btn_icon = elm_object_part_content_get(left_btn, "elm.swallow.content");
+       TEST_ASSERT_TRUE_UPGRADE(left_btn_icon != NULL);
+
+       const char *left_icon_image = NULL;
+       elm_image_file_get(left_btn_icon, &left_icon_image , NULL);
+       TEST_ASSERT_TRUE_UPGRADE(left_icon_image  != NULL);
+       TEST_ASSERT_EQUAL_STRING_UPGRADE(IMAGEDIR"/tw_ic_popup_btn_delete.png", left_icon_image);
+
+       Evas_Object *right_btn = elm_object_part_content_get(popup, "button2");
+       TEST_ASSERT_TRUE_UPGRADE(right_btn != NULL);
+
+       Evas_Object *right_btn_icon = elm_object_part_content_get(right_btn, "elm.swallow.content");
+       TEST_ASSERT_TRUE_UPGRADE(right_btn_icon != NULL);
+
+       const char *right_icon_image = NULL;
+       elm_image_file_get(right_btn_icon, &right_icon_image, NULL);
+       TEST_ASSERT_TRUE_UPGRADE(right_icon_image  != NULL);
+       TEST_ASSERT_EQUAL_STRING_UPGRADE(IMAGEDIR"/tw_ic_popup_btn_check.png", right_icon_image);
+
+       __t__flight_mode_popup_cancel_cb((void*)popup, NULL, NULL);
+
+       TEST_CASE_DONE(s_info.group);
+
+}
+
+unit_case_func_t __continue_check_cancel_button_clicked_on_flight_mode_popup(void * data);
+unit_case_func_t __case_check_cancel_button_clicked_on_flight_mode_popup(void * data)
+{
+       Evas_Object *popup = __t__get_moments_flight_mode_popup();
+       if (popup == NULL) {
+               TEST_ASSERT_TRUE_UPGRADE(s_info.current_button != NULL);
+
+               s_info.current_button->pressed(s_info.current_button, NULL, NULL, NULL);
+               TEST_CASE_CONTINUE(0.2, __case_check_cancel_button_clicked_on_flight_mode_popup, NULL);
+       }
+
+       TEST_ASSERT_TRUE_UPGRADE(popup != NULL);
+       TEST_ASSERT_TRUE_UPGRADE(evas_object_visible_get(popup));
+
+       __t__flight_mode_popup_cancel_cb((void*)popup, NULL, NULL);
+
+       TEST_CASE_CONTINUE(0.3, __continue_check_cancel_button_clicked_on_flight_mode_popup, NULL);
+}
+
+unit_case_func_t __continue_check_cancel_button_clicked_on_flight_mode_popup(void * data)
+{
+       Evas_Object *popup = __t__get_moments_flight_mode_popup();
+       TEST_ASSERT_TRUE_UPGRADE(popup == NULL);
+
+       double val = 0.0;
+       TEST_ASSERT_EQUAL_STRING_UPGRADE("default", edje_object_part_state_get(elm_layout_edje_get(s_info.current_button->button_layout), CONTROLS_BAR, &val));
+
+       TEST_ASSERT_TRUE_UPGRADE(moments_get_visible() == false);
+
+       TEST_CASE_DONE(s_info.group);
+}
+
+unit_case_func_t __continue_check_ok_button_clicked_on_flight_mode_popup(void * data);
+unit_case_func_t __case_check_ok_button_clicked_on_flight_mode_popup(void * data)
+{
+       Evas_Object *popup = __t__get_moments_flight_mode_popup();
+
+       if (popup == NULL) {
+               TEST_ASSERT_TRUE_UPGRADE(s_info.current_button != NULL);
+
+               s_info.current_button->pressed(s_info.current_button, NULL, NULL, NULL);
+               TEST_CASE_CONTINUE(0.2, __case_check_ok_button_clicked_on_flight_mode_popup, NULL);
+       }
+
+       TEST_ASSERT_TRUE_UPGRADE(popup != NULL);
+       TEST_ASSERT_TRUE_UPGRADE(evas_object_visible_get(popup));
+
+       double val = 0.0;
+       TEST_ASSERT_EQUAL_STRING_UPGRADE("default", edje_object_part_state_get(elm_layout_edje_get(s_info.current_button->button_layout), CONTROLS_BAR, &val));
+
+       __t__flight_mode_popup_ok_cb((void*)popup, NULL, NULL);
+
+       TEST_CASE_CONTINUE(0.3, __continue_check_ok_button_clicked_on_flight_mode_popup, NULL);
+}
+
+unit_case_func_t __continue_check_ok_button_clicked_on_flight_mode_popup(void * data)
+{
+       Evas_Object *popup = __t__get_moments_flight_mode_popup();
+       TEST_ASSERT_TRUE_UPGRADE(popup == NULL);
+
+       TEST_ASSERT_TRUE_UPGRADE(moments_get_visible() == false);
+
+       double val = 0.0;
+       TEST_ASSERT_EQUAL_STRING_UPGRADE("on", edje_object_part_state_get(elm_layout_edje_get(s_info.current_button->button_layout), CONTROLS_BAR, &val));
+
+       TEST_CASE_DONE(s_info.group);
+}
+
 void group_feature_moments_control_button_status_behavior(unit_group_t * group)
 {
        s_info.group = group;
@@ -214,6 +356,11 @@ void group_feature_moments_control_button_status_behavior(unit_group_t * group)
        TEST_CASE_ADD(s_info.group, __case_check_do_not_disturb, NULL);
        TEST_CASE_ADD(s_info.group, __case_check_cancel_button_clicked_on_do_not_disturb_popup, NULL);
        TEST_CASE_ADD(s_info.group, __case_check_ok_button_clicked_on_do_not_disturb_popup, NULL);
+
+       TEST_CASE_ADD(s_info.group, __case_check_flight_mode, NULL);
+       TEST_CASE_ADD(s_info.group, __case_check_cancel_button_clicked_on_flight_mode_popup, NULL);
+       TEST_CASE_ADD(s_info.group, __case_check_ok_button_clicked_on_flight_mode_popup, NULL);
+
        TEST_GROUP_TEAR_DOWN(s_info.group, __group_tear_down);
 
        TEST_GROUP_RUN(s_info.group);
index 98394ecca3c117fe666b2c0c79b8b9ba8858912b..ea63c8291c904563c32ab9d50ab77d6213c6a7f2 100755 (executable)
@@ -63,6 +63,12 @@ extern Evas_Object *__t__get_moments_do_not_disturb_popup_layout(void);
 extern void __t__do_not_disturb_popup_cancel_cb(void *data, Evas_Object *obj, void *event_info);
 extern void __t__do_not_disturb_popup_ok_cb(void *data, Evas_Object *obj, void *event_info);
 extern void __t__set_do_not_disturb_state(bool state);
+extern Evas_Object *__t__get_moments_flight_mode_popup(void);
+extern Evas_Object *__t__get_moments_flight_mode_popup_layout(void);
+extern void __t__set_flight_mode_state(bool state);
+extern void __t__flight_mode_popup_cancel_cb(void *data, Evas_Object *obj, void *event_info);
+extern void __t__flight_mode_popup_ok_cb(void *data, Evas_Object *obj, void *event_info);
+
 #endif
 #endif