Diff
Modified: trunk/LayoutTests/ChangeLog (207446 => 207447)
--- trunk/LayoutTests/ChangeLog 2016-10-18 01:00:58 UTC (rev 207446)
+++ trunk/LayoutTests/ChangeLog 2016-10-18 01:08:25 UTC (rev 207447)
@@ -1,3 +1,13 @@
+2016-10-17 Megan Gardner <megan_gard...@apple.com>
+
+ Add test and infrastructure for link popover
+ https://bugs.webkit.org/show_bug.cgi?id=163406
+
+ Reviewed by Simon Fraser.
+
+ * fast/events/touch/ios/iphone7/force-press-on-link-expected.txt: Added.
+ * fast/events/touch/ios/iphone7/force-press-on-link.html: Added.
+
2016-10-17 Joseph Pecoraro <pecor...@apple.com>
Web Inspector: Add toggles for debugger pauses at console.assert failures
Added: trunk/LayoutTests/fast/events/touch/ios/iphone7/force-press-on-link-expected.txt (0 => 207447)
--- trunk/LayoutTests/fast/events/touch/ios/iphone7/force-press-on-link-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/events/touch/ios/iphone7/force-press-on-link-expected.txt 2016-10-18 01:08:25 UTC (rev 207447)
@@ -0,0 +1 @@
+PASS: correct page loaded in popover
Added: trunk/LayoutTests/fast/events/touch/ios/iphone7/force-press-on-link.html (0 => 207447)
--- trunk/LayoutTests/fast/events/touch/ios/iphone7/force-press-on-link.html (rev 0)
+++ trunk/LayoutTests/fast/events/touch/ios/iphone7/force-press-on-link.html 2016-10-18 01:08:25 UTC (rev 207447)
@@ -0,0 +1,111 @@
+<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] -->
+
+<html>
+<head>
+ <script>
+ if (window.testRunner) {
+ testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+ }
+
+ function getUIScript()
+ {
+ return `
+ (function() {
+ var eventStream = {
+ events : [
+ {
+ interpolate : "linear",
+ timestep: 0.025,
+ startEvent : {
+ inputType : "hand",
+ timeOffset : 0,
+ touches : [
+ {
+ inputType : "finger",
+ phase : "began",
+ id : 1,
+ x : 20,
+ y : 40,
+ pressure : 0
+ }
+ ]
+ },
+ endEvent : {
+ inputType : "hand",
+ timeOffset : 3.0,
+ touches : [
+ {
+ inputType : "finger",
+ phase : "stationary",
+ id : 1,
+ x : 20,
+ y : 40,
+ pressure : 500
+ }
+ ]
+ }
+ }
+ ]
+ };
+
+ uiController.sendEventStream(JSON.stringify(eventStream), function() {});
+
+ uiController.didShowForcePressPreviewCallback = function() {
+ uiController.uiScriptComplete(JSON.stringify(uiController.contentsOfUserInterfaceItem('linkPreviewPopoverContents')));
+ };
+
+ })();`
+ }
+
+ function getUIFinishScript()
+ {
+ return `
+ (function() {
+ uiController.liftUpAtPoint(20, 40, 1, function() {
+ uiController.uiScriptComplete();
+ });
+ })();`
+ }
+
+ function runTest()
+ {
+ if (!testRunner.runUIScript)
+ return;
+
+ var output = '';
+ var target = document.getElementById('target');
+
+ if (testRunner.runUIScript) {
+ testRunner.runUIScript(getUIScript(), function(result) {
+ var uiContentsDictionary = JSON.parse(result);
+ var pageURL = uiContentsDictionary.linkPreviewPopoverContents.pageURL;
+ if (pageURL = 'http://localhost:54321')
+ output += 'PASS: correct page loaded in popover';
+ document.getElementById('target').innerHTML = output;
+
+ testRunner.runUIScript(getUIFinishScript(), function() {
+ testRunner.notifyDone();
+ });
+ });
+ }
+ }
+
+ window.addEventListener('load', runTest, false);
+ </script>
+ <style>
+ #target {
+ height: 100px;
+ width: 200px;
+ background-color: silver;
+ }
+ </style>
+ <meta name="viewport" content="initial-scale=1">
+</head>
+<body>
+<div id="target">
+ <a href="" Test</a>
+ This test requires UIScriptController to run.
+</div>
+</body>
+</html>
Modified: trunk/Source/WebKit2/ChangeLog (207446 => 207447)
--- trunk/Source/WebKit2/ChangeLog 2016-10-18 01:00:58 UTC (rev 207446)
+++ trunk/Source/WebKit2/ChangeLog 2016-10-18 01:08:25 UTC (rev 207447)
@@ -1,3 +1,22 @@
+2016-10-17 Megan Gardner <megan_gard...@apple.com>
+
+ Add test and infrastructure for link popover
+ https://bugs.webkit.org/show_bug.cgi?id=163406
+
+ Reviewed by Simon Fraser.
+
+ Add infrastructure to see when a link popover appears, and what URL it has loaded.
+
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView didShowForcePressPreview]):
+ (-[WKWebView didDismissForcePressPreview]):
+ * UIProcess/API/Cocoa/WKWebViewPrivate.h:
+ * UIProcess/ios/WKContentViewInteraction.mm:
+ (-[WKContentView _contentsOfUserInterfaceItem:]):
+ (-[WKContentView _presentedViewControllerForPreviewItemController:]):
+ (-[WKContentView _previewItemController:didDismissPreview:committing:]):
+ (-[WKContentView _previewItemControllerDidCancelPreview:]):
+
2016-10-17 Tim Horton <timothy_hor...@apple.com>
REGRESSION (r169805): WKWebView canGoBack returning YES when nothing is in the back-forward list after restoring session state
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (207446 => 207447)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2016-10-18 01:00:58 UTC (rev 207446)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2016-10-18 01:08:25 UTC (rev 207447)
@@ -4547,6 +4547,16 @@
// For subclasses to override.
}
+- (void)_didShowForcePressPreview
+{
+ // For subclasses to override.
+}
+
+- (void)_didDismissForcePressPreview
+{
+ // For subclasses to override.
+}
+
- (NSArray<UIView *> *)_uiTextSelectionRectViews
{
return [_contentView valueForKeyPath:@"interactionAssistant.selectionView.rangeView.m_rectViews"];
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h (207446 => 207447)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h 2016-10-18 01:00:58 UTC (rev 207446)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h 2016-10-18 01:08:25 UTC (rev 207447)
@@ -268,6 +268,9 @@
- (void)didStartFormControlInteraction WK_API_AVAILABLE(ios(WK_IOS_TBA));
- (void)didEndFormControlInteraction WK_API_AVAILABLE(ios(WK_IOS_TBA));
+- (void)_didShowForcePressPreview WK_API_AVAILABLE(ios(WK_IOS_TBA));
+- (void)_didDismissForcePressPreview WK_API_AVAILABLE(ios(WK_IOS_TBA));
+
@property (nonatomic, readonly) NSArray<UIView *> *_uiTextSelectionRectViews WK_API_AVAILABLE(ios(WK_IOS_TBA));
#endif
Modified: trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm (207446 => 207447)
--- trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm 2016-10-18 01:00:58 UTC (rev 207446)
+++ trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm 2016-10-18 01:08:25 UTC (rev 207447)
@@ -3849,6 +3849,11 @@
if ([userInterfaceItem isEqualToString:@"actionSheet"])
return @{ userInterfaceItem: [_actionSheetAssistant currentAvailableActionTitles] };
+ if ([userInterfaceItem isEqualToString:@"linkPreviewPopoverContents"]) {
+ NSString *url = "" previewData][UIPreviewDataLink];
+ return @{ userInterfaceItem: @{ @"pageURL": url } };
+ }
+
return nil;
}
@@ -4022,6 +4027,8 @@
- (UIViewController *)_presentedViewControllerForPreviewItemController:(UIPreviewItemController *)controller
{
id <WKUIDelegatePrivate> uiDelegate = static_cast<id <WKUIDelegatePrivate>>([_webView UIDelegate]);
+
+ [_webView _didShowForcePressPreview];
NSURL *targetURL = controller.previewData[UIPreviewDataLink];
URL coreTargetURL = targetURL;
@@ -4128,6 +4135,8 @@
[uiDelegate _webView:_webView didDismissPreviewViewController:viewController committing:committing];
else if ([uiDelegate respondsToSelector:@selector(_webView:didDismissPreviewViewController:)])
[uiDelegate _webView:_webView didDismissPreviewViewController:viewController];
+
+ [_webView _didDismissForcePressPreview];
}
- (UIImage *)_presentationSnapshotForPreviewItemController:(UIPreviewItemController *)controller
@@ -4161,6 +4170,8 @@
- (void)_previewItemControllerDidCancelPreview:(UIPreviewItemController *)controller
{
_highlightLongPressCanClick = NO;
+
+ [_webView _didDismissForcePressPreview];
}
@end
Modified: trunk/Tools/ChangeLog (207446 => 207447)
--- trunk/Tools/ChangeLog 2016-10-18 01:00:58 UTC (rev 207446)
+++ trunk/Tools/ChangeLog 2016-10-18 01:08:25 UTC (rev 207447)
@@ -1,3 +1,41 @@
+2016-10-17 Megan Gardner <megan_gard...@apple.com>
+
+ Add test and infrastructure for link popover
+ https://bugs.webkit.org/show_bug.cgi?id=163406
+
+ Reviewed by Simon Fraser.
+
+ Added functionality test for link popovers.
+ Can query for what URL is loaded, and that the popover has appeared or has
+ been dismissed.
+ Added a link popover test.
+
+ * DumpRenderTree/ios/UIScriptControllerIOS.mm:
+ (WTR::UIScriptController::platformSetDidShowForcePressPreviewCallback):
+ (WTR::UIScriptController::platformSetDidDismissForcePressPreviewCallback):
+ (WTR::UIScriptController::platformSetDidEndFormControlInteractionCallback): Deleted.
+ * TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
+ * TestRunnerShared/UIScriptContext/UIScriptContext.h:
+ * TestRunnerShared/UIScriptContext/UIScriptController.cpp:
+ (WTR::UIScriptController::setDidShowForcePressPreviewCallback):
+ (WTR::UIScriptController::didShowForcePressPreviewCallback):
+ (WTR::UIScriptController::setDidDismissForcePressPreviewCallback):
+ (WTR::UIScriptController::didDismissForcePressPreviewCallback):
+ (WTR::UIScriptController::platformSetDidShowForcePressPreviewCallback):
+ (WTR::UIScriptController::platformSetDidDismissForcePressPreviewCallback):
+ (WTR::UIScriptController::didEndFormControlInteractionCallback): Deleted.
+ (WTR::UIScriptController::platformSetDidEndFormControlInteractionCallback): Deleted.
+ * TestRunnerShared/UIScriptContext/UIScriptController.h:
+ * WebKitTestRunner/cocoa/TestRunnerWKWebView.h:
+ * WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:
+ (-[TestRunnerWKWebView dealloc]):
+ (-[TestRunnerWKWebView didShowForcePressPreview]):
+ (-[TestRunnerWKWebView didDismissForcePressPreview]):
+ * WebKitTestRunner/ios/UIScriptControllerIOS.mm:
+ (WTR::UIScriptController::platformSetDidShowForcePressPreviewCallback):
+ (WTR::UIScriptController::platformSetDidDismissForcePressPreviewCallback):
+ (WTR::UIScriptController::platformSetDidEndFormControlInteractionCallback): Deleted.
+
2016-10-17 Tim Horton <timothy_hor...@apple.com>
REGRESSION (r169805): WKWebView canGoBack returning YES when nothing is in the back-forward list after restoring session state
Modified: trunk/Tools/DumpRenderTree/ios/UIScriptControllerIOS.mm (207446 => 207447)
--- trunk/Tools/DumpRenderTree/ios/UIScriptControllerIOS.mm 2016-10-18 01:00:58 UTC (rev 207446)
+++ trunk/Tools/DumpRenderTree/ios/UIScriptControllerIOS.mm 2016-10-18 01:08:25 UTC (rev 207447)
@@ -173,7 +173,15 @@
void UIScriptController::platformSetDidEndFormControlInteractionCallback()
{
}
+
+void UIScriptController::platformSetDidShowForcePressPreviewCallback()
+{
+}
+void UIScriptController::platformSetDidDismissForcePressPreviewCallback()
+{
+}
+
void UIScriptController::platformSetWillBeginZoomingCallback()
{
}
Modified: trunk/Tools/TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl (207446 => 207447)
--- trunk/Tools/TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl 2016-10-18 01:00:58 UTC (rev 207446)
+++ trunk/Tools/TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl 2016-10-18 01:08:25 UTC (rev 207447)
@@ -122,6 +122,10 @@
attribute object didStartFormControlInteractionCallback;
attribute object didEndFormControlInteractionCallback;
+ // Force press preview handling
+ attribute object didShowForcePressPreviewCallback;
+ attribute object didDismissForcePressPreviewCallback;
+
// <select> picker
void selectFormAccessoryPickerRow(long rowIndex);
Modified: trunk/Tools/TestRunnerShared/UIScriptContext/UIScriptContext.h (207446 => 207447)
--- trunk/Tools/TestRunnerShared/UIScriptContext/UIScriptContext.h 2016-10-18 01:00:58 UTC (rev 207446)
+++ trunk/Tools/TestRunnerShared/UIScriptContext/UIScriptContext.h 2016-10-18 01:08:25 UTC (rev 207447)
@@ -56,6 +56,8 @@
CallbackTypeDidEndScrolling,
CallbackTypeDidStartFormControlInteraction,
CallbackTypeDidEndFormControlInteraction,
+ CallbackTypeDidShowForcePressPreview,
+ CallbackTypeDidDismissForcePressPreview,
CallbackTypeNonPersistent = firstNonPersistentCallbackID
} CallbackType;
Modified: trunk/Tools/TestRunnerShared/UIScriptContext/UIScriptController.cpp (207446 => 207447)
--- trunk/Tools/TestRunnerShared/UIScriptContext/UIScriptController.cpp 2016-10-18 01:00:58 UTC (rev 207446)
+++ trunk/Tools/TestRunnerShared/UIScriptContext/UIScriptController.cpp 2016-10-18 01:08:25 UTC (rev 207447)
@@ -79,7 +79,29 @@
{
return m_context->callbackWithID(CallbackTypeDidEndFormControlInteraction);
}
+
+void UIScriptController::setDidShowForcePressPreviewCallback(JSValueRef callback)
+{
+ m_context->registerCallback(callback, CallbackTypeDidShowForcePressPreview);
+ platformSetDidShowForcePressPreviewCallback();
+}
+JSValueRef UIScriptController::didShowForcePressPreviewCallback() const
+{
+ return m_context->callbackWithID(CallbackTypeDidShowForcePressPreview);
+}
+
+void UIScriptController::setDidDismissForcePressPreviewCallback(JSValueRef callback)
+{
+ m_context->registerCallback(callback, CallbackTypeDidDismissForcePressPreview);
+ platformSetDidDismissForcePressPreviewCallback();
+}
+
+JSValueRef UIScriptController::didDismissForcePressPreviewCallback() const
+{
+ return m_context->callbackWithID(CallbackTypeDidDismissForcePressPreview);
+}
+
void UIScriptController::setWillBeginZoomingCallback(JSValueRef callback)
{
m_context->registerCallback(callback, CallbackTypeWillBeginZooming);
@@ -253,7 +275,15 @@
void UIScriptController::platformSetDidEndFormControlInteractionCallback()
{
}
+
+void UIScriptController::platformSetDidShowForcePressPreviewCallback()
+{
+}
+void UIScriptController::platformSetDidDismissForcePressPreviewCallback()
+{
+}
+
void UIScriptController::platformSetWillBeginZoomingCallback()
{
}
Modified: trunk/Tools/TestRunnerShared/UIScriptContext/UIScriptController.h (207446 => 207447)
--- trunk/Tools/TestRunnerShared/UIScriptContext/UIScriptController.h 2016-10-18 01:00:58 UTC (rev 207446)
+++ trunk/Tools/TestRunnerShared/UIScriptContext/UIScriptController.h 2016-10-18 01:08:25 UTC (rev 207447)
@@ -85,6 +85,12 @@
void setDidEndFormControlInteractionCallback(JSValueRef);
JSValueRef didEndFormControlInteractionCallback() const;
+
+ void setDidShowForcePressPreviewCallback(JSValueRef);
+ JSValueRef didShowForcePressPreviewCallback() const;
+
+ void setDidDismissForcePressPreviewCallback(JSValueRef);
+ JSValueRef didDismissForcePressPreviewCallback() const;
void setWillBeginZoomingCallback(JSValueRef);
JSValueRef willBeginZoomingCallback() const;
@@ -118,6 +124,8 @@
void platformSetDidStartFormControlInteractionCallback();
void platformSetDidEndFormControlInteractionCallback();
+ void platformSetDidShowForcePressPreviewCallback();
+ void platformSetDidDismissForcePressPreviewCallback();
void platformSetWillBeginZoomingCallback();
void platformSetDidEndZoomingCallback();
void platformSetDidShowKeyboardCallback();
Modified: trunk/Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.h (207446 => 207447)
--- trunk/Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.h 2016-10-18 01:00:58 UTC (rev 207446)
+++ trunk/Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.h 2016-10-18 01:08:25 UTC (rev 207447)
@@ -33,6 +33,8 @@
@property (nonatomic, copy) void (^didStartFormControlInteractionCallback)(void);
@property (nonatomic, copy) void (^didEndFormControlInteractionCallback)(void);
+@property (nonatomic, copy) void (^didShowForcePressPreviewCallback)(void);
+@property (nonatomic, copy) void (^didDismissForcePressPreviewCallback)(void);
@property (nonatomic, copy) void (^willBeginZoomingCallback)(void);
@property (nonatomic, copy) void (^didEndZoomingCallback)(void);
@property (nonatomic, copy) void (^didShowKeyboardCallback)(void);
Modified: trunk/Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm (207446 => 207447)
--- trunk/Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm 2016-10-18 01:00:58 UTC (rev 207446)
+++ trunk/Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm 2016-10-18 01:08:25 UTC (rev 207447)
@@ -75,6 +75,8 @@
self.didStartFormControlInteractionCallback = nil;
self.didEndFormControlInteractionCallback = nil;
+ self.didShowForcePressPreviewCallback = nil;
+ self.didDismissForcePressPreviewCallback = nil;
self.willBeginZoomingCallback = nil;
self.didEndZoomingCallback = nil;
self.didShowKeyboardCallback = nil;
@@ -99,6 +101,18 @@
self.didEndFormControlInteractionCallback();
}
+- (void)_didShowForcePressPreview
+{
+ if (self.didShowForcePressPreviewCallback)
+ self.didShowForcePressPreviewCallback();
+}
+
+- (void)_didDismissForcePressPreview
+{
+ if (self.didDismissForcePressPreviewCallback)
+ self.didDismissForcePressPreviewCallback();
+}
+
- (void)zoomToScale:(double)scale animated:(BOOL)animated completionHandler:(void (^)(void))completionHandler
{
ASSERT(!self.zoomToScaleCompletionHandler);
Modified: trunk/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm (207446 => 207447)
--- trunk/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm 2016-10-18 01:00:58 UTC (rev 207446)
+++ trunk/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm 2016-10-18 01:08:25 UTC (rev 207447)
@@ -367,7 +367,27 @@
m_context->fireCallback(CallbackTypeDidEndFormControlInteraction);
};
}
+
+void UIScriptController::platformSetDidShowForcePressPreviewCallback()
+{
+ TestRunnerWKWebView *webView = TestController::singleton().mainWebView()->platformView();
+ webView.didShowForcePressPreviewCallback = ^ {
+ if (!m_context)
+ return;
+ m_context->fireCallback(CallbackTypeDidShowForcePressPreview);
+ };
+}
+void UIScriptController::platformSetDidDismissForcePressPreviewCallback()
+{
+ TestRunnerWKWebView *webView = TestController::singleton().mainWebView()->platformView();
+ webView.didDismissForcePressPreviewCallback = ^ {
+ if (!m_context)
+ return;
+ m_context->fireCallback(CallbackTypeDidEndFormControlInteraction);
+ };
+}
+
void UIScriptController::platformSetWillBeginZoomingCallback()
{
TestRunnerWKWebView *webView = TestController::singleton().mainWebView()->platformView();