Changeset 190368 in webkit
- Timestamp:
- Sep 30, 2015, 2:48:00 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 7 added
- 15 edited
- 2 copied
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/TestExpectations (modified) (1 diff)
-
LayoutTests/fast/events/ios (added)
-
LayoutTests/fast/events/ios/double-tap-zoom-expected.txt (added)
-
LayoutTests/fast/events/ios/double-tap-zoom.html (added)
-
LayoutTests/fast/events/ios/single-tap-generates-click-expected.txt (added)
-
LayoutTests/fast/events/ios/single-tap-generates-click.html (added)
-
LayoutTests/platform/ios-simulator-wk2/TestExpectations (modified) (1 diff)
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/WebKitTestRunner/Configurations/WebKitTestRunnerApp.xcconfig (modified) (1 diff)
-
Tools/WebKitTestRunner/UIScriptContext/Bindings/UIScriptController.idl (modified) (1 diff)
-
Tools/WebKitTestRunner/UIScriptContext/UIScriptContext.cpp (modified) (1 diff)
-
Tools/WebKitTestRunner/UIScriptContext/UIScriptContext.h (modified) (1 diff)
-
Tools/WebKitTestRunner/UIScriptContext/UIScriptController.cpp (modified) (3 diffs)
-
Tools/WebKitTestRunner/UIScriptContext/UIScriptController.h (modified) (3 diffs)
-
Tools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj (modified) (4 diffs)
-
Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.h (modified) (1 diff)
-
Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm (modified) (4 diffs)
-
Tools/WebKitTestRunner/ios/HIDEventGenerator.h (copied) (copied from trunk/Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.h ) (1 diff)
-
Tools/WebKitTestRunner/ios/HIDEventGenerator.mm (added)
-
Tools/WebKitTestRunner/ios/IOKitSPI.h (added)
-
Tools/WebKitTestRunner/ios/UIKitSPI.h (copied) (copied from trunk/Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.h ) (2 diffs)
-
Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm (modified) (3 diffs)
-
Tools/WebKitTestRunner/ios/mainIOS.mm (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r190367 r190368 1 2015-09-29 Simon Fraser <simon.fraser@apple.com> 2 3 [iOS] Allow tests to generate user gestures for UI testing 4 https://bugs.webkit.org/show_bug.cgi?id=149653 5 6 Reviewed by Tim Horton. 7 8 Simple tests for single tap triggering a click, and double-tap zoom. 9 10 * TestExpectations: 11 * fast/events/ios/double-tap-zoom-expected.txt: Added. 12 * fast/events/ios/double-tap-zoom.html: Added. 13 * fast/events/ios/single-tap-generates-click-expected.txt: Added. 14 * fast/events/ios/single-tap-generates-click.html: Added. 15 * platform/ios-simulator-wk2/TestExpectations: 16 1 17 2015-09-30 Keith Miller <keith_miller@apple.com> 2 18 -
trunk/LayoutTests/TestExpectations
r190260 r190368 17 17 fast/zooming/ios [ Skip ] 18 18 fast/viewport/ios [ Skip ] 19 fast/events/ios [ Skip ] 19 20 20 21 fast/forms/attributed-strings.html [ Skip ] -
trunk/LayoutTests/platform/ios-simulator-wk2/TestExpectations
r190260 r190368 11 11 fast/zooming/ios [ Pass ] 12 12 fast/viewport/ios [ Pass ] 13 fast/events/ios [ Pass ] 13 14 14 15 #////////////////////////////////////////////////////////////////////////////////////////// -
trunk/Tools/ChangeLog
r190366 r190368 1 2015-09-29 Simon Fraser <simon.fraser@apple.com> 2 3 [iOS] Allow tests to generate user gestures for UI testing 4 https://bugs.webkit.org/show_bug.cgi?id=149653 5 6 Reviewed by Tim Horton. 7 8 Expose functionality in UIScriptController to allow for testing single- and double-tap, 9 and to listen for completion of scrolling and zooming in the WKWebView. 10 11 Tap generation is done using synthetic IOHIDEvents, via a new HIDEventGenerator class 12 which hides the complexity of creating these events. Event dispatch is asynchronous. 13 We detect when the last event has been handled by dispatching a vendor-specific event, 14 which is detected via -_handleHIDEvent: in our UIApplication subclass. 15 16 * WebKitTestRunner/Configurations/WebKitTestRunnerApp.xcconfig: Link with IOKit. 17 * WebKitTestRunner/UIScriptContext/Bindings/UIScriptController.idl: Two new properties 18 for 'will begin zooming' and 'did end zooming' callbacks, and functions to dispatch 19 single and double taps. 20 * WebKitTestRunner/UIScriptContext/UIScriptContext.cpp: 21 (UIScriptContext::registerCallback): Used to store the callbacks for zooming. 22 Unlike the "task" callbacks, these are persistent, but we store them in the same hash map. 23 (UIScriptContext::unregisterCallback): 24 (UIScriptContext::callbackWithID): 25 (UIScriptContext::fireCallback): 26 * WebKitTestRunner/UIScriptContext/UIScriptContext.h: 27 * WebKitTestRunner/UIScriptContext/UIScriptController.cpp: 28 (WTR::UIScriptController::setWillBeginZoomingCallback): Cross-platform code. 29 (WTR::UIScriptController::willBeginZoomingCallback): Ditto. 30 (WTR::UIScriptController::setDidEndZoomingCallback): 31 (WTR::UIScriptController::didEndZoomingCallback): 32 (WTR::UIScriptController::singleTapAtPoint): Non-iOS stub. 33 (WTR::UIScriptController::doubleTapAtPoint): Ditto. 34 (WTR::UIScriptController::platformSetWillBeginZoomingCallback): 35 (WTR::UIScriptController::platformSetDidEndZoomingCallback): 36 * WebKitTestRunner/UIScriptContext/UIScriptController.h: 37 * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj: 38 * WebKitTestRunner/cocoa/TestRunnerWKWebView.h: Properties for the zooming callbacks. 39 * WebKitTestRunner/cocoa/TestRunnerWKWebView.mm: 40 (-[TestRunnerWKWebView zoomToScale:animated:completionHandler:]): Dispatch the zooming callback. 41 (-[TestRunnerWKWebView scrollViewWillBeginZooming:withView:]): Ditto. 42 (-[TestRunnerWKWebView scrollViewDidEndZooming:withView:atScale:]): Ditto. 43 (-[TestRunnerWKWebView onDidEndZooming:]): Deleted. 44 * WebKitTestRunner/ios/HIDEventGenerator.h: Copied from Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.h. 45 * WebKitTestRunner/ios/HIDEventGenerator.m: Added. 46 (simpleDragCurve): 47 (calculateNextLocation): 48 (delayBetweenMove): 49 (+[HIDEventGenerator sharedHIDEventGenerator]): 50 (+[HIDEventGenerator nextEventCallbackID]): 51 (-[HIDEventGenerator init]): 52 (-[HIDEventGenerator _createIOHIDEventType:]): 53 (-[HIDEventGenerator _sendHIDEvent:]): 54 (-[HIDEventGenerator _sendMarkerHIDEventWithCompletionBlock:]): 55 (-[HIDEventGenerator _updateTouchPoints:count:]): 56 (-[HIDEventGenerator touchDownAtPoints:touchCount:]): 57 (-[HIDEventGenerator touchDown:touchCount:]): 58 (-[HIDEventGenerator touchDown:]): 59 (-[HIDEventGenerator liftUpAtPoints:touchCount:]): 60 (-[HIDEventGenerator liftUp:touchCount:]): 61 (-[HIDEventGenerator liftUp:]): 62 (-[HIDEventGenerator moveToPoints:touchCount:duration:]): 63 (-[HIDEventGenerator sendTaps:location:withNumberOfTouches:completionBlock:]): 64 (-[HIDEventGenerator tap:completionBlock:]): 65 (-[HIDEventGenerator doubleTap:completionBlock:]): 66 (-[HIDEventGenerator twoFingerTap:completionBlock:]): 67 (-[HIDEventGenerator dragWithStartPoint:endPoint:duration:completionBlock:]): 68 (-[HIDEventGenerator pinchCloseWithStartPoint:endPoint:duration:completionBlock:]): 69 (-[HIDEventGenerator pinchOpenWithStartPoint:endPoint:duration:completionBlock:]): 70 (-[HIDEventGenerator markerEventReceived:]): 71 * WebKitTestRunner/ios/IOKitSPI.h: Added. 72 * WebKitTestRunner/ios/UIKitSPI.h: Copied from Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.h. 73 * WebKitTestRunner/ios/UIScriptControllerIOS.mm: 74 (WTR::globalToContentCoordinates): 75 (WTR::UIScriptController::singleTapAtPoint): 76 (WTR::UIScriptController::doubleTapAtPoint): 77 (WTR::UIScriptController::platformSetWillBeginZoomingCallback): 78 (WTR::UIScriptController::platformSetDidEndZoomingCallback): 79 * WebKitTestRunner/ios/mainIOS.mm: 80 (-[WebKitTestRunnerApp _handleHIDEvent:]): 81 1 82 2015-09-30 Dana Burkart <dburkart@apple.com> 2 83 -
trunk/Tools/WebKitTestRunner/Configurations/WebKitTestRunnerApp.xcconfig
r190206 r190368 28 28 PRODUCT_NAME = WebKitTestRunner; 29 29 GCC_ENABLE_OBJC_EXCEPTIONS = YES; 30 OTHER_LDFLAGS = $(inherited) -l$(WEBKIT_SYSTEM_INTERFACE_LIBRARY) -lWebKitTestRunner -framework JavaScriptCore -framework CoreGraphics -framework ImageIO -framework UIKit -framework WebKit -framework Foundation;30 OTHER_LDFLAGS = $(inherited) -l$(WEBKIT_SYSTEM_INTERFACE_LIBRARY) -lWebKitTestRunner -framework JavaScriptCore -framework CoreGraphics -framework ImageIO -framework IOKit -framework UIKit -framework WebKit -framework Foundation; 31 31 SKIP_INSTALL[sdk=macosx*] = YES; 32 32 EXCLUDED_SOURCE_FILE_NAMES[sdk=macosx*] = ios/* AppDelegate.m; -
trunk/Tools/WebKitTestRunner/UIScriptContext/Bindings/UIScriptController.idl
r190065 r190368 30 30 void zoomToScale(double scale, object callback); 31 31 32 // Interaction. 33 // These functions post events asynchronously. The callback is fired when the events have been disptached, but any 34 // resulting behavior may also be asynchronous. 35 void singleTapAtPoint(long x, long y, object callback); 36 void doubleTapAtPoint(long x, long y, object callback); 37 38 attribute object willBeginZoomingCallback; 39 attribute object didEndZoomingCallback; 40 41 // View state 32 42 readonly attribute double zoomScale; 33 43 readonly attribute double minimumZoomScale; -
trunk/Tools/WebKitTestRunner/UIScriptContext/UIScriptContext.cpp
r190065 r190368 103 103 } 104 104 105 unsigned UIScriptContext::registerCallback(JSValueRef taskCallback) 106 { 107 return prepareForAsyncTask(taskCallback); 108 } 109 110 void UIScriptContext::unregisterCallback(unsigned callbackID) 111 { 112 Task task = m_callbacks.take(callbackID); 113 ASSERT(task.callback); 114 JSValueUnprotect(m_context.get(), task.callback); 115 } 116 117 JSValueRef UIScriptContext::callbackWithID(unsigned callbackID) 118 { 119 Task task = m_callbacks.get(callbackID); 120 return task.callback; 121 } 122 123 void UIScriptContext::fireCallback(unsigned callbackID) 124 { 125 Task task = m_callbacks.get(callbackID); 126 ASSERT(task.callback); 127 128 JSValueRef exception = nullptr; 129 JSObjectRef callbackObject = JSValueToObject(m_context.get(), task.callback, &exception); 130 131 m_currentScriptCallbackID = task.parentScriptCallbackID; 132 133 exception = nullptr; 134 JSObjectCallAsFunction(m_context.get(), callbackObject, JSContextGetGlobalObject(m_context.get()), 0, nullptr, &exception); 135 136 m_currentScriptCallbackID = 0; 137 } 138 105 139 void UIScriptContext::uiScriptComplete(JSStringRef result) 106 140 { -
trunk/Tools/WebKitTestRunner/UIScriptContext/UIScriptContext.h
r190065 r190368 48 48 void uiScriptComplete(JSStringRef); 49 49 50 // For one-shot tasks callbacks. 50 51 unsigned prepareForAsyncTask(JSValueRef taskCallback); 51 52 void asyncTaskComplete(unsigned taskCallbackID); 53 54 // For persistent callbacks. 55 unsigned registerCallback(JSValueRef taskCallback); 56 JSValueRef callbackWithID(unsigned callbackID); 57 void unregisterCallback(unsigned callbackID); 58 void fireCallback(unsigned callbackID); 52 59 53 60 unsigned nextTaskCallbackID(); -
trunk/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.cpp
r190065 r190368 29 29 #include "JSUIScriptController.h" 30 30 #include "UIScriptContext.h" 31 // #include <JavaScriptCore/JavaScriptCore.h>31 #include <JavaScriptCore/JSValueRef.h> 32 32 33 33 namespace WTR { … … 54 54 #endif 55 55 56 void UIScriptController::setWillBeginZoomingCallback(JSValueRef callback) 57 { 58 m_willBeginZoomingCallback = m_context.registerCallback(callback); 59 platformSetWillBeginZoomingCallback(); 60 } 61 62 JSValueRef UIScriptController::willBeginZoomingCallback() const 63 { 64 return m_context.callbackWithID(m_willBeginZoomingCallback); 65 } 66 67 void UIScriptController::setDidEndZoomingCallback(JSValueRef callback) 68 { 69 m_didEndZoomingCallback = m_context.registerCallback(callback); 70 platformSetDidEndZoomingCallback(); 71 } 72 73 JSValueRef UIScriptController::didEndZoomingCallback() const 74 { 75 return m_context.callbackWithID(m_didEndZoomingCallback); 76 } 77 56 78 #if !PLATFORM(IOS) 57 79 void UIScriptController::zoomToScale(double, JSValueRef) 80 { 81 } 82 83 void UIScriptController::singleTapAtPoint(long x, long y, JSValueRef) 84 { 85 } 86 87 void UIScriptController::doubleTapAtPoint(long x, long y, JSValueRef) 58 88 { 59 89 } … … 78 108 return nullptr; 79 109 } 110 111 void UIScriptController::platformSetWillBeginZoomingCallback() 112 { 113 } 114 115 void UIScriptController::platformSetDidEndZoomingCallback() 116 { 117 } 80 118 #endif 81 119 -
trunk/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.h
r190065 r190368 46 46 void zoomToScale(double scale, JSValueRef callback); 47 47 48 void singleTapAtPoint(long x, long y, JSValueRef callback); 49 void doubleTapAtPoint(long x, long y, JSValueRef callback); 50 51 void setWillBeginZoomingCallback(JSValueRef); 52 JSValueRef willBeginZoomingCallback() const; 53 54 void setDidEndZoomingCallback(JSValueRef); 55 JSValueRef didEndZoomingCallback() const; 56 48 57 double zoomScale() const; 49 58 double minimumZoomScale() const; … … 56 65 private: 57 66 UIScriptController(UIScriptContext&); 67 68 void platformSetWillBeginZoomingCallback(); 69 void platformSetDidEndZoomingCallback(); 58 70 59 71 virtual JSClassRef wrapperClass() override; … … 62 74 63 75 UIScriptContext& m_context; 76 77 unsigned m_willBeginZoomingCallback { 0 }; 78 unsigned m_didEndZoomingCallback { 0 }; 64 79 }; 65 80 -
trunk/Tools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj
r190335 r190368 47 47 0FEB90A01905A834000FDBF3 /* InjectedBundlePageCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FEB909E1905A776000FDBF3 /* InjectedBundlePageCocoa.mm */; }; 48 48 0FEB90A51905C016000FDBF3 /* CrashReporterInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FEB90A31905BC6A000FDBF3 /* CrashReporterInfo.mm */; }; 49 0FEBF85A1BB61DF20028722D /* HIDEventGenerator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FEBF8591BB61DF20028722D /* HIDEventGenerator.mm */; settings = {ASSET_TAGS = (); }; }; 49 50 29210EAE144CACB700835BB5 /* AccessibilityUIElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29210EA9144CACB200835BB5 /* AccessibilityUIElement.cpp */; }; 50 51 29210EB0144CACBD00835BB5 /* AccessibilityController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29210EA2144CAAA500835BB5 /* AccessibilityController.cpp */; }; … … 190 191 0FEB90A21905BC6A000FDBF3 /* CrashReporterInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CrashReporterInfo.h; path = cocoa/CrashReporterInfo.h; sourceTree = "<group>"; }; 191 192 0FEB90A31905BC6A000FDBF3 /* CrashReporterInfo.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = CrashReporterInfo.mm; path = cocoa/CrashReporterInfo.mm; sourceTree = "<group>"; }; 193 0FEBF8581BB61DF20028722D /* HIDEventGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HIDEventGenerator.h; sourceTree = "<group>"; }; 194 0FEBF8591BB61DF20028722D /* HIDEventGenerator.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = HIDEventGenerator.mm; sourceTree = "<group>"; }; 195 0FEBF85B1BB62A370028722D /* IOKitSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IOKitSPI.h; sourceTree = "<group>"; }; 196 0FEBF85C1BB62D460028722D /* UIKitSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIKitSPI.h; sourceTree = "<group>"; }; 192 197 1A3326051B75396500F89F62 /* TestOptions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TestOptions.h; sourceTree = "<group>"; }; 193 198 26D758E5160BECDC00268472 /* GeolocationProviderMock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GeolocationProviderMock.cpp; sourceTree = "<group>"; }; … … 552 557 0F87B6181BACC558004EC572 /* Launch.storyboard */, 553 558 2EE52CEB1890A9A80010ED21 /* InfoPlist.strings */, 559 0FEBF85B1BB62A370028722D /* IOKitSPI.h */, 560 0FEBF85C1BB62D460028722D /* UIKitSPI.h */, 561 0FEBF8581BB61DF20028722D /* HIDEventGenerator.h */, 562 0FEBF8591BB61DF20028722D /* HIDEventGenerator.mm */, 554 563 2EE52D131890A9FB0010ED21 /* PlatformWebViewIOS.mm */, 555 564 2EE52D141890A9FB0010ED21 /* TestControllerIOS.mm */, … … 915 924 2E63ED921891ADAD002A7AFC /* TestControllerIOS.mm in Sources */, 916 925 2E63ED9C1891ADC7002A7AFC /* AppDelegate.m in Sources */, 926 0FEBF85A1BB61DF20028722D /* HIDEventGenerator.mm in Sources */, 917 927 2E63ED911891ADAD002A7AFC /* PlatformWebViewIOS.mm in Sources */, 918 928 ); -
trunk/Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.h
r190065 r190368 31 31 32 32 #if PLATFORM(IOS) 33 34 @property (nonatomic, copy) void (^willBeginZoomingCallback)(void); 35 @property (nonatomic, copy) void (^didEndZoomingCallback)(void); 36 33 37 - (void)zoomToScale:(double)scale animated:(BOOL)animated completionHandler:(void (^)(void))completionHandler; 34 - (void)onDidEndZooming:(void (^)(void))completionHandler; 38 35 39 #endif 36 40 -
trunk/Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm
r190087 r190368 34 34 @interface WKWebView () 35 35 36 // FIXME: move these to WKWebView_Private.h 37 - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view; 36 38 - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale; 37 39 … … 42 44 43 45 @interface TestRunnerWKWebView () 44 @property (nonatomic, copy) void (^zoom CompletionHandler)(void);46 @property (nonatomic, copy) void (^zoomToScaleCompletionHandler)(void); 45 47 @end 46 48 … … 58 60 - (void)zoomToScale:(double)scale animated:(BOOL)animated completionHandler:(void (^)(void))completionHandler 59 61 { 60 ASSERT(!self.zoom CompletionHandler);61 self.zoom CompletionHandler = completionHandler;62 ASSERT(!self.zoomToScaleCompletionHandler); 63 self.zoomToScaleCompletionHandler = completionHandler; 62 64 63 65 [self.scrollView setZoomScale:scale animated:animated]; 66 } 67 68 - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view 69 { 70 [super scrollViewWillBeginZooming:scrollView withView:view]; 71 72 if (self.willBeginZoomingCallback) 73 self.willBeginZoomingCallback(); 64 74 } 65 75 … … 68 78 [super scrollViewDidEndZooming:scrollView withView:view atScale:scale]; 69 79 70 if (self.zoomCompletionHandler) { 71 self.zoomCompletionHandler(); 72 self.zoomCompletionHandler = nullptr; 80 if (self.didEndZoomingCallback) 81 self.didEndZoomingCallback(); 82 83 if (self.zoomToScaleCompletionHandler) { 84 self.zoomToScaleCompletionHandler(); 85 self.zoomToScaleCompletionHandler = nullptr; 73 86 } 74 }75 76 - (void)onDidEndZooming:(void (^)(void))completionHandler77 {78 ASSERT(!self.zoomCompletionHandler);79 self.zoomCompletionHandler = completionHandler;80 87 } 81 88 #endif -
trunk/Tools/WebKitTestRunner/ios/HIDEventGenerator.h
r190367 r190368 24 24 */ 25 25 26 #import <WebKit/WebKit.h>26 #import "UIKitSPI.h" 27 27 28 #i f WK_API_ENABLED28 #import <CoreGraphics/CGGeometry.h> 29 29 30 @interface TestRunnerWKWebView : WKWebView30 @interface HIDEventGenerator : NSObject 31 31 32 #if PLATFORM(IOS) 33 - (void)zoomToScale:(double)scale animated:(BOOL)animated completionHandler:(void (^)(void))completionHandler; 34 - (void)onDidEndZooming:(void (^)(void))completionHandler; 35 #endif 32 + (HIDEventGenerator *)sharedHIDEventGenerator; 33 34 // Touches 35 - (void)touchDown:(CGPoint)location; 36 - (void)liftUp:(CGPoint)location; 37 - (void)moveToPoints:(CGPoint*)locations touchCount:(NSUInteger)count duration:(NSTimeInterval)seconds; 38 39 // Taps 40 - (void)tap:(CGPoint)location completionBlock:(void (^)(void))completionBlock; 41 - (void)doubleTap:(CGPoint)location completionBlock:(void (^)(void))completionBlock; 42 - (void)twoFingerTap:(CGPoint)location completionBlock:(void (^)(void))completionBlock; 43 44 // Drags 45 - (void)dragWithStartPoint:(CGPoint)startLocation endPoint:(CGPoint)endLocation duration:(double)seconds completionBlock:(void (^)(void))completionBlock; 46 47 // Pinches 48 - (void)pinchCloseWithStartPoint:(CGPoint)startLocation endPoint:(CGPoint)endLocation duration:(double)seconds completionBlock:(void (^)(void))completionBlock; 49 - (void)pinchOpenWithStartPoint:(CGPoint)startLocation endPoint:(CGPoint)endLocation duration:(double)seconds completionBlock:(void (^)(void))completionBlock; 50 51 - (void)markerEventReceived:(IOHIDEventRef)event; 36 52 37 53 @end 38 39 #endif // #if WK_API_ENABLED -
trunk/Tools/WebKitTestRunner/ios/UIKitSPI.h
r190367 r190368 1 1 /* 2 * Copyright (C) 201 5Apple Inc. All rights reserved.2 * Copyright (C) 2014 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 #import < WebKit/WebKit.h>26 #import <UIKit/UIKit.h> 27 27 28 #if WK_API_ENABLED28 #if USE(APPLE_INTERNAL_SDK) 29 29 30 @interface TestRunnerWKWebView : WKWebView 30 #import <UIKit/UIApplication_Private.h> 31 #import <UIKit/UIWindow_Private.h> 31 32 32 #if PLATFORM(IOS) 33 - (void)zoomToScale:(double)scale animated:(BOOL)animated completionHandler:(void (^)(void))completionHandler; 34 - (void)onDidEndZooming:(void (^)(void))completionHandler; 35 #endif 33 #else 36 34 35 #import "IOKitSPI.h" 36 37 @interface UIApplication () 38 - (void)_enqueueHIDEvent:(IOHIDEventRef)event; 39 - (void)_handleHIDEvent:(IOHIDEventRef)event; 37 40 @end 38 41 39 #endif // #if WK_API_ENABLED 42 @interface UIWindow () 43 - (uint32_t)_contextId; 44 @end 45 46 #endif -
trunk/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm
r190065 r190368 29 29 #if PLATFORM(IOS) 30 30 31 #import "HIDEventGenerator.h" 31 32 #import "PlatformWebView.h" 32 33 #import "TestController.h" … … 65 66 } 66 67 68 static CGPoint globalToContentCoordinates(TestRunnerWKWebView *webView, long x, long y) 69 { 70 CGPoint point = CGPointMake(x, y); 71 point = [webView _convertPointFromContentsToView:point]; 72 point = [webView convertPoint:point toView:nil]; 73 point = [webView.window convertPoint:point toWindow:nil]; 74 return point; 75 } 76 77 void UIScriptController::singleTapAtPoint(long x, long y, JSValueRef callback) 78 { 79 unsigned callbackID = m_context.prepareForAsyncTask(callback); 80 81 [[HIDEventGenerator sharedHIDEventGenerator] tap:globalToContentCoordinates(TestController::singleton().mainWebView()->platformView(), x, y) completionBlock:^{ 82 m_context.asyncTaskComplete(callbackID); 83 }]; 84 } 85 86 void UIScriptController::doubleTapAtPoint(long x, long y, JSValueRef callback) 87 { 88 unsigned callbackID = m_context.prepareForAsyncTask(callback); 89 90 [[HIDEventGenerator sharedHIDEventGenerator] doubleTap:globalToContentCoordinates(TestController::singleton().mainWebView()->platformView(), x, y) completionBlock:^{ 91 m_context.asyncTaskComplete(callbackID); 92 }]; 93 } 94 67 95 double UIScriptController::minimumZoomScale() const 68 96 { … … 87 115 } 88 116 117 void UIScriptController::platformSetWillBeginZoomingCallback() 118 { 119 TestRunnerWKWebView *webView = TestController::singleton().mainWebView()->platformView(); 120 webView.willBeginZoomingCallback = ^{ 121 m_context.fireCallback(m_willBeginZoomingCallback); 122 }; 123 } 124 125 void UIScriptController::platformSetDidEndZoomingCallback() 126 { 127 TestRunnerWKWebView *webView = TestController::singleton().mainWebView()->platformView(); 128 webView.didEndZoomingCallback = ^{ 129 m_context.fireCallback(m_didEndZoomingCallback); 130 }; 131 } 132 89 133 } 90 134 -
trunk/Tools/WebKitTestRunner/ios/mainIOS.mm
r188892 r190368 26 26 #import "config.h" 27 27 28 #import "HIDEventGenerator.h" 28 29 #import "TestController.h" 30 #import "UIKitSPI.h" 29 31 #import <UIKit/UIKit.h> 30 32 … … 71 73 } 72 74 75 - (void)_handleHIDEvent:(IOHIDEventRef)event 76 { 77 [[HIDEventGenerator sharedHIDEventGenerator] markerEventReceived:event]; 78 } 79 73 80 @end 74 81
Note:
See TracChangeset
for help on using the changeset viewer.