176 lines
9.0 KiB
Objective-C
176 lines
9.0 KiB
Objective-C
/*
|
|
* Copyright (C) 2019-2020 Apple Inc. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
|
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
|
|
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
|
* THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#if PLATFORM(IOS_FAMILY)
|
|
|
|
#import "UIScriptControllerCocoa.h"
|
|
#import <wtf/BlockPtr.h>
|
|
|
|
namespace WebCore {
|
|
class FloatPoint;
|
|
class FloatRect;
|
|
}
|
|
|
|
namespace WTR {
|
|
|
|
class UIScriptControllerIOS final : public UIScriptControllerCocoa {
|
|
public:
|
|
explicit UIScriptControllerIOS(UIScriptContext& context)
|
|
: UIScriptControllerCocoa(context)
|
|
{
|
|
}
|
|
|
|
private:
|
|
void waitForOutstandingCallbacks() override;
|
|
void doAfterPresentationUpdate(JSValueRef) override;
|
|
void doAfterNextStablePresentationUpdate(JSValueRef) override;
|
|
void ensurePositionInformationIsUpToDateAt(long x, long y, JSValueRef) override;
|
|
void doAfterVisibleContentRectUpdate(JSValueRef) override;
|
|
void doAfterDoubleTapDelay(JSValueRef) override;
|
|
void zoomToScale(double scale, JSValueRef) override;
|
|
void retrieveSpeakSelectionContent(JSValueRef) override;
|
|
JSRetainPtr<JSStringRef> accessibilitySpeakSelectionContent() const override;
|
|
void simulateAccessibilitySettingsChangeNotification(JSValueRef) override;
|
|
double zoomScale() const override;
|
|
void touchDownAtPoint(long x, long y, long touchCount, JSValueRef) override;
|
|
void liftUpAtPoint(long x, long y, long touchCount, JSValueRef) override;
|
|
void singleTapAtPoint(long x, long y, JSValueRef) override;
|
|
void singleTapAtPointWithModifiers(long x, long y, JSValueRef modifierArray, JSValueRef) override;
|
|
void twoFingerSingleTapAtPoint(long x, long y, JSValueRef callback) override;
|
|
void doubleTapAtPoint(long x, long y, float delay, JSValueRef) override;
|
|
void stylusDownAtPoint(long x, long y, float azimuthAngle, float altitudeAngle, float pressure, JSValueRef) override;
|
|
void stylusMoveToPoint(long x, long y, float azimuthAngle, float altitudeAngle, float pressure, JSValueRef) override;
|
|
void stylusUpAtPoint(long x, long y, JSValueRef) override;
|
|
void stylusTapAtPoint(long x, long y, float azimuthAngle, float altitudeAngle, float pressure, JSValueRef) override;
|
|
void stylusTapAtPointWithModifiers(long x, long y, float azimuthAngle, float altitudeAngle, float pressure, JSValueRef modifierArray, JSValueRef) override;
|
|
void sendEventStream(JSStringRef eventsJSON, JSValueRef) override;
|
|
void dragFromPointToPoint(long startX, long startY, long endX, long endY, double durationSeconds, JSValueRef) override;
|
|
void longPressAtPoint(long x, long y, JSValueRef) override;
|
|
void enterText(JSStringRef text) override;
|
|
void typeCharacterUsingHardwareKeyboard(JSStringRef character, JSValueRef) override;
|
|
void keyDown(JSStringRef character, JSValueRef modifierArray) override;
|
|
|
|
void activateAtPoint(long x, long y, JSValueRef callback) override;
|
|
|
|
void rawKeyDown(JSStringRef) override;
|
|
void rawKeyUp(JSStringRef) override;
|
|
|
|
void dismissFormAccessoryView() override;
|
|
JSObjectRef filePickerAcceptedTypeIdentifiers() override;
|
|
void dismissFilePicker(JSValueRef) override;
|
|
JSRetainPtr<JSStringRef> selectFormPopoverTitle() const override;
|
|
JSRetainPtr<JSStringRef> textContentType() const override;
|
|
JSRetainPtr<JSStringRef> formInputLabel() const override;
|
|
void selectFormAccessoryPickerRow(long rowIndex) override;
|
|
bool selectFormAccessoryHasCheckedItemAtRow(long rowIndex) const override;
|
|
void setTimePickerValue(long hour, long minute) override;
|
|
double timePickerValueHour() const override;
|
|
double timePickerValueMinute() const override;
|
|
bool isPresentingModally() const override;
|
|
double contentOffsetX() const override;
|
|
double contentOffsetY() const override;
|
|
bool scrollUpdatesDisabled() const override;
|
|
void setScrollUpdatesDisabled(bool) override;
|
|
void scrollToOffset(long x, long y, ScrollToOptions*) override;
|
|
void immediateScrollToOffset(long x, long y, ScrollToOptions*) override;
|
|
void immediateScrollElementAtContentPointToOffset(long x, long y, long xScrollOffset, long yScrollOffset) override;
|
|
void immediateZoomToScale(double scale) override;
|
|
void keyboardAccessoryBarNext() override;
|
|
void keyboardAccessoryBarPrevious() override;
|
|
bool isShowingKeyboard() const override;
|
|
bool hasInputSession() const override;
|
|
void applyAutocorrection(JSStringRef newString, JSStringRef oldString, JSValueRef) override;
|
|
double minimumZoomScale() const override;
|
|
double maximumZoomScale() const override;
|
|
std::optional<bool> stableStateOverride() const override;
|
|
void setStableStateOverride(std::optional<bool> overrideValue) override;
|
|
JSObjectRef contentVisibleRect() const override;
|
|
JSObjectRef textSelectionRangeRects() const override;
|
|
JSObjectRef textSelectionCaretRect() const override;
|
|
JSObjectRef selectionStartGrabberViewRect() const override;
|
|
JSObjectRef selectionEndGrabberViewRect() const override;
|
|
JSObjectRef selectionCaretViewRect() const override;
|
|
JSObjectRef selectionRangeViewRects() const override;
|
|
JSObjectRef inputViewBounds() const override;
|
|
JSRetainPtr<JSStringRef> scrollingTreeAsText() const override;
|
|
JSRetainPtr<JSStringRef> uiViewTreeAsText() const override;
|
|
JSObjectRef propertiesOfLayerWithID(uint64_t layerID) const override;
|
|
void simulateRotation(DeviceOrientation*, JSValueRef) override;
|
|
void simulateRotationLikeSafari(DeviceOrientation*, JSValueRef) override;
|
|
bool isShowingPopover() const override;
|
|
JSObjectRef rectForMenuAction(JSStringRef) const override;
|
|
JSObjectRef menuRect() const override;
|
|
bool isDismissingMenu() const override;
|
|
void chooseMenuAction(JSStringRef, JSValueRef) override;
|
|
void setSafeAreaInsets(double top, double right, double bottom, double left) override;
|
|
void beginBackSwipe(JSValueRef) override;
|
|
void completeBackSwipe(JSValueRef) override;
|
|
bool isShowingDataListSuggestions() const override;
|
|
void activateDataListSuggestion(unsigned, JSValueRef) override;
|
|
void setSelectedColorForColorPicker(double, double, double) override;
|
|
void setKeyboardInputModeIdentifier(JSStringRef) override;
|
|
void toggleCapsLock(JSValueRef) override;
|
|
bool keyboardIsAutomaticallyShifted() const override;
|
|
bool isAnimatingDragCancel() const override;
|
|
JSRetainPtr<JSStringRef> selectionCaretBackgroundColor() const override;
|
|
JSObjectRef tapHighlightViewRect() const override;
|
|
JSObjectRef attachmentInfo(JSStringRef) override;
|
|
UIView *platformContentView() const override;
|
|
JSObjectRef calendarType() const override;
|
|
void setHardwareKeyboardAttached(bool) override;
|
|
void setAllowsViewportShrinkToFit(bool) override;
|
|
void copyText(JSStringRef) override;
|
|
void installTapGestureOnWindow(JSValueRef) override;
|
|
void setSpellCheckerResults(JSValueRef) override { }
|
|
|
|
bool mayContainEditableElementsInRect(unsigned x, unsigned y, unsigned width, unsigned height) override;
|
|
|
|
void setDidStartFormControlInteractionCallback(JSValueRef) override;
|
|
void setDidEndFormControlInteractionCallback(JSValueRef) override;
|
|
void setWillBeginZoomingCallback(JSValueRef) override;
|
|
void setDidEndZoomingCallback(JSValueRef) override;
|
|
void setDidShowKeyboardCallback(JSValueRef) override;
|
|
void setDidHideKeyboardCallback(JSValueRef) override;
|
|
void setWillStartInputSessionCallback(JSValueRef) override;
|
|
void setWillPresentPopoverCallback(JSValueRef) override;
|
|
void setDidDismissPopoverCallback(JSValueRef) override;
|
|
void setDidEndScrollingCallback(JSValueRef) override;
|
|
void clearAllCallbacks() override;
|
|
|
|
bool suppressSoftwareKeyboard() const final;
|
|
void setSuppressSoftwareKeyboard(bool) final;
|
|
|
|
void waitForModalTransitionToFinish() const;
|
|
void waitForSingleTapToReset() const;
|
|
WebCore::FloatRect rectForMenuAction(CFStringRef) const;
|
|
void singleTapAtPointWithModifiers(WebCore::FloatPoint location, Vector<String>&& modifierFlags, BlockPtr<void()>&&);
|
|
};
|
|
|
|
}
|
|
|
|
#endif // PLATFORM(IOS_FAMILY)
|