1/*
2 * Copyright (C) 2015-2018 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#ifndef JSUIScriptController_h
26#define JSUIScriptController_h
27
28#include "JSWrapper.h"
29
30namespace WTR {
31
32class UIScriptController;
33
34class JSUIScriptController : public JSWrapper {
35public:
36 static JSClassRef uIScriptControllerClass();
37
38private:
39 static const JSStaticFunction* staticFunctions();
40 static const JSStaticValue* staticValues();
41
42 // Functions
43
44 static JSValueRef doAsyncTask(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
45 static JSValueRef uiScriptComplete(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
46 static JSValueRef doAfterPresentationUpdate(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
47 static JSValueRef doAfterNextStablePresentationUpdate(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
48 static JSValueRef doAfterVisibleContentRectUpdate(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
49 static JSValueRef simulateAccessibilitySettingsChangeNotification(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
50 static JSValueRef touchDownAtPoint(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
51 static JSValueRef liftUpAtPoint(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
52 static JSValueRef singleTapAtPoint(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
53 static JSValueRef singleTapAtPointWithModifiers(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
54 static JSValueRef doubleTapAtPoint(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
55 static JSValueRef dragFromPointToPoint(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
56 static JSValueRef longPressAtPoint(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
57 static JSValueRef stylusDownAtPoint(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
58 static JSValueRef stylusMoveToPoint(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
59 static JSValueRef stylusUpAtPoint(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
60 static JSValueRef stylusTapAtPoint(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
61 static JSValueRef stylusTapAtPointWithModifiers(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
62 static JSValueRef enterText(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
63 static JSValueRef typeCharacterUsingHardwareKeyboard(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
64 static JSValueRef keyDown(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
65 static JSValueRef toggleCapsLock(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
66 static JSValueRef sendEventStream(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
67 static JSValueRef beginBackSwipe(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
68 static JSValueRef completeBackSwipe(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
69 static JSValueRef playBackEventStream(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
70 static JSValueRef dismissFormAccessoryView(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
71 static JSValueRef dismissFilePicker(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
72 static JSValueRef selectFormAccessoryPickerRow(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
73 static JSValueRef setTimePickerValue(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
74 static JSValueRef setShareSheetCompletesImmediatelyWithResolution(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
75 static JSValueRef keyboardAccessoryBarNext(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
76 static JSValueRef keyboardAccessoryBarPrevious(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
77 static JSValueRef applyAutocorrection(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
78 static JSValueRef contentsOfUserInterfaceItem(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
79 static JSValueRef rectForMenuAction(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
80 static JSValueRef zoomToScale(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
81 static JSValueRef setViewScale(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
82 static JSValueRef setMinimumEffectiveWidth(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
83 static JSValueRef setAllowsViewportShrinkToFit(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
84 static JSValueRef resignFirstResponder(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
85 static JSValueRef scrollToOffset(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
86 static JSValueRef immediateScrollToOffset(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
87 static JSValueRef immediateZoomToScale(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
88 static JSValueRef immediateScrollElementAtContentPointToOffset(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
89 static JSValueRef setDefaultCalendarType(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
90 static JSValueRef setKeyboardInputModeIdentifier(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
91 static JSValueRef replaceTextAtRange(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
92 static JSValueRef removeAllDynamicDictionaries(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
93 static JSValueRef propertiesOfLayerWithID(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
94 static JSValueRef retrieveSpeakSelectionContent(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
95 static JSValueRef simulateRotation(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
96 static JSValueRef simulateRotationLikeSafari(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
97 static JSValueRef findString(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
98 static JSValueRef removeViewFromWindow(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
99 static JSValueRef addViewToWindow(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
100 static JSValueRef overridePreference(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
101 static JSValueRef setSafeAreaInsets(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
102 static JSValueRef firstResponderSuppressionForWebView(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
103 static JSValueRef makeWindowContentViewFirstResponder(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
104 static JSValueRef setHardwareKeyboardAttached(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
105 static JSValueRef attachmentInfo(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
106 static JSValueRef drawSquareInEditableImage(JSContextRef, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*);
107
108 // Attributes
109
110 static JSValueRef textContentType(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
111 static JSValueRef didStartFormControlInteractionCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
112 static bool setDidStartFormControlInteractionCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef, JSValueRef*);
113 static JSValueRef didEndFormControlInteractionCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
114 static bool setDidEndFormControlInteractionCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef, JSValueRef*);
115 static JSValueRef didShowForcePressPreviewCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
116 static bool setDidShowForcePressPreviewCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef, JSValueRef*);
117 static JSValueRef didDismissForcePressPreviewCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
118 static bool setDidDismissForcePressPreviewCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef, JSValueRef*);
119 static JSValueRef selectFormPopoverTitle(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
120 static JSValueRef formInputLabel(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
121 static JSValueRef isShowingDataListSuggestions(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
122 static JSValueRef didShowKeyboardCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
123 static bool setDidShowKeyboardCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef, JSValueRef*);
124 static JSValueRef didHideKeyboardCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
125 static bool setDidHideKeyboardCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef, JSValueRef*);
126 static JSValueRef isShowingKeyboard(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
127 static JSValueRef didShowMenuCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
128 static bool setDidShowMenuCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef, JSValueRef*);
129 static JSValueRef didHideMenuCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
130 static bool setDidHideMenuCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef, JSValueRef*);
131 static JSValueRef isDismissingMenu(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
132 static JSValueRef isShowingMenu(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
133 static JSValueRef menuRect(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
134 static JSValueRef isShowingPopover(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
135 static JSValueRef willPresentPopoverCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
136 static bool setWillPresentPopoverCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef, JSValueRef*);
137 static JSValueRef didDismissPopoverCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
138 static bool setDidDismissPopoverCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef, JSValueRef*);
139 static JSValueRef willBeginZoomingCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
140 static bool setWillBeginZoomingCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef, JSValueRef*);
141 static JSValueRef didEndZoomingCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
142 static bool setDidEndZoomingCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef, JSValueRef*);
143 static JSValueRef isPresentingModally(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
144 static JSValueRef contentOffsetX(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
145 static JSValueRef contentOffsetY(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
146 static JSValueRef scrollUpdatesDisabled(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
147 static bool setScrollUpdatesDisabled(JSContextRef, JSObjectRef, JSStringRef, JSValueRef, JSValueRef*);
148 static JSValueRef didEndScrollingCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
149 static bool setDidEndScrollingCallback(JSContextRef, JSObjectRef, JSStringRef, JSValueRef, JSValueRef*);
150 static JSValueRef zoomScale(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
151 static JSValueRef minimumZoomScale(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
152 static JSValueRef maximumZoomScale(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
153 static JSValueRef stableStateOverride(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
154 static bool setStableStateOverride(JSContextRef, JSObjectRef, JSStringRef, JSValueRef, JSValueRef*);
155 static JSValueRef contentVisibleRect(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
156 static JSValueRef textSelectionRangeRects(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
157 static JSValueRef textSelectionCaretRect(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
158 static JSValueRef selectionStartGrabberViewRect(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
159 static JSValueRef selectionEndGrabberViewRect(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
160 static JSValueRef selectionCaretViewRect(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
161 static JSValueRef selectionRangeViewRects(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
162 static JSValueRef calendarType(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
163 static JSValueRef inputViewBounds(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
164 static JSValueRef scrollingTreeAsText(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
165 static JSValueRef accessibilitySpeakSelectionContent(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
166 static JSValueRef isWindowContentViewFirstResponder(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
167 static JSValueRef numberOfStrokesInEditableImage(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
168 static JSValueRef lastUndoLabel(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
169 static JSValueRef firstRedoLabel(JSContextRef, JSObjectRef, JSStringRef, JSValueRef*);
170};
171
172UIScriptController* toUIScriptController(JSContextRef, JSValueRef);
173
174} // namespace WTR
175
176#endif // JSUIScriptController_h
177