e8d0f8c1c1c7fe6044d6bd9f5059296dd9de5348
[WebKit-https.git] / Tools / TestRunnerShared / UIScriptContext / UIScriptController.h
1 /*
2  * Copyright (C) 2015 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #ifndef UIScriptController_h
27 #define UIScriptController_h
28
29 #include "JSWrappable.h"
30 #include <JavaScriptCore/JSRetainPtr.h>
31 #include <wtf/Ref.h>
32
33 namespace WebCore {
34 class FloatRect;
35 }
36
37 namespace WTR {
38
39 class UIScriptContext;
40
41 class UIScriptController : public JSWrappable {
42 public:
43     static Ref<UIScriptController> create(UIScriptContext& context)
44     {
45         return adoptRef(*new UIScriptController(context));
46     }
47
48     void contextDestroyed();
49
50     void makeWindowObject(JSContextRef, JSObjectRef windowObject, JSValueRef* exception);
51     
52     void doAsyncTask(JSValueRef callback);
53     void zoomToScale(double scale, JSValueRef callback);
54
55     void simulateAccessibilitySettingsChangeNotification(JSValueRef callback);
56
57     void touchDownAtPoint(long x, long y, long touchCount, JSValueRef callback);
58     void liftUpAtPoint(long x, long y, long touchCount, JSValueRef callback);
59     void singleTapAtPoint(long x, long y, JSValueRef callback);
60     void doubleTapAtPoint(long x, long y, JSValueRef callback);
61     void dragFromPointToPoint(long startX, long startY, long endX, long endY, double durationSeconds, JSValueRef callback);
62
63     void stylusDownAtPoint(long x, long y, float azimuthAngle, float altitudeAngle, float pressure, JSValueRef callback);
64     void stylusMoveToPoint(long x, long y, float azimuthAngle, float altitudeAngle, float pressure, JSValueRef callback);
65     void stylusUpAtPoint(long x, long y, JSValueRef callback);
66     void stylusTapAtPoint(long x, long y, float azimuthAngle, float altitudeAngle, float pressure, JSValueRef callback);
67
68     void longPressAtPoint(long x, long y, JSValueRef callback);
69
70     void sendEventStream(JSStringRef eventsJSON, JSValueRef callback);
71
72     void typeCharacterUsingHardwareKeyboard(JSStringRef character, JSValueRef callback);
73     void keyDownUsingHardwareKeyboard(JSStringRef character, JSValueRef callback);
74     void keyUpUsingHardwareKeyboard(JSStringRef character, JSValueRef callback);
75
76     void selectTextCandidateAtIndex(long index, JSValueRef callback);
77
78     void keyboardAccessoryBarNext();
79     void keyboardAccessoryBarPrevious();
80     
81     void dismissFormAccessoryView();
82     void selectFormAccessoryPickerRow(long);
83     
84     JSObjectRef contentsOfUserInterfaceItem(JSStringRef) const;
85     
86     void scrollToOffset(long x, long y);
87
88     void setDidStartFormControlInteractionCallback(JSValueRef);
89     JSValueRef didStartFormControlInteractionCallback() const;
90
91     void setDidEndFormControlInteractionCallback(JSValueRef);
92     JSValueRef didEndFormControlInteractionCallback() const;
93     
94     void setDidShowForcePressPreviewCallback(JSValueRef);
95     JSValueRef didShowForcePressPreviewCallback() const;
96     
97     void setDidDismissForcePressPreviewCallback(JSValueRef);
98     JSValueRef didDismissForcePressPreviewCallback() const;
99
100     void setWillBeginZoomingCallback(JSValueRef);
101     JSValueRef willBeginZoomingCallback() const;
102
103     void setDidEndZoomingCallback(JSValueRef);
104     JSValueRef didEndZoomingCallback() const;
105
106     void setDidShowKeyboardCallback(JSValueRef);
107     JSValueRef didShowKeyboardCallback() const;
108
109     void setDidHideKeyboardCallback(JSValueRef);
110     JSValueRef didHideKeyboardCallback() const;
111
112     void setDidEndScrollingCallback(JSValueRef);
113     JSValueRef didEndScrollingCallback() const;
114
115     double zoomScale() const;
116     double minimumZoomScale() const;
117     double maximumZoomScale() const;
118
119     JSObjectRef contentVisibleRect() const;
120     
121     JSObjectRef selectionRangeViewRects() const;
122
123     void insertText(JSStringRef, int location, int length);
124     void removeAllDynamicDictionaries();
125     
126     JSRetainPtr<JSStringRef> scrollingTreeAsText() const;
127
128     void uiScriptComplete(JSStringRef result);
129
130 private:
131     UIScriptController(UIScriptContext&);
132     
133     UIScriptContext* context() { return m_context; }
134
135     void platformSetDidStartFormControlInteractionCallback();
136     void platformSetDidEndFormControlInteractionCallback();
137     void platformSetDidShowForcePressPreviewCallback();
138     void platformSetDidDismissForcePressPreviewCallback();
139     void platformSetWillBeginZoomingCallback();
140     void platformSetDidEndZoomingCallback();
141     void platformSetDidShowKeyboardCallback();
142     void platformSetDidHideKeyboardCallback();
143     void platformSetDidEndScrollingCallback();
144     void platformClearAllCallbacks();
145
146     JSClassRef wrapperClass() final;
147
148     JSObjectRef objectFromRect(const WebCore::FloatRect&) const;
149     void waitForTextPredictionsViewAndSelectCandidateAtIndex(long index, unsigned callbackID, float interval);
150
151     UIScriptContext* m_context;
152 };
153
154 }
155
156 #endif // UIScriptController_h