first bit of implementation for the textinputcontroller.
authorlars <lars@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 24 Oct 2007 12:32:25 +0000 (12:32 +0000)
committerlars <lars@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 24 Oct 2007 12:32:25 +0000 (12:32 +0000)
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@26968 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKitTools/ChangeLog
WebKitTools/DumpRenderTree/qt/DumpRenderTree.cpp
WebKitTools/DumpRenderTree/qt/DumpRenderTree.h
WebKitTools/DumpRenderTree/qt/jsobjects.cpp
WebKitTools/DumpRenderTree/qt/jsobjects.h

index c7af9ae042867a36205698b573b17606b5c87c45..1014a5578e16f086454091bdeb96ca78f5af1b52 100644 (file)
@@ -1,3 +1,17 @@
+2007-10-24  Lars Knoll  <lars@trolltech.com>
+
+        Reviewed by Simon.
+
+        first bit of implementation for the textinputcontroller.
+
+        * DumpRenderTree/qt/DumpRenderTree.cpp:
+        (WebCore::DumpRenderTree::DumpRenderTree):
+        * DumpRenderTree/qt/DumpRenderTree.h:
+        * DumpRenderTree/qt/jsobjects.cpp:
+        (TextInputController::TextInputController):
+        (TextInputController::doCommand):
+        * DumpRenderTree/qt/jsobjects.h:
+
 2007-10-24  Lars Knoll  <lars@trolltech.com>
 
         Reviewed by Simon.
index 5074606b46701f82533b375447e061475c62764c..b665f8da3657d1cd4b7723d1f0c0c0cf1f1f0f00 100644 (file)
@@ -135,6 +135,7 @@ DumpRenderTree::DumpRenderTree()
             SLOT(titleChanged(const QString&)));
 
     m_eventSender = new EventSender(m_page);
+    m_textInputController = new TextInputController(m_page);
 
     QObject::connect(this, SIGNAL(quit()), qApp, SLOT(quit()), Qt::QueuedConnection);
     QFocusEvent event(QEvent::FocusIn, Qt::ActiveWindowFocusReason);
index 349aefa6f8d6e1fbf6f30169c5660c1d96a176dc..4e0f9b7d6ec740379dd109f309fd30239d6bd7f9 100644 (file)
@@ -40,6 +40,7 @@ class QWebFrame;
 
 class LayoutTestController;
 class EventSender;
+class TextInputController;
 
 namespace WebCore {
 
@@ -60,6 +61,7 @@ public:
 
     LayoutTestController *layoutTestController() const { return m_controller; }
     EventSender *eventSender() const { return m_eventSender; }
+    TextInputController *textInputController() const { return m_textInputController; }
 
     QWebPage *createWindow();
     int windowCount() const;
@@ -82,6 +84,7 @@ private:
     QWebPage *m_page;
 
     EventSender *m_eventSender;
+    TextInputController *m_textInputController;
 
     QFile *m_stdin;
     QSocketNotifier* m_notifier;
index 07d619abbf9ce772ff24d3e594c4455353c989f5..568816d895ff1444798ce74d12e7762610f24104 100644 (file)
@@ -30,6 +30,7 @@
 #include <qwebframe.h>
 #include <qevent.h>
 #include <qapplication.h>
+#include <qevent.h>
 
 #include "DumpRenderTree.h"
 extern void qt_dump_editing_callbacks(bool b);
@@ -221,3 +222,91 @@ redo:
         return frame;
     return 0;
 }
