Another unreviewed followup to:
[WebKit-https.git] / Tools / TestWebKitAPI / cocoa / TestWKWebView.h
1 /*
2  * Copyright (C) 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 #if WK_API_ENABLED
27
28 #import <WebKit/WebKit.h>
29 #import <wtf/RetainPtr.h>
30
31 @class _WKProcessPoolConfiguration;
32
33 #if PLATFORM(IOS)
34 @class _WKActivatedElementInfo;
35 #endif
36
37 @interface WKWebView (AdditionalDeclarations)
38 #if PLATFORM(MAC)
39 - (void)paste:(id)sender;
40 #endif
41 @end
42
43 @interface TestMessageHandler : NSObject <WKScriptMessageHandler>
44 - (void)addMessage:(NSString *)message withHandler:(dispatch_block_t)handler;
45 @end
46
47 @interface TestWKWebView : WKWebView
48 - (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration *)configuration processPoolConfiguration:(_WKProcessPoolConfiguration *)processPoolConfiguration;
49 - (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration *)configuration addToWindow:(BOOL)addToWindow;
50 - (void)clearMessageHandlers:(NSArray *)messageNames;
51 - (void)performAfterReceivingMessage:(NSString *)message action:(dispatch_block_t)action;
52 - (void)loadTestPageNamed:(NSString *)pageName;
53 - (void)synchronouslyLoadHTMLString:(NSString *)html;
54 - (void)synchronouslyLoadTestPageNamed:(NSString *)pageName;
55 - (id)objectByEvaluatingJavaScript:(NSString *)script;
56 - (NSString *)stringByEvaluatingJavaScript:(NSString *)script;
57 - (void)waitForMessage:(NSString *)message;
58 - (void)performAfterLoading:(dispatch_block_t)actions;
59 - (void)waitForNextPresentationUpdate;
60 @end
61
62 #if PLATFORM(IOS)
63 @interface TestWKWebView (IOSOnly)
64 @property (nonatomic, readonly) UIView <UITextInput> *textInputContentView;
65 @property (nonatomic, readonly) RetainPtr<NSArray> selectionRectsAfterPresentationUpdate;
66 - (_WKActivatedElementInfo *)activatedElementAtPosition:(CGPoint)position;
67 @end
68 #endif
69
70 #if PLATFORM(MAC)
71 @interface TestWKWebView (MacOnly)
72 // Simulates clicking with a pressure-sensitive device, if possible.
73 - (void)mouseDownAtPoint:(NSPoint)point simulatePressure:(BOOL)simulatePressure;
74 - (void)mouseUpAtPoint:(NSPoint)point;
75 - (void)mouseMoveToPoint:(NSPoint)point withFlags:(NSEventModifierFlags)flags;
76 - (void)sendClicksAtPoint:(NSPoint)point numberOfClicks:(NSUInteger)numberOfClicks;
77 - (NSWindow *)hostWindow;
78 - (void)typeCharacter:(char)character;
79 @end
80 #endif
81
82 #endif // WK_API_ENABLED
83