Revert "Revert "Revert "Fix the problem that the screen of the application does not...
[framework/web/webkit-efl.git] / Source / WebKit2 / UIProcess / API / efl / ewk_view.cpp
index 5e1ef7f..a357e8d 100755 (executable)
@@ -246,11 +246,6 @@ void _ewk_orientation_unlock(Ewk_View_Smart_Data *sd);
 static Eina_Bool _ewk_view_input_picker_show(Ewk_View_Smart_Data*, Ewk_Input_Type, const char* inputValue);
 #endif
 
-#if ENABLE(TIZEN_DATALIST_ELEMENT)
-static Eina_Bool _ewk_view_data_list_show(Ewk_View_Smart_Data*, Ewk_Input_Type, Eina_List*);
-static Eina_Bool _ewk_view_data_list_hide(Ewk_View_Smart_Data*, Ewk_Input_Type);
-#endif
-
 #if ENABLE(TIZEN_INPUT_COLOR_PICKER)
 static Eina_Bool _ewk_input_picker_color_request(Ewk_View_Smart_Data*, int, int, int, int);
 static Eina_Bool _ewk_input_picker_color_dismiss(Ewk_View_Smart_Data*);
@@ -390,16 +385,38 @@ static Eina_Bool _ewk_view_smart_mouse_move(Ewk_View_Smart_Data* smartData, cons
     return true;
 }
 
+#if ENABLE(TIZEN_FOCUS_UI)
+bool isFocusUIActivationKeyname(const char* key)
+{
+    return !strcmp(key, "Up") || !strcmp(key, "Down") || !strcmp(key, "Left") || !strcmp(key, "Right") || !strcmp(key, "Tab");
+}
+#endif
+
 static Eina_Bool _ewk_view_smart_key_down(Ewk_View_Smart_Data* smartData, const Evas_Event_Key_Down* downEvent)
 {
     EWK_VIEW_IMPL_GET_OR_RETURN(smartData, impl, false);
 
+#if ENABLE(TIZEN_FOCUS_UI)
+    if (InputMethodContextEfl::shouldUseExternalKeyboard() && !impl->page()->focusUIEnabled()) {
+        if (isFocusUIActivationKeyname(downEvent->keyname))
+            impl->page()->setFocusUIEnabled(true);
+        return false;
+    }
+#endif
+
     bool isFiltered = false;
     InputMethodContextEfl* inputMethodContext = impl->inputMethodContext();
     if (inputMethodContext)
         inputMethodContext->handleKeyDownEvent(downEvent, &isFiltered);
 
+#if ENABLE(TIZEN_ISF_PORT)
+    NativeWebKeyboardEvent nativeEvent(downEvent, isFiltered);
+    nativeEvent.setInputMethodContextID(impl->pageProxy->editorState().inputMethodContextID);
+    impl->pageProxy->handleKeyboardEvent(nativeEvent);
+#else
     impl->pageProxy->handleKeyboardEvent(NativeWebKeyboardEvent(downEvent, isFiltered));
+#endif
+
     return true;
 }
 
@@ -407,6 +424,11 @@ static Eina_Bool _ewk_view_smart_key_up(Ewk_View_Smart_Data* smartData, const Ev
 {
     EWK_VIEW_IMPL_GET_OR_RETURN(smartData, impl, false);
 
+#if ENABLE(TIZEN_FOCUS_UI)
+    if (InputMethodContextEfl::shouldUseExternalKeyboard() && !impl->page()->focusUIEnabled())
+        return false;
+#endif
+
     impl->pageProxy->handleKeyboardEvent(NativeWebKeyboardEvent(upEvent));
     return true;
 }
@@ -928,6 +950,9 @@ static void _ewk_view_smart_resize(Evas_Object* ewkView, Evas_Coord width, Evas_
     EWK_VIEW_IMPL_GET_OR_RETURN(smartData, impl);
 #if ENABLE(TIZEN_WEBKIT2_TILED_AC)
     evas_object_image_native_surface_set(smartData->image, 0);
+
+    Ecore_Evas* ee = ecore_evas_ecore_evas_get(smartData->base.evas);
+    impl->pageClient->updateViewportSize(IntSize(width, height), ecore_evas_rotation_get(ee));
 #if ENABLE(TIZEN_RUNTIME_BACKEND_SELECTION)
     if (!ewk_view_is_opengl_backend(ewkView))
         _ewk_view_composite(smartData);
@@ -997,7 +1022,7 @@ static void _ewk_view_smart_calculate(Evas_Object* ewkView)
 #endif
 #if ENABLE(TIZEN_WEBKIT2_TILED_BACKING_STORE) && !ENABLE(TIZEN_WEBKIT2_EFL_WTR)
                 Ecore_Evas* ee = ecore_evas_ecore_evas_get(smartData->base.evas);
-                impl->pageClient->updateViewportSize(IntSize(width, height));
+                impl->pageClient->updateVisibleContentRectSize(IntSize(width, height));
                 if (ewk_view_is_opengl_backend(ewkView))
                     impl->pageClient->displayViewport();
 #endif
@@ -1006,15 +1031,6 @@ static void _ewk_view_smart_calculate(Evas_Object* ewkView)
             impl->pageClient->frameRectChanged();
 #endif
         }
-
-#if ENABLE(TIZEN_WEBKIT2_SUSPEND_LOADING_URL)
-        // Load URL if it's suspended
-        if (impl->suspendedURL()) {
-            TIZEN_LOGI("load suspended URL: %s, time: %f", impl->suspendedURL() ? impl->suspendedURL() : "NULL", ecore_time_get() * 1000);
-            ewk_view_url_set(ewkView, impl->suspendedURL());
-            impl->setSuspendedURL(0);
-        }
-#endif
 #endif // #if OS(TIZEN)
     }
 
