Implement Focus UI
[framework/web/webkit-efl.git] / Source / WebKit2 / WebProcess / WebPage / WebPage.h
old mode 100644 (file)
new mode 100755 (executable)
index 47d3108..d90c3df
@@ -195,6 +195,42 @@ class WebUserMediaClient;
 
 #if ENABLE(TIZEN_ISF_PORT)
 class NativeWebKeyboardEvent;
+
+enum {
+    KeyPressCommandSetComposition,
+    KeyPressCommandConfirmComposition,
+    KeyPressCommandDeleteText
+};
+
+struct KeyPressCommand {
+    KeyPressCommand(int type) : type(type) { }
+
+    int type;
+};
+
+struct SetCompositionKeyPressCommand : public KeyPressCommand {
+    SetCompositionKeyPressCommand(const String& compositionString, const Vector<WebCore::CompositionUnderline>& underlines, uint64_t cursorPosition)
+        : KeyPressCommand(KeyPressCommandSetComposition), compositionString(compositionString), underlines(underlines), cursorPosition(cursorPosition) { }
+
+    String compositionString;
+    Vector<WebCore::CompositionUnderline> underlines;
+    uint64_t cursorPosition;
+};
+
+struct ConfirmCompositionKeyPressCommand : public KeyPressCommand {
+    ConfirmCompositionKeyPressCommand(const String& compositionString)
+        : KeyPressCommand(KeyPressCommandConfirmComposition), compositionString(compositionString) { }
+
+    String compositionString;
+};
+
+struct DeleteTextKeyPressCommand : public KeyPressCommand {
+    DeleteTextKeyPressCommand(int offset, int count)
+        : KeyPressCommand(KeyPressCommandDeleteText), offset(offset), count(count) { }
+
+    int offset;
+    int count;
+};
 #endif
 
 class WebPage : public APIObject, public CoreIPC::MessageSender<WebPage> {
@@ -236,6 +272,9 @@ public:
 #if ENABLE(TIZEN_ISF_PORT)
     void didCancelComposition(WebCore::Node*);
 
+    void prepareKeyDownEvent();
+    void swapKeyPressCommands(Vector<OwnPtr<KeyPressCommand> >&);
+
     void getCursorOffset(int&);
     void getSurroundingTextAndCursorOffset(String&, int&);
     void getSelectionRect(bool, WebCore::IntRect&);
@@ -250,8 +289,12 @@ public:
        void createPagesToPDF(const WebCore::IntSize&, const WebCore::IntSize&, const String&);
 #endif
 #if ENABLE(TIZEN_WEBKIT2_HIT_TEST)
+#if ENABLE(TOUCH_ADJUSTMENT)
+    void hitTestResultAtPoint(const WebCore::IntPoint&, int hitTestMode, const WebCore::IntSize&, WebHitTestResult::Data&);
+#else
     void hitTestResultAtPoint(const WebCore::IntPoint&, int hitTestMode, WebHitTestResult::Data&);
 #endif
+#endif
 
 #if ENABLE(TIZEN_WEB_STORAGE)
     void getStorageQuotaBytes(uint64_t callbackID);
@@ -297,9 +340,14 @@ public:
     // FIXME: We could genericize these into a DrawingArea client interface. Would that be beneficial?
     void drawRect(WebCore::GraphicsContext&, const WebCore::IntRect&);
 #if ENABLE(TIZEN_WEBKIT2_TEXT_SELECTION)
-    void selectClosestWord(const WebCore::IntPoint&, bool isStartedTextSelectionFromOutside, bool& result);
-    void setLeftSelection(const WebCore::IntPoint&, bool& result);
-    void setRightSelection(const WebCore::IntPoint&, bool& result);
+    enum HandleMovingDirection {
+        HandleMovingDirectionNone = 0,
+        HandleMovingDirectionNormal,
+        HandleMovingDirectionReverse,
+    };
+    void selectClosestWord(const WebCore::IntPoint&, bool& result);
+    void setLeftSelection(const WebCore::IntPoint&, const int direction, int& result);
+    void setRightSelection(const WebCore::IntPoint&, const int direction, int& result);
     void getSelectionHandlers(WebCore::IntRect& leftRect, WebCore::IntRect& rightRect);
     void getSelectionText(String& result);
     void selectionRangeClear(bool& result);
@@ -753,9 +801,11 @@ public:
 #endif
 
 #if ENABLE(TIZEN_SCREEN_READER)
-    void raiseTapEvent(const WebCore::IntPoint&, const WebCore::IntPoint&);
     void moveScreenReaderFocus(bool, bool&);
     void moveScreenReaderFocusByPoint(const WebCore::IntPoint&);
+    void clearScreenReaderFocus();
+    void raiseTapEvent(const WebCore::IntPoint&, const WebCore::IntPoint&, bool&);
+    void adjustScreenReaderFocusedObjectValue(bool);
     void recalcScreenReaderFocusRect();
     void updateScreenReaderFocus(WebCore::RenderObject*);
     void clearScreenReader();
@@ -765,6 +815,10 @@ public:
     WebCore::IntRect nodeRect(WebCore::Node*) const;
 #endif
 
+#if ENABLE(TIZEN_SCREEN_READER) || ENABLE(TIZEN_FOCUS_UI)
+    void didChangeFocusedRect(WebCore::Node*);
+#endif
+
 #if ENABLE(TIZEN_WEBKIT2_POPUP_INTERNAL)
     void notifyTransitionToCommitted(bool);
 #endif
@@ -789,6 +843,10 @@ public:
     void didChangeContents(const WebCore::IntRect&);
 #endif
 
+#if ENABLE(TIZEN_FOCUS_UI)
+    void setSpatialNavigationEnabled(bool);
+#endif
+
 private:
     WebPage(uint64_t pageID, const WebPageCreationParameters&);
 
@@ -1143,9 +1201,18 @@ private:
     OwnPtr<ScreenReader> m_screenReader;
 #endif
 
+#if ENABLE(TIZEN_SCREEN_READER) || ENABLE(TIZEN_FOCUS_UI)
+    WebCore::IntRect m_focusedRect;
+#endif
+
 #if ENABLE(TIZEN_WEBKIT2_TEXT_SELECTION)
     EditorState m_editorState;
 #endif
+
+#if ENABLE(TIZEN_ISF_PORT)
+    bool m_prepareKeyDownEvent;
+    Vector<OwnPtr<KeyPressCommand> > m_keyPressCommands;
+#endif
 };
 
 #if ENABLE(TIZEN_NATIVE_MEMORY_SNAPSHOT)