[iOS] ViewServices started by StoreKitUIService may get suspended unexpectedly
[WebKit-https.git] / Source / WebKit / Platform / spi / ios / UIKitSPI.h
1 /*
2  * Copyright (C) 2014-2016 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 #import <UIKit/UIKit.h>
27
28 #if USE(APPLE_INTERNAL_SDK)
29
30 #import <UIKit/UIAlertController_Private.h>
31 #import <UIKit/UIApplication_Private.h>
32 #import <UIKit/UIBarButtonItem_Private.h>
33 #import <UIKit/UICalloutBar.h>
34 #import <UIKit/UIDatePicker_Private.h>
35 #import <UIKit/UIDevice_Private.h>
36 #import <UIKit/UIDocumentMenuViewController_Private.h>
37 #import <UIKit/UIDocumentPasswordView.h>
38 #import <UIKit/UIFont_Private.h>
39 #import <UIKit/UIGeometry_Private.h>
40 #import <UIKit/UIGestureRecognizer_Private.h>
41 #import <UIKit/UIImagePickerController_Private.h>
42 #import <UIKit/UIImage_Private.h>
43 #import <UIKit/UIInterface_Private.h>
44 #import <UIKit/UIKeyboardImpl.h>
45 #import <UIKit/UIKeyboardIntl.h>
46 #import <UIKit/UIKeyboard_Private.h>
47 #import <UIKit/UILongPressGestureRecognizer_Private.h>
48 #import <UIKit/UIPeripheralHost.h>
49 #import <UIKit/UIPeripheralHost_Private.h>
50 #import <UIKit/UIPickerContentView_Private.h>
51 #import <UIKit/UIPickerView_Private.h>
52 #import <UIKit/UIPresentationController_Private.h>
53 #import <UIKit/UIResponder_Private.h>
54 #import <UIKit/UIScrollView_Private.h>
55 #import <UIKit/UIStringDrawing_Private.h>
56 #import <UIKit/UITableViewCell_Private.h>
57 #import <UIKit/UITapGestureRecognizer_Private.h>
58 #import <UIKit/UITextEffectsWindow.h>
59 #import <UIKit/UITextInput_Private.h>
60 #import <UIKit/UITextInteractionAssistant_Private.h>
61 #import <UIKit/UIViewControllerTransitioning_Private.h>
62 #import <UIKit/UIViewController_Private.h>
63 #import <UIKit/UIViewController_ViewService.h>
64 #import <UIKit/UIView_Private.h>
65 #import <UIKit/UIWKSelectionAssistant.h>
66 #import <UIKit/UIWKTextInteractionAssistant.h>
67 #import <UIKit/UIWebBrowserView.h>
68 #import <UIKit/UIWebDocumentView.h>
69 #import <UIKit/UIWebFormAccessory.h>
70 #import <UIKit/UIWebGeolocationPolicyDecider.h>
71 #import <UIKit/UIWebScrollView.h>
72 #import <UIKit/UIWebTiledView.h>
73 #import <UIKit/UIWebTouchEventsGestureRecognizer.h>
74 #import <UIKit/UIWindow_Private.h>
75 #import <UIKit/_UIBackdropViewSettings.h>
76 #import <UIKit/_UIBackdropView_Private.h>
77 #import <UIKit/_UIHighlightView.h>
78 #import <UIKit/_UINavigationInteractiveTransition.h>
79 #import <UIKit/_UINavigationParallaxTransition.h>
80
81 #if HAVE(LINK_PREVIEW)
82 #import <UIKit/UIPreviewItemController.h>
83 #endif
84
85 #if ENABLE(DRAG_SUPPORT)
86 #import <UIKit/NSItemProvider+UIKitAdditions_Private.h>
87 #import <UIKit/UIItemProvider_Private.h>
88 #endif
89
90 #if ENABLE(DRAG_SUPPORT)
91 #import <UIKit/UIDragInteraction.h>
92 #import <UIKit/UIDragInteraction_Private.h>
93 #import <UIKit/UIDragPreviewParameters.h>
94 #import <UIKit/UIDragPreview_Private.h>
95 #import <UIKit/UIDragSession.h>
96 #import <UIKit/UIDragging.h>
97 #import <UIKit/UIDropInteraction.h>
98 #import <UIKit/UIPreviewInteraction.h>
99 #import <UIKit/UIURLDragPreviewView.h>
100 #import <UIKit/_UITextDragCaretView.h>
101 #endif
102
103 #else
104
105 #if HAVE(LINK_PREVIEW)
106 typedef NS_ENUM(NSInteger, UIPreviewItemType) {
107     UIPreviewItemTypeNone,
108     UIPreviewItemTypeClientCustom,
109     UIPreviewItemTypeLink,
110     UIPreviewItemTypeImage,
111     UIPreviewItemTypeText,
112     UIPreviewItemTypeAttachment,
113 };
114
115 @class UIPreviewItemController;
116
117 @protocol UIPreviewItemDelegate <NSObject>
118 - (NSDictionary *)_dataForPreviewItemController:(UIPreviewItemController *)controller atPosition:(CGPoint)position type:(UIPreviewItemType *)type;
119 @optional
120 - (BOOL)_interactionShouldBeginFromPreviewItemController:(UIPreviewItemController *)controller forPosition:(CGPoint)position;
121 - (void)_interactionStartedFromPreviewItemController:(UIPreviewItemController *)controller;
122 - (void)_interactionStoppedFromPreviewItemController:(UIPreviewItemController *)controller;
123 - (UIViewController *)_presentedViewControllerForPreviewItemController:(UIPreviewItemController *)controller;
124 - (void)_previewItemController:(UIPreviewItemController *)controller didDismissPreview:(UIViewController *)viewController committing:(BOOL)committing;
125 - (void)_previewItemController:(UIPreviewItemController *)controller commitPreview:(UIViewController *)viewController;
126 - (void)_previewItemControllerDidCancelPreview:(UIPreviewItemController *)controller;
127 - (UIImage *)_presentationSnapshotForPreviewItemController:(UIPreviewItemController *)controller;
128 - (NSArray *)_presentationRectsForPreviewItemController:(UIPreviewItemController *)controller;
129 - (CGRect)_presentationRectForPreviewItemController:(UIPreviewItemController *)controller;
130 @end
131
132 @interface UIPreviewItemController : NSObject
133 - (instancetype)initWithView:(UIView *)view;
134 @property (assign, nonatomic) id<UIPreviewItemDelegate> delegate;
135 @property (assign, nonatomic, readonly) UIPreviewItemType type;
136 @property (strong, nonatomic, readonly) NSDictionary *previewData;
137 @property (strong, nonatomic, readonly) UIGestureRecognizer *presentationGestureRecognizer;
138 @property (strong, nonatomic, readonly) UIGestureRecognizer *presentationSecondaryGestureRecognizer;
139 @end
140 #endif
141
142 @interface UIAlertController ()
143 - (void)_addActionWithTitle:(NSString *)title style:(UIAlertActionStyle)style handler:(void (^)(void))handler;
144 - (void)_addActionWithTitle:(NSString *)title style:(UIAlertActionStyle)style handler:(void (^)(void))handler shouldDismissHandler:(BOOL (^)(void))shouldDismissHandler;
145 @property (nonatomic) UIAlertControllerStyle preferredStyle;
146 @end
147
148 @interface UIApplication ()
149 - (UIInterfaceOrientation)interfaceOrientation;
150 - (void)_cancelAllTouches;
151 - (CGFloat)statusBarHeight;
152 - (BOOL)isSuspendedUnderLock;
153 @end
154
155 typedef NS_ENUM(NSInteger, UIDatePickerPrivateMode)  {
156     UIDatePickerModeYearAndMonth = 4269,
157 };
158
159 @interface UIDatePicker ()
160 @property (nonatomic, readonly, getter=_contentWidth) CGFloat contentWidth;
161 @end
162
163 #define UICurrentUserInterfaceIdiomIsPad() ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
164
165 @interface UIDevice ()
166 @property (nonatomic, readonly, retain) NSString *buildVersion;
167 @end
168
169 typedef enum {
170     kUIKeyboardInputRepeat                 = 1 << 0,
171     kUIKeyboardInputPopupVariant           = 1 << 1,
172     kUIKeyboardInputMultitap               = 1 << 2,
173     kUIKeyboardInputSkipCandidateSelection = 1 << 3,
174     kUIKeyboardInputDeadKey                = 1 << 4,
175     kUIKeyboardInputModifierFlagsChanged   = 1 << 5,
176     kUIKeyboardInputFlick                  = 1 << 6,
177     kUIKeyboardInputPreProcessed           = 1 << 7,
178 } UIKeyboardInputFlags;
179
180 @interface UIEvent ()
181 @property (nonatomic, readonly) UIKeyboardInputFlags _inputFlags;
182 - (void *)_hidEvent;
183 - (NSString *)_unmodifiedInput;
184 - (NSString *)_modifiedInput;
185 - (NSInteger)_modifierFlags;
186 - (BOOL)_isKeyDown;
187 @end
188
189 typedef enum {
190     UIFontTraitPlain = 0x00000000,
191 } UIFontTrait;
192
193 @interface UIFont ()
194 + (UIFont *)fontWithFamilyName:(NSString *)familyName traits:(UIFontTrait)traits size:(CGFloat)fontSize;
195 @end
196
197 typedef enum {
198     UIAllCorners = 0xFF,
199 } UIRectCorners;
200
201 @interface UIImagePickerController ()
202 @property (nonatomic, setter=_setAllowsMultipleSelection:) BOOL _allowsMultipleSelection;
203 @end
204
205 @interface UIImage ()
206 - (id)initWithCGImage:(CGImageRef)CGImage imageOrientation:(UIImageOrientation)imageOrientation;
207 @end
208
209 @interface UIKeyCommand ()
210 @property (nonatomic, readonly) UIEvent *_triggeringEvent;
211 @end
212
213 @protocol UIKeyboardImplGeometryDelegate
214 @property (nonatomic, readwrite, getter=isMinimized) BOOL minimized;
215 - (void)prepareForImplBoundsHeightChange:(CGFloat)endDelta suppressNotification:(BOOL)suppressNotification;
216 - (void)implBoundsHeightChangeDone:(CGFloat)endDelta suppressNotification:(BOOL)suppressNotification;
217 - (BOOL)shouldSaveMinimizationState;
218 - (BOOL)canDismiss;
219 - (BOOL)isActive;
220 @end
221
222 @protocol UIKeyboardCandidateListDelegate <NSObject>
223 @optional
224 - (void)setCandidateList:(id)candidateList updateCandidateView:(BOOL)updateCandidateView;
225 - (void)candidateListAcceptCandidate:(id)candidateList;
226 - (void)candidateListSelectionDidChange:(id)candidateList;
227 - (void)candidateListShouldBeDismissed:(id)candidateList;
228 @end
229
230 // FIXME: https://bugs.webkit.org/show_bug.cgi?id=173341
231 #ifndef _WEBKIT_UIKITSPI_UIKEYBOARD
232 #define _WEBKIT_UIKITSPI_UIKEYBOARD 1
233 @interface UIKeyboard : UIView <UIKeyboardImplGeometryDelegate>
234 @end
235 #endif
236
237 @interface UIKeyboard ()
238 + (CGSize)defaultSizeForInterfaceOrientation:(UIInterfaceOrientation)orientation;
239 - (void)activate;
240 - (void)geometryChangeDone:(BOOL)keyboardVisible;
241 - (void)prepareForGeometryChange;
242 @end
243
244 @interface UIKeyboardImpl : UIView <UIKeyboardCandidateListDelegate>
245 @end
246
247 @interface UIKeyboardImpl ()
248 + (UIKeyboardImpl *)activeInstance;
249 + (UIKeyboardImpl *)sharedInstance;
250 + (CGSize)defaultSizeForInterfaceOrientation:(UIInterfaceOrientation)orientation;
251 - (void)addInputString:(NSString *)string withFlags:(NSUInteger)flags;
252 - (void)addInputString:(NSString *)string withFlags:(NSUInteger)flags withInputManagerHint:(NSString *)hint;
253 - (BOOL)autocorrectSpellingEnabled;
254 - (void)deleteFromInput;
255 - (void)deleteFromInputWithFlags:(NSUInteger)flags;
256 - (void)replaceText:(id)replacement;
257 @property (nonatomic, readwrite, retain) UIResponder <UIKeyInput> *delegate;
258 @end
259
260 @interface UILongPressGestureRecognizer ()
261 @property (nonatomic) CFTimeInterval delay;
262 @property (nonatomic, readonly) CGPoint startPoint;
263 @property (nonatomic, assign, setter=_setRequiresQuietImpulse:) BOOL _requiresQuietImpulse;
264 @end
265
266 @interface _UIWebHighlightLongPressGestureRecognizer : UILongPressGestureRecognizer
267 @end
268
269 @interface _UIWebHighlightLongPressGestureRecognizer ()
270 - (void)cancel;
271 @end
272
273 @interface UIPeripheralHost : NSObject <UIGestureRecognizerDelegate>
274 @end
275
276 @class UIKeyboardRotationState;
277
278 @interface UIPeripheralHost ()
279 + (UIPeripheralHost *)sharedInstance;
280 + (UIPeripheralHost *)activeInstance;
281 + (CGRect)visiblePeripheralFrame;
282 - (BOOL)isOnScreen;
283 - (UIKeyboardRotationState *)rotationState;
284 @end
285
286 @interface UIPickerContentView : UIView
287 @end
288
289 @interface UIPickerContentView ()
290 +(CGFloat)_checkmarkOffset;
291 -(CGFloat)labelWidthForBounds:(CGRect)bounds;
292 @property (nonatomic, getter=isChecked) BOOL checked;
293 @property (nonatomic, readonly) UILabel *titleLabel;
294 @end
295
296 @interface UIPickerView ()
297 + (CGSize)defaultSizeForCurrentOrientation;
298 - (void)_setUsesCheckedSelection:(BOOL)usesCheckedSelection;
299 @property (nonatomic, setter=_setMagnifierEnabled:) BOOL _magnifierEnabled;
300 @end
301
302 @interface UIResponder ()
303 - (void)_handleKeyUIEvent:(UIEvent *)event;
304 @end
305
306 @class CADisplay;
307 @interface UIScreen ()
308 - (CADisplay *)_display;
309 @end
310
311 @interface UIScrollView ()
312 - (void)_stopScrollingAndZoomingAnimations;
313 - (void)_zoomToCenter:(CGPoint)center scale:(CGFloat)scale duration:(CFTimeInterval)duration force:(BOOL)force;
314 - (void)_zoomToCenter:(CGPoint)center scale:(CGFloat)scale duration:(CFTimeInterval)duration;
315 @property (nonatomic, getter=isZoomEnabled) BOOL zoomEnabled;
316 @property (nonatomic, readonly, getter=_isAnimatingZoom) BOOL isAnimatingZoom;
317 @property (nonatomic, readonly, getter=_isAnimatingScroll) BOOL isAnimatingScroll;
318 @property (nonatomic) CGFloat horizontalScrollDecelerationFactor;
319 @property (nonatomic) CGFloat verticalScrollDecelerationFactor;
320 @property (nonatomic, readonly) BOOL _isInterruptingDeceleration;
321 #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000
322 @property (nonatomic, readonly) UIEdgeInsets _systemContentInset;
323 #endif
324 @end
325
326 @interface NSString (UIKitDetails)
327 - (CGSize)_legacy_sizeWithFont:(UIFont *)font forWidth:(CGFloat)width lineBreakMode:(NSLineBreakMode)lineBreakMode;
328 - (CGSize)_legacy_sizeWithFont:(UIFont *)font minFontSize:(CGFloat)minFontSize actualFontSize:(CGFloat *)actualFontSize forWidth:(CGFloat)width lineBreakMode:(NSLineBreakMode)lineBreakMode;
329 @end
330
331 @interface UITapGestureRecognizer ()
332 @property (nonatomic, getter=_allowableSeparation, setter=_setAllowableSeparation:) CGFloat allowableSeparation;
333 @property (nonatomic, readonly) CGPoint location;
334 @property (nonatomic) CGFloat allowableMovement;
335 @property (nonatomic, readonly) CGPoint centroid;
336 @end
337
338 @class WebEvent;
339
340 typedef enum {
341     UITextShortcutConversionTypeDefault = 0,
342     UITextShortcutConversionTypeNo = 1,
343     UITextShortcutConversionTypeYes = 2,
344 } UITextShortcutConversionType;
345
346 @protocol UITextInputTraits_Private <NSObject, UITextInputTraits>
347 - (void)takeTraitsFrom:(id <UITextInputTraits>)traits;
348 @optional
349 @property (nonatomic) UITextShortcutConversionType shortcutConversionType;
350 @end
351
352 @class UITextInputArrowKeyHistory;
353
354 @protocol UITextInputPrivate <UITextInput, UITextInputTokenizer, UITextInputTraits_Private>
355 @optional
356 - (BOOL)requiresKeyEvents;
357 - (NSArray *)metadataDictionariesForDictationResults;
358 - (UIColor *)textColorForCaretSelection;
359 - (UIFont *)fontForCaretSelection;
360 - (UIView *)automaticallySelectedOverlay;
361 - (void)handleKeyWebEvent:(WebEvent *)event;
362 - (void)insertDictationResult:(NSArray *)dictationResult withCorrectionIdentifier:(id)correctionIdentifier;
363 - (void)replaceRangeWithTextWithoutClosingTyping:(UITextRange *)range replacementText:(NSString *)text;
364 - (void)setBottomBufferHeight:(CGFloat)bottomBuffer;
365 @property (nonatomic) UITextGranularity selectionGranularity;
366 @required
367 - (BOOL)hasContent;
368 - (BOOL)hasSelection;
369 - (void)selectAll;
370 @end
371
372 @interface UITextInputTraits : NSObject <UITextInputTraits, UITextInputTraits_Private, NSCopying>
373 @end
374
375 @interface UITextInteractionAssistant : NSObject
376 @end
377
378 @interface UITextInteractionAssistant ()
379 - (void)activateSelection;
380 - (void)deactivateSelection;
381 - (void)didEndScrollingOverflow;
382 - (void)selectionChanged;
383 - (void)setGestureRecognizers;
384 - (void)willStartScrollingOverflow;
385 @end
386
387 @class UITextSuggestion;
388
389 @protocol UITextInputSuggestionDelegate <UITextInputDelegate>
390 - (void)setSuggestions:(NSArray <UITextSuggestion*> *)suggestions;
391 @end
392
393 @interface UIViewController ()
394 + (UIViewController *)_viewControllerForFullScreenPresentationFromView:(UIView *)view;
395 + (UIViewController *)viewControllerForView:(UIView *)view;
396 @end
397
398 @interface UIViewController (ViewService)
399 - (pid_t)_hostProcessIdentifier;
400 @property (readonly) NSString *_hostApplicationBundleIdentifier;
401 @end
402
403 @protocol UIViewControllerContextTransitioningEx <UIViewControllerContextTransitioning>
404 - (void)__runAlongsideAnimations;
405 - (void)_interactivityDidChange:(BOOL)isInteractive;
406 @property (nonatomic, assign, setter=_setAllowUserInteraction:, getter=_allowUserInteraction) BOOL _allowUserInteraction;
407 @property (nonatomic, assign, setter=_setPercentOffset:) CGFloat _percentOffset;
408 @property (nonatomic, retain, setter=_setContainerViews:) NSArray *_containerViews;
409 @end
410
411 @interface _UIViewControllerTransitionContext : NSObject <UIViewControllerContextTransitioningEx>
412 @end
413
414 // FIXME: Separate the parts we are simply re-declaring from the ones we are overriding.
415 @interface _UIViewControllerTransitionContext (Details)
416 - (void) _setTransitionIsInFlight:(BOOL)flag;
417 @property (nonatomic, assign, setter=_setAllowUserInteraction:, getter=_allowUserInteraction) BOOL _allowUserInteraction;
418 @property (nonatomic, assign, setter=_setAnimator:) id <UIViewControllerAnimatedTransitioning> _animator;
419 @property (nonatomic, assign, setter=_setContainerView:) UIView *containerView;
420 @property (nonatomic, assign, setter=_setInteractor:) id <UIViewControllerInteractiveTransitioning> _interactor;
421 @property (nonatomic, assign, setter=_setPercentOffset:) CGFloat _percentOffset;
422 @property (nonatomic, copy, setter=_setCompletionHandler:)  void (^_completionHandler)(_UIViewControllerTransitionContext *context, BOOL transitionCompleted);
423 @property (nonatomic, retain, setter=_setContainerViews:) NSArray *_containerViews;
424 @end
425
426 @interface _UIViewControllerOneToOneTransitionContext : _UIViewControllerTransitionContext
427 @end
428
429 @interface _UIViewControllerOneToOneTransitionContext ()
430 @property (nonatomic, assign, setter=_setFromEndFrame:) CGRect fromEndFrame;
431 @property (nonatomic, assign, setter=_setFromStartFrame:) CGRect fromStartFrame;
432 @property (nonatomic, assign, setter=_setToEndFrame:) CGRect toEndFrame;
433 @property (nonatomic, assign, setter=_setToStartFrame:) CGRect toStartFrame;
434 @property (nonatomic, retain, setter=_setFromViewController:) UIViewController *fromViewController;
435 @property (nonatomic, retain, setter=_setToViewController:) UIViewController *toViewController;
436 @end
437
438 @protocol UIViewControllerAnimatedTransitioningEx <UIViewControllerAnimatedTransitioning>
439 - (BOOL)interactionAborted;
440 - (UINavigationControllerOperation) operation;
441 - (UIPercentDrivenInteractiveTransition *)interactionController;
442 - (void)setInteractionAborted:(BOOL)aborted;
443 - (void)setInteractionController:(UIPercentDrivenInteractiveTransition *)controller;
444 - (void)setOperation:(UINavigationControllerOperation)operation;
445 @optional
446 - (UIWindow *)window;
447 @end
448
449 typedef NS_ENUM (NSInteger, _UIBackdropMaskViewFlags) {
450     _UIBackdropMaskViewNone = 0,
451     _UIBackdropMaskViewGrayscaleTint = 1 << 0,
452     _UIBackdropMaskViewColorTint = 1 << 1,
453     _UIBackdropMaskViewFilters = 1 << 2,
454     _UIBackdropMaskViewAll = _UIBackdropMaskViewGrayscaleTint | _UIBackdropMaskViewColorTint | _UIBackdropMaskViewFilters,
455 };
456
457 @interface UIView ()
458 + (BOOL)_isInAnimationBlock;
459 - (CGSize)size;
460 - (void)setFrameOrigin:(CGPoint)origin;
461 - (void)setSize:(CGSize)size;
462 @property (nonatomic, assign, setter=_setBackdropMaskViewFlags:) NSInteger _backdropMaskViewFlags;
463 - (void)_populateArchivedSubviews:(NSMutableSet *)encodedViews;
464 #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000
465 - (void)safeAreaInsetsDidChange;
466 #endif
467 @end
468
469 @interface UIWebSelectionView : UIView
470 @end
471
472 @interface UIWebSelectionAssistant : NSObject <UIGestureRecognizerDelegate>
473 @end
474
475 @protocol UISelectionInteractionAssistant
476 - (void)showSelectionCommands;
477 @end
478
479 @interface UIWebSelectionAssistant ()
480 - (BOOL)isSelectionGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer;
481 - (id)initWithView:(UIView *)view;
482 - (void)clearSelection;
483 - (void)didEndScrollingOrZoomingPage;
484 - (void)didEndScrollingOverflow;
485 - (void)resignedFirstResponder;
486 - (void)selectionChanged;
487 - (void)setGestureRecognizers;
488 - (void)willStartScrollingOrZoomingPage;
489 - (void)willStartScrollingOverflow;
490 @property (nonatomic, retain) UIWebSelectionView *selectionView;
491 @property (nonatomic, readonly) CGRect selectionFrame;
492 @end
493
494 typedef NS_ENUM(NSInteger, UIWKSelectionTouch) {
495     UIWKSelectionTouchStarted = 0,
496     UIWKSelectionTouchMoved = 1,
497     UIWKSelectionTouchEnded = 2,
498     UIWKSelectionTouchEndedMovingForward = 3,
499     UIWKSelectionTouchEndedMovingBackward = 4,
500     UIWKSelectionTouchEndedNotMoving = 5,
501 };
502
503 typedef NS_ENUM(NSInteger, UIWKSelectionFlags) {
504     UIWKNone = 0,
505     UIWKWordIsNearTap = 1,
506     UIWKIsBlockSelection = 2,
507     UIWKPhraseBoundaryChanged = 4,
508 };
509
510 typedef NS_ENUM(NSInteger, UIWKGestureType) {
511     UIWKGestureLoupe = 0,
512     UIWKGestureOneFingerTap = 1,
513     UIWKGestureTapAndAHalf = 2,
514     UIWKGestureDoubleTap = 3,
515     UIWKGestureTapAndHalf = 4,
516     UIWKGestureDoubleTapInUneditable = 5,
517     UIWKGestureOneFingerTapInUneditable = 6,
518     UIWKGestureOneFingerTapSelectsAll = 7,
519     UIWKGestureOneFingerDoubleTap = 8,
520     UIWKGestureOneFingerTripleTap = 9,
521     UIWKGestureTwoFingerSingleTap = 10,
522     UIWKGestureTwoFingerRangedSelectGesture = 11,
523     UIWKGestureTapOnLinkWithGesture = 12,
524     UIWKGestureMakeWebSelection = 13,
525     UIWKGesturePhraseBoundary = 14,
526 };
527
528 @interface UIWKSelectionAssistant : UIWebSelectionAssistant
529 @end
530
531 @interface UIWKSelectionAssistant ()
532 - (BOOL)shouldHandleSingleTapAtPoint:(CGPoint)point;
533 - (void)blockSelectionChangedWithTouch:(UIWKSelectionTouch)touch withFlags:(UIWKSelectionFlags)flags growThreshold:(CGFloat)grow shrinkThreshold:(CGFloat)shrink;
534 - (void)selectionChangedWithGestureAt:(CGPoint)point withGesture:(UIWKGestureType)gestureType withState:(UIGestureRecognizerState)gestureState withFlags:(UIWKSelectionFlags)flags;
535 - (void)selectionChangedWithTouchAt:(CGPoint)point withSelectionTouch:(UIWKSelectionTouch)touch withFlags:(UIWKSelectionFlags)flags;
536 - (void)selectionChangedWithTouchAt:(CGPoint)point withSelectionTouch:(UIWKSelectionTouch)touch;
537 - (void)showDictionaryFor:(NSString *)selectedTerm fromRect:(CGRect)presentationRect;
538 - (void)showShareSheetFor:(NSString *)selectedTerm fromRect:(CGRect)presentationRect;
539 - (void)showTextServiceFor:(NSString *)selectedTerm fromRect:(CGRect)presentationRect;
540 - (void)lookup:(NSString *)textWithContext withRange:(NSRange)range fromRect:(CGRect)presentationRect;
541 @property (nonatomic, readonly) UILongPressGestureRecognizer *selectionLongPressRecognizer;
542 @end
543
544 typedef NS_ENUM(NSInteger, UIWKHandlePosition) {
545     UIWKHandleTop = 0,
546     UIWKHandleRight = 1,
547     UIWKHandleBottom = 2,
548     UIWKHandleLeft = 3,
549 };
550
551 @interface UIWKAutocorrectionRects : NSObject
552 @end
553
554 @interface UIWKAutocorrectionRects (UIWKAutocorrectionRectsDetails)
555 @property (nonatomic, assign) CGRect firstRect;
556 @property (nonatomic, assign) CGRect lastRect;
557 @end
558
559 @interface UIWKAutocorrectionContext : NSObject
560 @end
561
562 @interface UIWKAutocorrectionContext (UIWKAutocorrectionContextDetails)
563 @property (nonatomic, copy) NSString *contextBeforeSelection;
564 @property (nonatomic, copy) NSString *selectedText;
565 @property (nonatomic, copy) NSString *contextAfterSelection;
566 @property (nonatomic, copy) NSString *markedText;
567 @property (nonatomic, assign) NSRange rangeInMarkedText;
568 @end
569
570 @interface UIWKTextInteractionAssistant : UITextInteractionAssistant <UIResponderStandardEditActions>
571 @end
572
573 @interface UIWKTextInteractionAssistant ()
574 - (void)selectionChangedWithGestureAt:(CGPoint)point withGesture:(UIWKGestureType)gestureType withState:(UIGestureRecognizerState)gestureState withFlags:(UIWKSelectionFlags)flags;
575 - (void)showDictionaryFor:(NSString *)selectedTerm fromRect:(CGRect)presentationRect;
576 - (void)selectionChangedWithTouchAt:(CGPoint)point withSelectionTouch:(UIWKSelectionTouch)touch withFlags:(UIWKSelectionFlags)flags;
577 - (void)selectionChangedWithTouchAt:(CGPoint)point withSelectionTouch:(UIWKSelectionTouch)touch;
578 - (void)showTextStyleOptions;
579 - (void)hideTextStyleOptions;
580 - (void)lookup:(NSString *)textWithContext withRange:(NSRange)range fromRect:(CGRect)presentationRect;
581 - (void)showShareSheetFor:(NSString *)selectedTerm fromRect:(CGRect)presentationRect;
582 - (void)showTextServiceFor:(NSString *)selectedTerm fromRect:(CGRect)presentationRect;
583 - (void)scheduleReplacementsForText:(NSString *)text;
584 - (void)scheduleChineseTransliterationForText:(NSString *)text;
585
586 @property (nonatomic, readonly, assign) UILongPressGestureRecognizer *loupeGesture;
587 @property (nonatomic, readonly, assign) UITapGestureRecognizer *singleTapGesture;
588 @end
589
590 @protocol UIWKInteractionViewProtocol
591 - (void)changeSelectionWithGestureAt:(CGPoint)point withGesture:(UIWKGestureType)gestureType withState:(UIGestureRecognizerState)state;
592
593 - (void)changeSelectionWithTouchAt:(CGPoint)point withSelectionTouch:(UIWKSelectionTouch)touch baseIsStart:(BOOL)baseIsStart withFlags:(UIWKSelectionFlags)flags;
594 - (void)changeSelectionWithTouchesFrom:(CGPoint)from to:(CGPoint)to withGesture:(UIWKGestureType)gestureType withState:(UIGestureRecognizerState)gestureState;
595 - (CGRect)textFirstRect;
596 - (CGRect)textLastRect;
597
598 - (void)requestAutocorrectionContextWithCompletionHandler:(void (^)(UIWKAutocorrectionContext *autocorrectionContext))completionHandler;
599
600 - (void)requestAutocorrectionRectsForString:(NSString *)input withCompletionHandler:(void (^)(UIWKAutocorrectionRects *rectsForInput))completionHandler;
601
602 - (void)applyAutocorrection:(NSString *)correction toString:(NSString *)input withCompletionHandler:(void (^)(UIWKAutocorrectionRects *rectsForCorrection))completionHandler;
603
604 - (NSString *)markedText;
605 - (BOOL)hasMarkedText;
606
607 - (BOOL)hasSelectablePositionAtPoint:(CGPoint)point;
608 #if __IPHONE_OS_VERSION_MAX_ALLOWED < 110000
609 - (BOOL)pointIsInAssistedNode:(CGPoint)point;
610 #endif
611 - (NSArray *)webSelectionRects;
612 - (void)_cancelLongPressGestureRecognizer;
613
614 @optional
615
616 - (void)changeBlockSelectionWithTouchAt:(CGPoint)point withSelectionTouch:(UIWKSelectionTouch)touch forHandle:(UIWKHandlePosition)handle;
617 - (void)clearSelection;
618 - (void)replaceDictatedText:(NSString *)oldText withText:(NSString *)newText;
619 - (void)requestDictationContext:(void (^)(NSString *selectedText, NSString *prefixText, NSString *postfixText))completionHandler;
620 - (BOOL)pointIsNearMarkedText:(CGPoint)point;
621 - (NSString *)selectedText;
622 - (void)replaceText:(NSString *)text withText:(NSString *)word;
623 - (void)selectWordForReplacement;
624 - (BOOL)isReplaceAllowed;
625 - (void)selectWordBackward;
626 - (UIView *)unscaledView;
627 - (CGFloat)inverseScale;
628 - (CGRect)unobscuredContentRect;
629 @end
630
631 typedef enum {
632     UIWebSelectionModeWeb = 0,
633     UIWebSelectionModeTextOnly = 1,
634 } UIWebSelectionMode;
635
636 @protocol UIWebFormAccessoryDelegate;
637
638 @interface UIWebFormAccessory : UIInputView
639 @end
640
641 @interface UIWebFormAccessory ()
642 - (void)hideAutoFillButton;
643 - (void)setClearVisible:(BOOL)flag;
644 - (void)showAutoFillButtonWithTitle:(NSString *)title;
645 @property (nonatomic, retain) UIBarButtonItem *_autofill;
646 @property (nonatomic, assign) id <UIWebFormAccessoryDelegate> delegate;
647
648 @property (nonatomic, assign, getter=isNextEnabled) BOOL nextEnabled;
649 @property (nonatomic, assign, getter=isPreviousEnabled) BOOL previousEnabled;
650 - (id)initWithInputAssistantItem:(UITextInputAssistantItem *)inputAssistantItem;
651 @end
652
653 @protocol UIWebFormAccessoryDelegate
654 - (void)accessoryAutoFill;
655 - (void)accessoryClear;
656 - (void)accessoryDone;
657 - (void)accessoryTab:(BOOL)isNext;
658 @end
659
660 @interface UIWebGeolocationPolicyDecider : NSObject
661 @end
662
663 @interface UIWebGeolocationPolicyDecider ()
664 + (instancetype)sharedPolicyDecider;
665 - (void)decidePolicyForGeolocationRequestFromOrigin:(id)securityOrigin requestingURL:(NSURL *)requestingURL window:(UIWindow *)window listener:(id)listener;
666 @end
667
668 typedef enum {
669     UIWebTouchEventTouchBegin = 0,
670     UIWebTouchEventTouchChange = 1,
671     UIWebTouchEventTouchEnd = 2,
672     UIWebTouchEventTouchCancel = 3,
673 } UIWebTouchEventType;
674
675 typedef enum {
676     UIWebTouchPointTypeDirect = 0,
677     UIWebTouchPointTypeStylus
678 } UIWebTouchPointType;
679
680 struct _UIWebTouchPoint {
681     CGPoint locationInScreenCoordinates;
682     CGPoint locationInDocumentCoordinates;
683     unsigned identifier;
684     UITouchPhase phase;
685 #if __IPHONE_OS_VERSION_MIN_REQUIRED > 100000
686     CGFloat majorRadiusInScreenCoordinates;
687     CGFloat force;
688     CGFloat altitudeAngle;
689     CGFloat azimuthAngle;
690     UIWebTouchPointType touchType;
691 #endif
692 };
693
694 struct _UIWebTouchEvent {
695     UIWebTouchEventType type;
696     NSTimeInterval timestamp;
697     CGPoint locationInScreenCoordinates;
698     CGPoint locationInDocumentCoordinates;
699     CGFloat scale;
700     CGFloat rotation;
701
702     bool inJavaScriptGesture;
703
704     struct _UIWebTouchPoint* touchPoints;
705     unsigned touchPointCount;
706
707     bool isPotentialTap;
708 };
709
710 @class UIWebTouchEventsGestureRecognizer;
711
712 @protocol UIWebTouchEventsGestureRecognizerDelegate <NSObject>
713 - (BOOL)isAnyTouchOverActiveArea:(NSSet *)touches;
714 @optional
715 - (BOOL)gestureRecognizer:(UIWebTouchEventsGestureRecognizer *)gestureRecognizer shouldIgnoreWebTouchWithEvent:(UIEvent *)event;
716 @end
717
718 @interface UIWebTouchEventsGestureRecognizer : UIGestureRecognizer
719 @end
720
721 @interface UIWebTouchEventsGestureRecognizer ()
722 - (id)initWithTarget:(id)target action:(SEL)action touchDelegate:(id <UIWebTouchEventsGestureRecognizerDelegate>)delegate;
723 @property (nonatomic, getter=isDefaultPrevented) BOOL defaultPrevented;
724 @property (nonatomic, readonly) BOOL inJavaScriptGesture;
725 @property (nonatomic, readonly) CGPoint locationInWindow;
726 @property (nonatomic, readonly) UIWebTouchEventType type;
727 @property (nonatomic, readonly) const struct _UIWebTouchEvent *lastTouchEvent;
728 @end
729
730 typedef NS_ENUM(NSInteger, _UIBackdropViewStylePrivate) {
731     _UIBackdropViewStyle_Light = 2020,
732     _UIBackdropViewStyle_Dark = 2030
733 };
734
735 @interface _UIBackdropViewSettings : NSObject
736 @end
737
738 @interface _UIBackdropViewSettings ()
739 + (_UIBackdropViewSettings *)settingsForPrivateStyle:(_UIBackdropViewStylePrivate)style;
740 @property (nonatomic, assign) CGFloat scale;
741 @end
742
743 @interface _UIBackdropView : UIView
744 @end
745
746 @interface _UIBackdropView ()
747 - (instancetype)initWithPrivateStyle:(_UIBackdropViewStylePrivate)style;
748 - (instancetype)initWithSettings:(_UIBackdropViewSettings *)settings;
749 - (instancetype)initWithFrame:(CGRect)frame privateStyle:(_UIBackdropViewStylePrivate)style;
750 @property (nonatomic, strong, readonly) UIView *contentView;
751 @end
752
753 @interface _UIHighlightView : UIView
754 @end
755
756 @interface _UIHighlightView ()
757 - (void)setColor:(UIColor *)aColor;
758 - (void)setCornerRadii:(NSArray *)cornerRadii;
759 - (void)setCornerRadius:(CGFloat)aCornerRadius;
760 - (void)setFrames:(NSArray *)frames boundaryRect:(CGRect)aBoundarRect;
761 - (void)setQuads:(NSArray *)quads boundaryRect:(CGRect)aBoundaryRect;
762 @end
763
764 @interface _UINavigationParallaxTransition : NSObject <UIViewControllerAnimatedTransitioningEx>
765 @end
766
767 @interface _UINavigationParallaxTransition ()
768 - (instancetype) initWithCurrentOperation:(UINavigationControllerOperation)operation;
769 @end
770
771 @protocol _UINavigationInteractiveTransitionBaseDelegate;
772
773 @interface _UINavigationInteractiveTransitionBase : UIPercentDrivenInteractiveTransition <UIGestureRecognizerDelegate>
774 @end
775
776 @interface _UINavigationInteractiveTransitionBase ()
777 - (id)initWithGestureRecognizerView:(UIView *)gestureRecognizerView animator:(id<UIViewControllerAnimatedTransitioning>)animator delegate:(id<_UINavigationInteractiveTransitionBaseDelegate>)delegate;
778 @property (nonatomic, weak) UIPanGestureRecognizer *gestureRecognizer;
779 @property (nonatomic, assign) BOOL shouldReverseTranslation;
780 @property (nonatomic, retain) _UINavigationParallaxTransition *animationController;
781 @end
782
783 @protocol _UINavigationInteractiveTransitionBaseDelegate <NSObject>
784 - (void)startInteractiveTransition:(_UINavigationInteractiveTransitionBase *)interactiveTransition;
785 - (BOOL)shouldBeginInteractiveTransition:(_UINavigationInteractiveTransitionBase *)interactiveTransition;
786 - (BOOL)interactiveTransition:(_UINavigationInteractiveTransitionBase *)interactiveTransition gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;
787 - (BOOL)interactiveTransition:(_UINavigationInteractiveTransitionBase *)interactiveTransition gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;
788 - (UIPanGestureRecognizer *)gestureRecognizerForInteractiveTransition:(_UINavigationInteractiveTransitionBase *)interactiveTransition WithTarget:(id)target action:(SEL)action;
789 @end
790
791 @class BKSAnimationFenceHandle;
792
793 @interface UIWindow ()
794 + (BKSAnimationFenceHandle *)_synchronizedDrawingFence;
795 + (mach_port_t)_synchronizeDrawingAcrossProcesses;
796 - (void)_setWindowResolution:(CGFloat)resolution displayIfChanged:(BOOL)displayIfChanged;
797 @end
798
799 @interface UIWebScrollView : UIScrollView
800 @end
801
802 @interface UIWebTiledView : UIView
803 @end
804
805 @class WAKWindow;
806
807 @interface UIWebTiledView ()
808 - (void)setWAKWindow:(WAKWindow *)window;
809 @end
810
811 @interface UIWebDocumentView : UIWebTiledView
812 @end
813
814 typedef enum {
815     UIEveryDocumentMask = 0xFFFFFF,
816 } UIDocumentMask;
817
818 @interface UIWebDocumentView ()
819 - (void)setDelegate:(id)delegate;
820 - (void)setAutoresizes:(BOOL)flag;
821 - (void)setMinimumSize:(CGSize)aSize;
822 - (void)setInitialScale:(float)aScale forDocumentTypes:(UIDocumentMask)aDocumentMask;
823 - (void)setViewportSize:(CGSize)aSize forDocumentTypes:(UIDocumentMask)aDocumentMask;
824 - (void)setMinimumScale:(float)aScale forDocumentTypes:(UIDocumentMask)aDocumentMask;
825 - (void)setMaximumScale:(float)aScale forDocumentTypes:(UIDocumentMask)aDocumentMask;
826 @end
827
828 @interface UIWebBrowserView : UIWebDocumentView
829 @end
830
831 @class WebView;
832
833 @interface UIWebBrowserView ()
834 - (WebView *)webView;
835 - (void)setPaused:(BOOL)paused;
836 - (void)sendScrollEventIfNecessaryWasUserScroll:(BOOL)userScroll;
837 @property (nonatomic) BOOL inputViewObeysDOMFocus;
838 @end
839
840 @interface UIDocumentMenuViewController ()
841 - (instancetype)_initIgnoringApplicationEntitlementForImportOfTypes:(NSArray *)types;
842 @end
843
844 @protocol UIDocumentPasswordViewDelegate;
845
846 @interface UIDocumentPasswordView : UIView <UITextFieldDelegate>
847 @end
848
849 @interface UIDocumentPasswordView ()
850
851 - (id)initWithDocumentName:(NSString *)documentName;
852
853 @property (nonatomic, assign) NSObject<UIDocumentPasswordViewDelegate> *passwordDelegate;
854 @property (nonatomic, readonly) UITextField *passwordField;
855
856 @end
857
858 @protocol UIDocumentPasswordViewDelegate
859
860 @required
861
862 - (void)userDidEnterPassword:(NSString *)password forPasswordView:(UIDocumentPasswordView *)passwordView;
863
864 @optional
865
866 - (void)didBeginEditingPassword:(UITextField *)passwordField inView:(UIDocumentPasswordView *)passwordView;
867 - (void)didEndEditingPassword:(UITextField *)passwordField inView:(UIDocumentPasswordView *)passwordView;
868
869 @end
870
871 @interface UIViewControllerPreviewAction : NSObject <NSCopying>
872 @end
873
874 @interface UIViewControllerPreviewAction ()
875 + (instancetype)actionWithTitle:(NSString *)title handler:(void (^)(UIViewControllerPreviewAction *action, UIViewController *previewViewController))handler;
876 @end
877
878 #if ENABLE(DRAG_SUPPORT)
879
880 @interface UIItemProvider : NSItemProvider
881 @property (nonatomic) CGSize preferredPresentationSize;
882 @end
883
884 WTF_EXTERN_C_BEGIN
885
886 NSTimeInterval _UIDragInteractionDefaultLiftDelay();
887
888 WTF_EXTERN_C_END
889
890 typedef NS_OPTIONS(NSUInteger, UIDragOperation)
891 {
892     UIDragOperationNone = 0,
893     UIDragOperationEvery = NSUIntegerMax,
894 };
895
896 @interface UIDragInteraction ()
897 @property (nonatomic, assign, getter=_liftDelay, setter=_setLiftDelay:) NSTimeInterval liftDelay;
898 @end
899
900 @protocol UITextInput;
901 @interface _UITextDragCaretView : UIView
902 - (instancetype)initWithTextInputView:(UIView<UITextInput> *)textInputView;
903 -(void)insertAtPosition:(UITextPosition *)position;
904 -(void)updateToPosition:(UITextPosition *)position;
905 -(void)remove;
906 @end
907
908 @interface UICalloutBar : UIView
909 + (void)fadeSharedCalloutBar;
910 @end
911
912 @interface UIApplicationRotationFollowingWindow : UIWindow
913 @end
914 @interface UIAutoRotatingWindow : UIApplicationRotationFollowingWindow
915 @end
916
917 @interface UITextEffectsWindow : UIAutoRotatingWindow
918 + (UITextEffectsWindow *)sharedTextEffectsWindow;
919 @end
920
921 #endif
922
923 #endif // USE(APPLE_INTERNAL_SDK)
924
925 @interface UIColor (IPI)
926 + (UIColor *)insertionPointColor;
927 @end
928
929 @interface UIView (IPI)
930 - (UIScrollView *)_scroller;
931 - (CGPoint)accessibilityConvertPointFromSceneReferenceCoordinates:(CGPoint)point;
932 - (CGRect)accessibilityConvertRectToSceneReferenceCoordinates:(CGRect)rect;
933 @end
934
935 @interface UIPeripheralHost (IPI)
936 - (void)_beginIgnoringReloadInputViews;
937 - (int)_endIgnoringReloadInputViews;
938 - (void)forceReloadInputViews;
939 @end
940
941 @interface UIResponder ()
942 - (UIResponder *)firstResponder;
943 @end
944
945 WTF_EXTERN_C_BEGIN
946
947 BOOL UIKeyboardEnabledInputModesAllowOneToManyShortcuts();
948 BOOL UIKeyboardEnabledInputModesAllowChineseTransliterationForText(NSString *);
949 BOOL UIKeyboardCurrentInputModeAllowsChineseOrJapaneseReanalysisForText(NSString *);
950
951 extern const float UITableCellDefaultFontSize;
952 extern const float UITableViewCellDefaultFontSize;
953
954 extern NSString * const UIWindowDidMoveToScreenNotification;
955 extern NSString * const UIWindowDidRotateNotification;
956 extern NSString * const UIWindowNewScreenUserInfoKey;
957 extern NSString * const UIWindowWillRotateNotification;
958
959 extern NSString * const UIKeyboardIsLocalUserInfoKey;
960
961 extern UIApplication *UIApp;
962 BOOL _UIApplicationIsExtension(void);
963 void _UIApplicationLoadWebKit(void);
964 BOOL _UIApplicationUsesLegacyUI(void);
965
966 void UIImageDataWriteToSavedPhotosAlbum(NSData *imageData, id completionTarget, SEL completionSelector, void *contextInfo);
967
968 UIImage* _UIImageGetWebKitPhotoLibraryIcon(void);
969 UIImage* _UIImageGetWebKitTakePhotoOrVideoIcon(void);
970
971 extern const float UIWebViewGrowsAndShrinksToFitHeight;
972 extern const float UIWebViewScalesToFitScale;
973 extern const float UIWebViewStandardViewportWidth;
974
975 extern NSString *const UIKeyInputPageUp;
976 extern NSString *const UIKeyInputPageDown;
977
978 extern const NSString *UIPreviewDataLink;
979 extern const NSString *UIPreviewDataDDResult;
980 extern const NSString *UIPreviewDataDDContext;
981
982 extern const NSString *UIPreviewDataAttachmentList;
983 extern const NSString *UIPreviewDataAttachmentIndex;
984
985 UIEdgeInsets UIEdgeInsetsAdd(UIEdgeInsets lhs, UIEdgeInsets rhs, UIRectEdge);
986
987 WTF_EXTERN_C_END