@@ -1032,7 +1048,10 @@ static void _ewk_view_smart_calculate(Evas_Object* ewkView)
         impl->pageClient->frameRectChanged();
 #endif
 #if ENABLE(TIZEN_WEBKIT2_TEXT_SELECTION)
-        impl->pageClient->updateTextSelectionHandlesAndContextMenu(true);
+        if (impl->pageClient->isTextSelectionMode()) {
+            impl->pageClient->updateTextSelectionHandlesAndContextMenu(false);
+            impl->pageClient->requestToShowTextSelectionHandlesAndContextMenu();
+        }
 #endif
 #if ENABLE(TIZEN_WEBKIT2_FOCUS_RING)
         if (impl->focusRing())
@@ -1164,10 +1183,6 @@ Eina_Bool ewk_view_smart_class_set(Ewk_View_Smart_Class* api)
 #if ENABLE(TIZEN_INPUT_TAG_EXTENSION)
     api->input_picker_show = _ewk_view_input_picker_show;
 #endif
-#if ENABLE(TIZEN_DATALIST_ELEMENT)
-    api->data_list_show = _ewk_view_data_list_show;
-    api->data_list_hide = _ewk_view_data_list_hide;
-#endif
 #if ENABLE(TIZEN_SCREEN_ORIENTATION_SUPPORT_INTERNAL)
     api->orientation_lock = _ewk_orientation_lock;
     api->orientation_unlock = _ewk_orientation_unlock;
@@ -1420,15 +1435,6 @@ Eina_Bool ewk_view_url_set(Evas_Object* ewkView, const char* url)
     EWK_VIEW_IMPL_GET_OR_RETURN(smartData, impl, false);
     EINA_SAFETY_ON_NULL_RETURN_VAL(url, false);
 
-#if ENABLE(TIZEN_WEBKIT2_SUSPEND_LOADING_URL)
-    // Suspend loading URL before view size is calculated
-    if (!smartData->view.w || !smartData->view.h) {
-        impl->setSuspendedURL(url);
-        TIZEN_LOGI("suspended URL: %s, time: %f", impl->suspendedURL() ? impl->suspendedURL() : "NULL", ecore_time_get() * 1000);
-        return true;
-    }
-#endif
-
     impl->pageProxy->loadURL(String::fromUTF8(url));
     impl->informURLChange();
 
@@ -1980,24 +1986,6 @@ static Eina_Bool _ewk_view_input_picker_show(Ewk_View_Smart_Data* smartData, Ewk
 }
 #endif
 
