Implement that a text selection handle can be moved over another text selection handle.
[framework/web/webkit-efl.git] / Source / WebKit2 / WebProcess / WebPage / WebPage.h
index 1ffeb34..8c69ad3 100755 (executable)
@@ -113,6 +113,14 @@ OBJC_CLASS WKAccessibilityWebPageObject;
 #include "ArgumentCodersTizen.h"
 #endif
 
+#if ENABLE(TIZEN_SCREEN_READER)
+#include "ScreenReader.h"
+#endif
+
+#if ENABLE(TIZEN_WEBKIT2_TEXT_SELECTION)
+#include "EditorState.h"
+#endif
+
 namespace CoreIPC {
     class ArgumentDecoder;
     class Connection;
@@ -187,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> {
@@ -221,17 +265,20 @@ public:
     void centerSelectionInVisibleArea();
 
 #if PLATFORM(EFL)
-    void confirmComposition(const String& compositionString);
-    void setComposition(const WTF::String& compositionString, const WTF::Vector<WebCore::CompositionUnderline>& underlines, uint64_t cursorPosition);
 #if ENABLE(TIZEN_TEXT_CARET_HANDLING_WK2)
     bool setCaretPosition(const WebCore::IntPoint&);
     void getCaretPosition(WebCore::IntRect&);
 #endif
 #if ENABLE(TIZEN_ISF_PORT)
-    void getCursorOffsetPosition(int& offset);
-    void getContentOfPosition(String& content);
-    void deleteSurroundingPosition(bool& result);
+    void didCancelComposition(WebCore::Node*);
+
+    void prepareKeyDownEvent();
+    void swapKeyPressCommands(Vector<OwnPtr<KeyPressCommand> >&);
+
+    void getCursorOffset(int&);
+    void getSurroundingTextAndCursorOffset(String&, int&);
     void getSelectionRect(bool, WebCore::IntRect&);
+    void deleteSurroundingText(int, int);
 #endif
     void scrollMainFrameBy(const WebCore::IntSize&);
     void scrollMainFrameTo(const WebCore::IntPoint&);
@@ -256,6 +303,10 @@ public:
 
     void suspendJavaScriptAndResources();
     void resumeJavaScriptAndResources();
+
+    void suspendAnimations();
+    void resumeAnimations();
+
 #if ENABLE(TIZEN_SYNC_REQUEST_ANIMATION_FRAME)
     void suspendAnimationController();
     void resumeAnimationController();
@@ -265,7 +316,7 @@ public:
     void resumePlugin();
 #endif
 #endif
-#if ENABLE(TIZEN_WEBKIT2_REMOTE_WEB_INSPECTOR)
+#if ENABLE(TIZEN_REMOTE_WEB_INSPECTOR)
     void startInspectorServer(uint32_t port,  uint32_t& assignedPort);
     void stopInspectorServer(bool& result);
 #endif
@@ -285,23 +336,32 @@ 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);
+    void selectionClearAllSelection(WebCore::Frame* frame);
+    void scrollContentByCharacter(const WebCore::IntPoint&, int direction, bool& result);
+    void scrollContentByLine(const WebCore::IntPoint&, int direction, bool& result);
+#endif
+
+#if ENABLE(TIZEN_OFFLINE_PAGE_SAVE)
+    void startOfflinePageSave(String subresourceFolderName);
 #endif
+
 #if ENABLE(TIZEN_WEBKIT2_CONTEXT_MENU_TEXT_SELECTION_MODE)
     void selectLink(WebCore::IntPoint positionForSelection, bool& result);
 #endif
 
     void drawPageOverlay(WebCore::GraphicsContext&, const WebCore::IntRect&);
     void layoutIfNeeded();
-#if ENABLE(TIZEN_RECORDING_SURFACE_SET)
-    void recordingSurfaceSetEnableSet(bool enable);
-    void recordingSurfaceSetEnableURL(const String&);
-#endif
 
     // -- Called from WebCore clients.
 #if PLATFORM(MAC)
@@ -331,6 +391,9 @@ public:
 
     WebOpenPanelResultListener* activeOpenPanelResultListener() const { return m_activeOpenPanelResultListener.get(); }
     void setActiveOpenPanelResultListener(PassRefPtr<WebOpenPanelResultListener>);
+#if OS(TIZEN)
+    void cancelForOpenPanel();
+#endif
 
     // -- Called from WebProcess.
     void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
@@ -377,6 +440,9 @@ public:
     PassRefPtr<Plugin> createPlugin(WebFrame*, WebCore::HTMLPlugInElement*, const Plugin::Parameters&);
 
     EditorState editorState() const;
+#if ENABLE(TIZEN_WEBKIT2_TEXT_SELECTION)
+    void setEditorState(const EditorState& editorState) { m_editorState = editorState;}
+#endif
 
     String renderTreeExternalRepresentation() const;
     uint64_t renderTreeSize() const;
@@ -564,7 +630,10 @@ public:
     void gestureWillBegin(const WebCore::IntPoint&, bool& canBeginPanning);
     void gestureDidScroll(const WebCore::IntSize&);
     void gestureDidEnd();
-
+#elif PLATFORM(EFL)
+    void confirmComposition(const String& compositionString);
+    void setComposition(const WTF::String& compositionString, const WTF::Vector<WebCore::CompositionUnderline>& underlines, uint64_t cursorPosition);
+    void cancelComposition();
 #elif PLATFORM(GTK)
     void updateAccessibilityTree();
     bool handleMousePressedEvent(const WebCore::PlatformMouseEvent&);
@@ -629,6 +698,7 @@ public:
 #if ENABLE(TIZEN_SUPPORT_WEBAPP_META_TAG)
     void getWebAppCapable(uint64_t callbackID);
     void getWebAppIconURL(uint64_t callbackID);
+    void getWebAppIconURLs(uint64_t callbackID);
 #endif
 
     void setMediaVolume(float);
@@ -689,7 +759,7 @@ public:
     void setVisibilityState(int visibilityState, bool isInitialState);
 #endif
 
-#if ENABLE(TIZEN_INPUT_TAG_EXTENSION)
+#if ENABLE(TIZEN_INPUT_TAG_EXTENSION) || ENABLE(TIZEN_WEBKIT2_FORM_DATABASE)
     void setFocusedInputElementValue(const String& inputValue);
     void getFocusedInputElementValue(String& inputValue);
 #endif
@@ -714,17 +784,6 @@ public:
     WebCore::HTTPHeaderMap customHeaders();
 #endif
 
-#if ENABLE(TIZEN_WEBKIT2_GET_TEXT_STYLE_FOR_SELECTION)
-    void getTextStyleStateForSelection();
-#endif
-
-#if ENABLE(TIZEN_RECORDING_SURFACE_SET)
-    bool m_recordingSurfaceSetEnable;
-    bool m_recordingSurfaceSetLoadStart;
-    bool m_recordingSurfaceSetLoadFinished;
-    bool m_recordingSurfaceSetSettings;
-#endif
-
 #if PLATFORM(GTK) && USE(TEXTURE_MAPPER_GL)
     uint64_t nativeWindowHandle() { return m_nativeWindowHandle; }
 #endif
@@ -733,6 +792,49 @@ public:
     void didChangeSelectedIndexForActivePopupMenuMultiple(Vector<int32_t>);
 #endif
 
+#if ENABLE(TIZEN_LINK_MAGNIFIER)
+    void getLinkMagnifierRect(const WebCore::IntPoint&, const WebCore::IntSize&);
+#endif
+
+#if ENABLE(TIZEN_SCREEN_READER)
+    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();
+#endif
+
+#if ENABLE(TIZEN_SCREEN_READER) || ENABLE(TIZEN_FOCUS_UI) || ENABLE(TIZEN_WEBKIT2_TEXT_SELECTION)
+    WebCore::IntRect nodeRect(WebCore::Node*) const;
+#endif
+
+#if ENABLE(TIZEN_WEBKIT2_POPUP_INTERNAL)
+    void notifyTransitionToCommitted(bool);
+#endif
+
+#if ENABLE(TIZEN_CSP)
+    void setContentSecurityPolicy(const String& policy, uint32_t headerType);
+#endif
+
+#if ENABLE(TIZEN_INDEXED_DATABASE)
+    void setIndexedDatabaseDirectory(const String& path);
+#endif
+
+#if ENABLE(TIZEN_WEB_STORAGE)
+    void setLocalStorageDirectory(const String& path);
+#endif
+
+#if ENABLE(TIZEN_USE_SETTINGS_FONT)
+    void useSettingsFont();
+#endif
+
+#if OS(TIZEN)
+    void didChangeContents(const WebCore::IntRect&);
+#endif
+
 private:
     WebPage(uint64_t pageID, const WebPageCreationParameters&);
 
@@ -823,6 +925,9 @@ private:
     void viewWillEndLiveResize();
 
     void getContentsAsString(uint64_t callbackID);
+#if ENABLE(MHTML)
+    void getContentsAsMHTMLData(uint64_t callbackID, bool useBinaryEncoding);
+#endif
     void getMainResourceDataOfFrame(uint64_t frameID, uint64_t callbackID);
     void getResourceDataFromFrame(uint64_t frameID, const String& resourceURL, uint64_t callbackID);
     void getRenderTreeExternalRepresentation(uint64_t callbackID);
@@ -860,6 +965,9 @@ private:
     void didRemoveEditCommand(uint64_t commandID);
 
     void findString(const String&, uint32_t findOptions, uint32_t maxMatchCount);
+    void findStringMatches(const String&, uint32_t findOptions, uint32_t maxMatchCount);
+    void getImageForFindMatch(uint32_t matchIndex);
+    void selectFindMatch(uint32_t matchIndex);
     void hideFindUI();
     void countStringMatches(const String&, uint32_t findOptions, uint32_t maxMatchCount);
 
@@ -1074,7 +1182,21 @@ private:
 #if ENABLE(TIZEN_SYNC_REQUEST_ANIMATION_FRAME)
     bool m_suspendedAnimationController;
 #endif
+
     WebInspectorClient* m_inspectorClient;
+
+#if ENABLE(TIZEN_SCREEN_READER)
+    OwnPtr<ScreenReader> m_screenReader;
+#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)