Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(400)

Unified Diff: content/shell/renderer/test_runner/EventSender.h

Issue 110533009: Import TestRunner library into chromium. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: updates Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/shell/renderer/test_runner/EventSender.h
diff --git a/content/shell/renderer/test_runner/EventSender.h b/content/shell/renderer/test_runner/EventSender.h
new file mode 100644
index 0000000000000000000000000000000000000000..03edb818e76ae1ab680bd67830de7c4555e349c0
--- /dev/null
+++ b/content/shell/renderer/test_runner/EventSender.h
@@ -0,0 +1,188 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/*
+ EventSender class:
+ Bound to a JavaScript window.eventSender object using
+ CppBoundClass::bindToJavascript(), this allows layout tests to fire DOM events.
+*/
+
+#ifndef EventSender_h
+#define EventSender_h
+
+#include "content/shell/renderer/test_runner/CppBoundClass.h"
+#include "content/shell/renderer/test_runner/WebScopedPtr.h"
+#include "content/shell/renderer/test_runner/WebTask.h"
+#include "third_party/WebKit/public/platform/WebPoint.h"
+#include "third_party/WebKit/public/web/WebDragOperation.h"
+#include "third_party/WebKit/public/web/WebInputEvent.h"
+
+namespace blink {
+class WebDragData;
+class WebView;
+struct WebContextMenuData;
+}
+
+namespace WebTestRunner {
+
+class TestInterfaces;
+class WebTestDelegate;
+
+class EventSender : public CppBoundClass {
+public:
+ explicit EventSender(TestInterfaces*);
+ ~EventSender();
+
+ void setDelegate(WebTestDelegate* delegate) { m_delegate = delegate; }
+ void setWebView(blink::WebView* webView) { m_webView = webView; }
+
+ void setContextMenuData(const blink::WebContextMenuData&);
+
+ // Resets some static variable state.
+ void reset();
+
+ // Simulate drag&drop system call.
+ void doDragDrop(const blink::WebDragData&, blink::WebDragOperationsMask);
+
+ // Test helper for dragging out images.
+ void dumpFilenameBeingDragged(const CppArgumentList&, CppVariant*);
+
+ // JS callback methods.
+ void contextClick(const CppArgumentList&, CppVariant*);
+ void mouseDown(const CppArgumentList&, CppVariant*);
+ void mouseUp(const CppArgumentList&, CppVariant*);
+ void mouseMoveTo(const CppArgumentList&, CppVariant*);
+ void leapForward(const CppArgumentList&, CppVariant*);
+ void keyDown(const CppArgumentList&, CppVariant*);
+ void dispatchMessage(const CppArgumentList&, CppVariant*);
+ // FIXME: These aren't really events. They should be moved to layout controller.
+ void textZoomIn(const CppArgumentList&, CppVariant*);
+ void textZoomOut(const CppArgumentList&, CppVariant*);
+ void zoomPageIn(const CppArgumentList&, CppVariant*);
+ void zoomPageOut(const CppArgumentList&, CppVariant*);
+ void setPageScaleFactor(const CppArgumentList&, CppVariant*);
+
+ void mouseDragBegin(const CppArgumentList&, CppVariant*);
+ void mouseDragEnd(const CppArgumentList&, CppVariant*);
+ void mouseMomentumBegin(const CppArgumentList&, CppVariant*);
+ void mouseMomentumScrollBy(const CppArgumentList&, CppVariant*);
+ void mouseMomentumEnd(const CppArgumentList&, CppVariant*);
+ void mouseScrollBy(const CppArgumentList&, CppVariant*);
+ void continuousMouseScrollBy(const CppArgumentList&, CppVariant*);
+ void scheduleAsynchronousClick(const CppArgumentList&, CppVariant*);
+ void scheduleAsynchronousKeyDown(const CppArgumentList&, CppVariant*);
+ void beginDragWithFiles(const CppArgumentList&, CppVariant*);
+ CppVariant dragMode;
+
+ void addTouchPoint(const CppArgumentList&, CppVariant*);
+ void cancelTouchPoint(const CppArgumentList&, CppVariant*);
+ void clearTouchPoints(const CppArgumentList&, CppVariant*);
+ void releaseTouchPoint(const CppArgumentList&, CppVariant*);
+ void setTouchModifier(const CppArgumentList&, CppVariant*);
+ void touchCancel(const CppArgumentList&, CppVariant*);
+ void touchEnd(const CppArgumentList&, CppVariant*);
+ void touchMove(const CppArgumentList&, CppVariant*);
+ void touchStart(const CppArgumentList&, CppVariant*);
+ void updateTouchPoint(const CppArgumentList&, CppVariant*);
+
+ void gestureFlingCancel(const CppArgumentList&, CppVariant*);
+ void gestureFlingStart(const CppArgumentList&, CppVariant*);
+ void gestureScrollBegin(const CppArgumentList&, CppVariant*);
+ void gestureScrollEnd(const CppArgumentList&, CppVariant*);
+ void gestureScrollFirstPoint(const CppArgumentList&, CppVariant*);
+ void gestureScrollUpdate(const CppArgumentList&, CppVariant*);
+ void gestureScrollUpdateWithoutPropagation(const CppArgumentList&, CppVariant*);
+ void gestureTap(const CppArgumentList&, CppVariant*);
+ void gestureTapDown(const CppArgumentList&, CppVariant*);
+ void gestureShowPress(const CppArgumentList&, CppVariant*);
+ void gestureTapCancel(const CppArgumentList&, CppVariant*);
+ void gestureLongPress(const CppArgumentList&, CppVariant*);
+ void gestureLongTap(const CppArgumentList&, CppVariant*);
+ void gestureTwoFingerTap(const CppArgumentList&, CppVariant*);
+ void gestureEvent(blink::WebInputEvent::Type, const CppArgumentList&);
+
+ // Setting this to false makes EventSender not force layout() calls.
+ // This makes it possible to test the standard WebCore event dispatch.
+ CppVariant forceLayoutOnEvents;
+
+ // Unimplemented stubs
+ void enableDOMUIEventLogging(const CppArgumentList&, CppVariant*);
+ void fireKeyboardEventsToElement(const CppArgumentList&, CppVariant*);
+ void clearKillRing(const CppArgumentList&, CppVariant*);
+
+ // Properties used in layout tests.
+#if defined(OS_WIN)
+ CppVariant wmKeyDown;
+ CppVariant wmKeyUp;
+ CppVariant wmChar;
+ CppVariant wmDeadChar;
+ CppVariant wmSysKeyDown;
+ CppVariant wmSysKeyUp;
+ CppVariant wmSysChar;
+ CppVariant wmSysDeadChar;
+#endif
+
+ WebTaskList* taskList() { return &m_taskList; }
+
+private:
+ blink::WebView* webview() { return m_webView; }
+
+ // Returns true if dragMode is true.
+ bool isDragMode() { return dragMode.isBool() && dragMode.toBoolean(); }
+
+ bool shouldForceLayoutOnEvents() const { return forceLayoutOnEvents.isBool() && forceLayoutOnEvents.toBoolean(); }
+
+ // Sometimes we queue up mouse move and mouse up events for drag drop
+ // handling purposes. These methods dispatch the event.
+ void doMouseMove(const blink::WebMouseEvent&);
+ void doMouseUp(const blink::WebMouseEvent&);
+ static void doLeapForward(int milliseconds);
+ void replaySavedEvents();
+
+ // Helper to return the button type given a button code
+ static blink::WebMouseEvent::Button getButtonTypeFromButtonNumber(int);
+
+ // Helper to extract the button number from the optional argument in
+ // mouseDown and mouseUp
+ static int getButtonNumberFromSingleArg(const CppArgumentList&);
+
+ // Returns true if the specified key code passed in needs a shift key
+ // modifier to be passed into the generated event.
+ bool needsShiftModifier(int);
+
+ void finishDragAndDrop(const blink::WebMouseEvent&, blink::WebDragOperation);
+ void updateClickCountForButton(blink::WebMouseEvent::Button);
+
+ // Compose a touch event from the current touch points and send it.
+ void sendCurrentTouchEvent(const blink::WebInputEvent::Type);
+
+ // Init a mouse wheel event from the given args.
+ void initMouseWheelEvent(const CppArgumentList&, CppVariant*, bool continuous, blink::WebMouseWheelEvent*);
+
+ WebTaskList m_taskList;
+
+ TestInterfaces* m_testInterfaces;
+ WebTestDelegate* m_delegate;
+ blink::WebView* m_webView;
+
+ WebScopedPtr<blink::WebContextMenuData> m_lastContextMenuData;
+
+ // Location of the touch point that initiated a gesture.
+ blink::WebPoint m_currentGestureLocation;
+
+ // Location of last mouseMoveTo event.
+ static blink::WebPoint lastMousePos;
+
+ // Currently pressed mouse button (Left/Right/Middle or None)
+ static blink::WebMouseEvent::Button pressedButton;
+
+ // The last button number passed to mouseDown and mouseUp.
+ // Used to determine whether the click count continues to
+ // increment or not.
+ static blink::WebMouseEvent::Button lastButtonType;
+};
+
+}
+
+#endif // EventSender_h
« no previous file with comments | « content/shell/renderer/test_runner/CppVariant.cpp ('k') | content/shell/renderer/test_runner/EventSender.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698