-#if ENABLE(TIZEN_DATALIST_ELEMENT)
-static Eina_Bool _ewk_view_data_list_show(Ewk_View_Smart_Data* smartData, Ewk_Input_Type inputType, Eina_List* optionList)
-{
-    EWK_VIEW_IMPL_GET_OR_RETURN(smartData, impl, false);
-
-    impl->inputPicker->showDataList(inputType, optionList);
-    return true;
-}
-
-static Eina_Bool _ewk_view_data_list_hide(Ewk_View_Smart_Data* smartData, Ewk_Input_Type inputType)
-{
-    EWK_VIEW_IMPL_GET_OR_RETURN(smartData, impl, false);
-
-    impl->inputPicker->hideDataList(inputType);
-    return true;
-}
-#endif
-
 #if ENABLE(TIZEN_INPUT_COLOR_PICKER)
 static Eina_Bool _ewk_input_picker_color_request(Ewk_View_Smart_Data* smartData, int r, int g, int b, int a)
 {
@@ -3981,7 +3969,8 @@ Eina_Bool ewk_view_text_selection_range_get(Evas_Object* ewkView, Eina_Rectangle
 
     IntRect leftSelectionRect;
     IntRect rightSelectionRect;
-    if (!impl->pageProxy->getSelectionHandlers(leftSelectionRect, rightSelectionRect)) {
+    int selectionDirection = 1;
+    if (!impl->pageProxy->getSelectionHandlers(leftSelectionRect, rightSelectionRect, selectionDirection)) {
         leftRect->x = 0;
         leftRect->y = 0;
         leftRect->w = 0;
@@ -4076,6 +4065,16 @@ void ewkViewGetWindowFrame(Evas_Object* ewkView, int *x, int *y, int *w, int *h)
 }
 #endif
 
+void ewk_view_current_target_input_element_value_set(Evas_Object* ewkView, const char* value)
+{
+#if ENABLE(TIZEN_INPUT_TAG_EXTENSION)
+    EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData);
+    EWK_VIEW_IMPL_GET_OR_RETURN(smartData, impl);
+
+    impl->pageProxy->setCurrentTargetInputElementValue(String::fromUTF8(value));
+#endif // ENABLE(TIZEN_INPUT_TAG_EXTENSION)
+}
+
 void ewk_view_focused_input_element_value_set(Evas_Object* ewkView, const char* value)
 {
 #if ENABLE(TIZEN_INPUT_TAG_EXTENSION)
@@ -4099,51 +4098,6 @@ const char* ewk_view_focused_input_element_value_get(Evas_Object* ewkView)
 #endif // ENABLE(TIZEN_INPUT_TAG_EXTENSION)
 }
 
-#if ENABLE(TIZEN_DATALIST_ELEMENT)
-void ewkViewDataListShowRequest(Evas_Object* ewkView, Ewk_Input_Type inputType, Vector<String> optionList)
-{
-    EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData);
-    EWK_VIEW_IMPL_GET_OR_RETURN(smartData, impl);
-    EINA_SAFETY_ON_NULL_RETURN(smartData->api);
-    EINA_SAFETY_ON_NULL_RETURN(smartData->api->data_list_show);
-
-    if (impl->dataList)
-        ewkViewDataListHideRequest(ewkView, inputType);
-
-    for (Vector<String>::const_iterator it = optionList.begin(); it != optionList.end(); ++it) {
-        String value = *it;
-        impl->dataList = eina_list_append(impl->dataList, eina_stringshare_add(value.utf8().data()));
-    }
-
-    smartData->api->data_list_show(smartData, inputType, impl->dataList);
-}
-
-void ewkViewDataListHideRequest(Evas_Object* ewkView, Ewk_Input_Type inputType)
-{
-    EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData);
-    EWK_VIEW_IMPL_GET_OR_RETURN(smartData, impl);
-    EINA_SAFETY_ON_NULL_RETURN(impl->dataList);
-    EINA_SAFETY_ON_NULL_RETURN(smartData->api);
-    EINA_SAFETY_ON_NULL_RETURN(smartData->api->data_list_hide);
-
-    impl->deleteDataList();
-
-    smartData->api->data_list_hide(smartData, inputType);
-}
-#endif
-
-void ewk_view_data_list_close(Evas_Object* ewkView, const char* value)
-{
-#if ENABLE(TIZEN_DATALIST_ELEMENT)
-    EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData);
-    EWK_VIEW_IMPL_GET_OR_RETURN(smartData, impl);
-
-    impl->deleteDataList();
-
-    ewk_view_focused_input_element_value_set(ewkView, value);
-#endif
-}
-
 Eina_Bool ewk_view_horizontal_panning_hold_get(Evas_Object* ewkView)
 {
 #if ENABLE(TIZEN_GESTURE)
@@ -4245,10 +4199,8 @@ void ewk_view_touch_event_handler_result_set(Evas_Object* ewkView, WebKit::WebEv
             evas_object_smart_callback_call(ewkView, "touchmove,handled", static_cast<void*>(&wasHandled));
         impl->wasHandledTouchMove = wasHandled;
     } else if (type == WebEvent::TouchEnd && !impl->exceedTouchMoveThreshold) {
-        if (!wasHandled) {
-            impl->gestureClient->setMovingEnabled(!wasHandled);
+        if (!wasHandled)
             impl->gestureClient->setTapEnabled(!wasHandled);
-        }
 #if ENABLE(TIZEN_ISF_PORT)
         else if (impl->pageProxy->isViewVisible()) {
             IntPoint pointForHitTest = impl->transformFromScene().mapPoint(IntPoint(impl->touchDownPoint.x, impl->touchDownPoint.y));
@@ -4398,7 +4350,7 @@ Eina_Bool ewk_view_feed_touch_event(Evas_Object* ewkView, Ewk_Touch_Event_Type t
 
 #if ENABLE(TIZEN_FOCUS_UI)
     if (type == EWK_TOUCH_START)
-        impl->page()->setSpatialNavigationEnabled(false);
+        impl->page()->setFocusUIEnabled(false);
 #endif
 
 #if ENABLE(TIZEN_WEBKIT2_TEXT_SELECTION) && ENABLE(TIZEN_WEBKIT2_FOR_MOVING_TEXT_SELECTION_HANDLE_FROM_OSP)
@@ -4875,7 +4827,7 @@ void ewk_view_rotation_prepare(Evas_Object* ewkView, int angle)
     impl->pageProxy->drawingArea()->setSize(IntSize(width, height), IntSize());
     impl->pageClient->setWaitFrameOfNewViewortSize(true);
     ewk_view_suspend(ewkView);
-    impl->pageClient->updateViewportSize(IntSize(width, height));
+    impl->pageClient->updateViewportSize(IntSize(width, height), angle);
 #endif
 }