+
+
+TextInputController::TextInputController(QWebPage *parent)
+{
+}
+
+void TextInputController::doCommand(const QString &command)
+{
+    Qt::KeyboardModifiers modifiers = Qt::NoModifier;
+    int keycode = 0;
+    if (command == "moveBackwardAndModifySelection:") {
+        modifiers |= Qt::ShiftModifier;
+        keycode = Qt::Key_Left;
+    } else if(command =="moveDown:") {
+        keycode = Qt::Key_Down;
+    } else if(command =="moveDownAndModifySelection:") {
+        modifiers |= Qt::ShiftModifier;
+        keycode = Qt::Key_Down;
+    } else if(command =="moveForward:") {
+        keycode = Qt::Key_Right;
+    } else if(command =="moveForwardAndModifySelection:") {
+        modifiers |= Qt::ShiftModifier;
+        keycode = Qt::Key_Right;
+    } else if(command =="moveLeft:") {
+        keycode = Qt::Key_Left;
+    } else if(command =="moveLeftAndModifySelection:") {
+        modifiers |= Qt::ShiftModifier;
+        keycode = Qt::Key_Left;
+    } else if(command =="moveRight:") {
+        keycode = Qt::Key_Right;
+    } else if(command =="moveRightAndModifySelection:") {
+        modifiers |= Qt::ShiftModifier;
+        keycode = Qt::Key_Right;
+    } else if(command =="moveToBeginningOfDocument:") {
+        modifiers |= Qt::ControlModifier;
+        keycode = Qt::Key_Home;
+    } else if(command =="moveToBeginningOfLine:") {
+        keycode = Qt::Key_Home;
+//     } else if(command =="moveToBeginningOfParagraph:") {
+    } else if(command =="moveToEndOfDocument:") {
+        modifiers |= Qt::ControlModifier;
+        keycode = Qt::Key_End;
+    } else if(command =="moveToEndOfLine:") {
+        keycode = Qt::Key_End;
+//     } else if(command =="moveToEndOfParagraph:") {
+    } else if(command =="moveUp:") {
+        keycode = Qt::Key_Up;
+    } else if(command =="moveUpAndModifySelection:") {
+        modifiers |= Qt::ShiftModifier;
+        keycode = Qt::Key_Up;
+    } else if(command =="moveWordBackward:") {
+        modifiers |= Qt::ControlModifier;
+        keycode = Qt::Key_Up;
+    } else if(command =="moveWordBackwardAndModifySelection:") {
+        modifiers |= Qt::ShiftModifier;
+        modifiers |= Qt::ControlModifier;
+        keycode = Qt::Key_Left;
+    } else if(command =="moveWordForward:") {
+        modifiers |= Qt::ControlModifier;
+        keycode = Qt::Key_Right;
+    } else if(command =="moveWordForwardAndModifySelection:") {
+        modifiers |= Qt::ControlModifier;
+        modifiers |= Qt::ShiftModifier;
+        keycode = Qt::Key_Right;
+    } else if(command =="moveWordLeft:") {
+        modifiers |= Qt::ControlModifier;
+        keycode = Qt::Key_Left;
+    } else if(command =="moveWordRight:") {
+        modifiers |= Qt::ControlModifier;
+        keycode = Qt::Key_Left;
+    } else if(command =="moveWordRightAndModifySelection:") {
+        modifiers |= Qt::ShiftModifier;
+        modifiers |= Qt::ControlModifier;
+        keycode = Qt::Key_Right;
+    } else if(command =="moveWordLeftAndModifySelection:") {
+        modifiers |= Qt::ShiftModifier;
+        modifiers |= Qt::ControlModifier;
+        keycode = Qt::Key_Left;
+    } else if(command =="pageDown:") {
+        keycode = Qt::Key_PageDown;        
+    } else if(command =="pageUp:") {
+        keycode = Qt::Key_PageUp;        
+    }
+    QKeyEvent event(QEvent::KeyPress, keycode, modifiers);
+    QApplication::sendEvent(parent(), &event);
+    QKeyEvent event2(QEvent::KeyRelease, keycode, modifiers);
+    QApplication::sendEvent(parent(), &event2);
+}
index 746c08b609892b52886a6e2165cbb35a602a1a70..9f0f7b24cb5a4e624bd6f9969beec2331b691c5a 100644 (file)
@@ -111,5 +111,25 @@ private:
     QWebFrame *frameUnderMouse() const;
 };
 
+class TextInputController : public QObject
+{
+    Q_OBJECT
+public:
+    TextInputController(QWebPage *parent);
+
+public slots:
+    void doCommand(const QString &command);
+//     void setMarkedText(const QString &str, int from, int length);
+//     bool hasMarkedText();
+//     void unmarkText();
+//     QList<int> markedRange();
+//     QList<int> selectedRange();
+//     void validAttributesForMarkedText();
+//     void inserText(const QString &);
+//     void firstRectForCharacterRange();
+//     void characterIndexForPoint(int, int);
+//     void substringFromRange(int, int);
+//     void conversationIdentifier();
+};
 
 #endif