- Revision
- 265504
- Author
- [email protected]
- Date
- 2020-08-11 10:30:51 -0700 (Tue, 11 Aug 2020)
Log Message
Cherry-pick r265284. rdar://problem/66801993
[iOS] Keyboard shortcuts and arrow key scrolling stop working after navigating via swipe gesture
https://bugs.webkit.org/show_bug.cgi?id=215137
<rdar://problem/65082979>
Reviewed by Tim Horton.
Source/WebKit:
The process of starting a navigation swipe gesture causes the first responder (in this case, WKContentView) to
resign. Subsequently, nothing makes the content view first responder again once the navigation gesture ends,
even if the gesture is cancelled and we don't end up navigating. This results in several symptoms, two of which
are that keyboard shortcuts stop working, and pressing arrow keys does not scroll the web view after ending the
swipe gesture.
To mitigate this, add a mechanism to have the web view remember that our content view was first responder before
calling `-startInteractiveTransition:`; after ending the interactive transition (i.e. swipe gesture), we then
restore the web view's content view as first responder if it is not already first responder (and it is also
parented, which is not the case when swiping back to close a newly opened tab in Safari).
Test: NavigationSwipeTests.RestoreFirstResponderAfterNavigationSwipe
NavigationSwipeTests.DoNotBecomeFirstResponderAfterNavigationSwipeIfWebViewIsUnparented
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/API/ios/WKWebViewIOS.mm:
(-[WKWebView _navigationGestureDidBegin]):
(-[WKWebView _navigationGestureDidEnd]):
Tools:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/ios/NavigationSwipeTests.mm: Added.
(-[TestNavigationInteractiveTransition startInteractiveTransition:]):
Add an API test that exercises the bug by resigning first responder underneath `-startInteractiveTransition:`,
and checking that we have become first responder once again after completing the transition.
* TestWebKitAPI/ios/UIKitSPI.h:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@265284 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Modified Paths
Added Paths
Diff
Modified: branches/safari-610.1.25.10-branch/Source/WebKit/ChangeLog (265503 => 265504)
--- branches/safari-610.1.25.10-branch/Source/WebKit/ChangeLog 2020-08-11 17:30:48 UTC (rev 265503)
+++ branches/safari-610.1.25.10-branch/Source/WebKit/ChangeLog 2020-08-11 17:30:51 UTC (rev 265504)
@@ -1,5 +1,77 @@
2020-08-11 Russell Epstein <[email protected]>
+ Cherry-pick r265284. rdar://problem/66801993
+
+ [iOS] Keyboard shortcuts and arrow key scrolling stop working after navigating via swipe gesture
+ https://bugs.webkit.org/show_bug.cgi?id=215137
+ <rdar://problem/65082979>
+
+ Reviewed by Tim Horton.
+
+ Source/WebKit:
+
+ The process of starting a navigation swipe gesture causes the first responder (in this case, WKContentView) to
+ resign. Subsequently, nothing makes the content view first responder again once the navigation gesture ends,
+ even if the gesture is cancelled and we don't end up navigating. This results in several symptoms, two of which
+ are that keyboard shortcuts stop working, and pressing arrow keys does not scroll the web view after ending the
+ swipe gesture.
+
+ To mitigate this, add a mechanism to have the web view remember that our content view was first responder before
+ calling `-startInteractiveTransition:`; after ending the interactive transition (i.e. swipe gesture), we then
+ restore the web view's content view as first responder if it is not already first responder (and it is also
+ parented, which is not the case when swiping back to close a newly opened tab in Safari).
+
+ Test: NavigationSwipeTests.RestoreFirstResponderAfterNavigationSwipe
+ NavigationSwipeTests.DoNotBecomeFirstResponderAfterNavigationSwipeIfWebViewIsUnparented
+
+ * UIProcess/API/Cocoa/WKWebViewInternal.h:
+ * UIProcess/API/ios/WKWebViewIOS.mm:
+ (-[WKWebView _navigationGestureDidBegin]):
+ (-[WKWebView _navigationGestureDidEnd]):
+
+ Tools:
+
+ * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
+ * TestWebKitAPI/Tests/ios/NavigationSwipeTests.mm: Added.
+ (-[TestNavigationInteractiveTransition startInteractiveTransition:]):
+
+ Add an API test that exercises the bug by resigning first responder underneath `-startInteractiveTransition:`,
+ and checking that we have become first responder once again after completing the transition.
+
+ * TestWebKitAPI/ios/UIKitSPI.h:
+
+
+ git-svn-id: https://svn.webkit.org/repository/webkit/trunk@265284 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+ 2020-08-05 Wenson Hsieh <[email protected]>
+
+ [iOS] Keyboard shortcuts and arrow key scrolling stop working after navigating via swipe gesture
+ https://bugs.webkit.org/show_bug.cgi?id=215137
+ <rdar://problem/65082979>
+
+ Reviewed by Tim Horton.
+
+ The process of starting a navigation swipe gesture causes the first responder (in this case, WKContentView) to
+ resign. Subsequently, nothing makes the content view first responder again once the navigation gesture ends,
+ even if the gesture is cancelled and we don't end up navigating. This results in several symptoms, two of which
+ are that keyboard shortcuts stop working, and pressing arrow keys does not scroll the web view after ending the
+ swipe gesture.
+
+ To mitigate this, add a mechanism to have the web view remember that our content view was first responder before
+ calling `-startInteractiveTransition:`; after ending the interactive transition (i.e. swipe gesture), we then
+ restore the web view's content view as first responder if it is not already first responder (and it is also
+ parented, which is not the case when swiping back to close a newly opened tab in Safari).
+
+ Test: NavigationSwipeTests.RestoreFirstResponderAfterNavigationSwipe
+ NavigationSwipeTests.DoNotBecomeFirstResponderAfterNavigationSwipeIfWebViewIsUnparented
+
+ * UIProcess/API/Cocoa/WKWebViewInternal.h:
+ * UIProcess/API/ios/WKWebViewIOS.mm:
+ (-[WKWebView _navigationGestureDidBegin]):
+ (-[WKWebView _navigationGestureDidEnd]):
+
+2020-08-11 Russell Epstein <[email protected]>
+
Cherry-pick r265209. rdar://problem/66802585
should be able to request an editing context for a given region of a given input
Modified: branches/safari-610.1.25.10-branch/Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h (265503 => 265504)
--- branches/safari-610.1.25.10-branch/Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h 2020-08-11 17:30:48 UTC (rev 265503)
+++ branches/safari-610.1.25.10-branch/Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h 2020-08-11 17:30:51 UTC (rev 265504)
@@ -218,6 +218,7 @@
BOOL _didDeferUpdateVisibleContentRectsForAnyReason;
BOOL _didDeferUpdateVisibleContentRectsForUnstableScrollView;
BOOL _alwaysSendNextVisibleContentRectUpdate;
+ BOOL _contentViewShouldBecomeFirstResponderAfterNavigationGesture;
BOOL _waitingForEndAnimatedResize;
BOOL _waitingForCommitAfterAnimatedResize;
Modified: branches/safari-610.1.25.10-branch/Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm (265503 => 265504)
--- branches/safari-610.1.25.10-branch/Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm 2020-08-11 17:30:48 UTC (rev 265503)
+++ branches/safari-610.1.25.10-branch/Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm 2020-08-11 17:30:51 UTC (rev 265504)
@@ -2291,6 +2291,7 @@
_frozenVisibleContentRect = [self convertRect:fullViewRect toView:_contentView.get()];
_frozenUnobscuredContentRect = [self convertRect:unobscuredRect toView:_contentView.get()];
+ _contentViewShouldBecomeFirstResponderAfterNavigationGesture = [_contentView isFirstResponder];
LOG_WITH_STREAM(VisibleRects, stream << "_navigationGestureDidBegin: freezing visibleContentRect " << WebCore::FloatRect(_frozenVisibleContentRect.value()) << " UnobscuredContentRect " << WebCore::FloatRect(_frozenUnobscuredContentRect.value()));
}
@@ -2299,6 +2300,12 @@
{
_frozenVisibleContentRect = WTF::nullopt;
_frozenUnobscuredContentRect = WTF::nullopt;
+
+ if (_contentViewShouldBecomeFirstResponderAfterNavigationGesture) {
+ if (self.window && ![_contentView isFirstResponder])
+ [_contentView becomeFirstResponder];
+ _contentViewShouldBecomeFirstResponderAfterNavigationGesture = NO;
+ }
}
- (void)_showPasswordViewWithDocumentName:(NSString *)documentName passwordHandler:(void (^)(NSString *))passwordHandler
Modified: branches/safari-610.1.25.10-branch/Tools/ChangeLog (265503 => 265504)
--- branches/safari-610.1.25.10-branch/Tools/ChangeLog 2020-08-11 17:30:48 UTC (rev 265503)
+++ branches/safari-610.1.25.10-branch/Tools/ChangeLog 2020-08-11 17:30:51 UTC (rev 265504)
@@ -1,5 +1,67 @@
2020-08-11 Russell Epstein <[email protected]>
+ Cherry-pick r265284. rdar://problem/66801993
+
+ [iOS] Keyboard shortcuts and arrow key scrolling stop working after navigating via swipe gesture
+ https://bugs.webkit.org/show_bug.cgi?id=215137
+ <rdar://problem/65082979>
+
+ Reviewed by Tim Horton.
+
+ Source/WebKit:
+
+ The process of starting a navigation swipe gesture causes the first responder (in this case, WKContentView) to
+ resign. Subsequently, nothing makes the content view first responder again once the navigation gesture ends,
+ even if the gesture is cancelled and we don't end up navigating. This results in several symptoms, two of which
+ are that keyboard shortcuts stop working, and pressing arrow keys does not scroll the web view after ending the
+ swipe gesture.
+
+ To mitigate this, add a mechanism to have the web view remember that our content view was first responder before
+ calling `-startInteractiveTransition:`; after ending the interactive transition (i.e. swipe gesture), we then
+ restore the web view's content view as first responder if it is not already first responder (and it is also
+ parented, which is not the case when swiping back to close a newly opened tab in Safari).
+
+ Test: NavigationSwipeTests.RestoreFirstResponderAfterNavigationSwipe
+ NavigationSwipeTests.DoNotBecomeFirstResponderAfterNavigationSwipeIfWebViewIsUnparented
+
+ * UIProcess/API/Cocoa/WKWebViewInternal.h:
+ * UIProcess/API/ios/WKWebViewIOS.mm:
+ (-[WKWebView _navigationGestureDidBegin]):
+ (-[WKWebView _navigationGestureDidEnd]):
+
+ Tools:
+
+ * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
+ * TestWebKitAPI/Tests/ios/NavigationSwipeTests.mm: Added.
+ (-[TestNavigationInteractiveTransition startInteractiveTransition:]):
+
+ Add an API test that exercises the bug by resigning first responder underneath `-startInteractiveTransition:`,
+ and checking that we have become first responder once again after completing the transition.
+
+ * TestWebKitAPI/ios/UIKitSPI.h:
+
+
+ git-svn-id: https://svn.webkit.org/repository/webkit/trunk@265284 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+ 2020-08-05 Wenson Hsieh <[email protected]>
+
+ [iOS] Keyboard shortcuts and arrow key scrolling stop working after navigating via swipe gesture
+ https://bugs.webkit.org/show_bug.cgi?id=215137
+ <rdar://problem/65082979>
+
+ Reviewed by Tim Horton.
+
+ * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
+ * TestWebKitAPI/Tests/ios/NavigationSwipeTests.mm: Added.
+ (-[TestNavigationInteractiveTransition startInteractiveTransition:]):
+
+ Add an API test that exercises the bug by resigning first responder underneath `-startInteractiveTransition:`,
+ and checking that we have become first responder once again after completing the transition.
+
+ * TestWebKitAPI/ios/UIKitSPI.h:
+
+2020-08-11 Russell Epstein <[email protected]>
+
Cherry-pick r265209. rdar://problem/66802585
should be able to request an editing context for a given region of a given input
Modified: branches/safari-610.1.25.10-branch/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (265503 => 265504)
--- branches/safari-610.1.25.10-branch/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2020-08-11 17:30:48 UTC (rev 265503)
+++ branches/safari-610.1.25.10-branch/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2020-08-11 17:30:51 UTC (rev 265504)
@@ -1070,6 +1070,8 @@
EB230D40245E727900C66AD1 /* IDBCheckpointWAL.mm in Sources */ = {isa = PBXBuildFile; fileRef = EB230D3E245E726300C66AD1 /* IDBCheckpointWAL.mm */; };
EB230D41245E813F00C66AD1 /* IDBCheckpointWAL.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = EB230D3D245E722E00C66AD1 /* IDBCheckpointWAL.html */; };
ECA680CE1E68CC0900731D20 /* StringUtilities.mm in Sources */ = {isa = PBXBuildFile; fileRef = ECA680CD1E68CC0900731D20 /* StringUtilities.mm */; };
+ F4010B8024DA24AC00A876E2 /* NavigationSwipeTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = F4010B7F24DA24AC00A876E2 /* NavigationSwipeTests.mm */; };
+ F4010B8324DA267F00A876E2 /* PoseAsClass.mm in Sources */ = {isa = PBXBuildFile; fileRef = F4010B8124DA267F00A876E2 /* PoseAsClass.mm */; };
F402F56C23ECC2FB00865549 /* UIWKInteractionViewProtocol.mm in Sources */ = {isa = PBXBuildFile; fileRef = F402F56B23ECC2FB00865549 /* UIWKInteractionViewProtocol.mm */; };
F407FE391F1D0DFC0017CF25 /* enormous.svg in Copy Resources */ = {isa = PBXBuildFile; fileRef = F407FE381F1D0DE60017CF25 /* enormous.svg */; };
F4106C6921ACBF84004B89A1 /* WKWebViewFirstResponderTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = F4106C6821ACBF84004B89A1 /* WKWebViewFirstResponderTests.mm */; };
@@ -2765,6 +2767,9 @@
EC79F168BE454E579E417B05 /* Markable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Markable.cpp; sourceTree = "<group>"; };
ECA680CD1E68CC0900731D20 /* StringUtilities.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = StringUtilities.mm; sourceTree = "<group>"; };
F3FC3EE213678B7300126A65 /* libgtest.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgtest.a; sourceTree = BUILT_PRODUCTS_DIR; };
+ F4010B7F24DA24AC00A876E2 /* NavigationSwipeTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NavigationSwipeTests.mm; sourceTree = "<group>"; };
+ F4010B8124DA267F00A876E2 /* PoseAsClass.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = PoseAsClass.mm; path = ../TestRunnerShared/cocoa/PoseAsClass.mm; sourceTree = "<group>"; };
+ F4010B8224DA267F00A876E2 /* PoseAsClass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PoseAsClass.h; path = ../TestRunnerShared/cocoa/PoseAsClass.h; sourceTree = "<group>"; };
F402F56B23ECC2FB00865549 /* UIWKInteractionViewProtocol.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = UIWKInteractionViewProtocol.mm; sourceTree = "<group>"; };
F407FE381F1D0DE60017CF25 /* enormous.svg */ = {isa = PBXFileReference; lastKnownFileType = text; path = enormous.svg; sourceTree = "<group>"; };
F4106C6821ACBF84004B89A1 /* WKWebViewFirstResponderTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebViewFirstResponderTests.mm; sourceTree = "<group>"; };
@@ -3037,6 +3042,8 @@
F44A530D21B8976900DBB99C /* InstanceMethodSwizzler.h */,
F44A531021B8976900DBB99C /* InstanceMethodSwizzler.mm */,
0F139E721A423A2B00F590F5 /* PlatformUtilitiesCocoa.mm */,
+ F4010B8224DA267F00A876E2 /* PoseAsClass.h */,
+ F4010B8124DA267F00A876E2 /* PoseAsClass.mm */,
CE640CA52370A4F300C5CAA4 /* TestCocoa.h */,
CE640CA62370A4F300C5CAA4 /* TestCocoa.mm */,
5CE7594822A883A500C12409 /* TestContextMenuDriver.h */,
@@ -3524,6 +3531,7 @@
F4BC0B132146C849002A0478 /* FocusPreservationTests.mm */,
CDA93DAC22F4EC2200490A69 /* FullscreenTouchSecheuristicTests.cpp */,
F45E15722112CE2900307E82 /* KeyboardInputTestsIOS.mm */,
+ F4010B7F24DA24AC00A876E2 /* NavigationSwipeTests.mm */,
0F34077523037FDC0060A1A0 /* OverflowScrollViewTests.mm */,
F464AF9120BB66EA007F9B18 /* RenderingProgressTests.mm */,
F4C8797E2059D8D3009CD00B /* ScrollViewInsetTests.mm */,
@@ -5195,6 +5203,7 @@
7CCE7F011A411AE600447C4C /* MouseMoveAfterCrash.cpp in Sources */,
7CCE7F241A411AF600447C4C /* Navigation.mm in Sources */,
6351992822275C6A00890AD3 /* NavigationAction.mm in Sources */,
+ F4010B8024DA24AC00A876E2 /* NavigationSwipeTests.mm in Sources */,
5C8BC799218CF44700813886 /* NetworkProcess.mm in Sources */,
5CAE463820193B6A0051610F /* NetworkProcessCrashNonPersistentDataStore.mm in Sources */,
9B19CDA01F06DFE3000548DD /* NetworkProcessCrashWithPendingConnection.mm in Sources */,
@@ -5239,6 +5248,7 @@
7CCE7EA61A411A0F00447C4C /* PlatformUtilitiesMac.mm in Sources */,
7CCE7EA71A411A1300447C4C /* PlatformWebViewMac.mm in Sources */,
83BAEE8D1EF4625500DDE894 /* PluginLoadClientPolicies.mm in Sources */,
+ F4010B8324DA267F00A876E2 /* PoseAsClass.mm in Sources */,
DFB8FF322492F52400F00B0D /* Preconnect.mm in Sources */,
1D67BFDC2433E0A7006B5047 /* PreemptVideoFullscreen.mm in Sources */,
C15CBB3F23FB177A00300CC7 /* PreferenceChanges.mm in Sources */,
Added: branches/safari-610.1.25.10-branch/Tools/TestWebKitAPI/Tests/ios/NavigationSwipeTests.mm (0 => 265504)
--- branches/safari-610.1.25.10-branch/Tools/TestWebKitAPI/Tests/ios/NavigationSwipeTests.mm (rev 0)
+++ branches/safari-610.1.25.10-branch/Tools/TestWebKitAPI/Tests/ios/NavigationSwipeTests.mm 2020-08-11 17:30:51 UTC (rev 265504)
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 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.
+ */
+
+#import "config.h"
+
+#if PLATFORM(IOS_FAMILY)
+
+#import "PoseAsClass.h"
+#import "TestWKWebView.h"
+#import "UIKitSPI.h"
+#import <WebKit/WKWebViewPrivate.h>
+#import <WebKit/WKWebViewPrivateForTesting.h>
+
+@interface TestNavigationInteractiveTransition : UIPercentDrivenInteractiveTransition
+@end
+
+@implementation TestNavigationInteractiveTransition
+
+- (void)startInteractiveTransition:(id <UIViewControllerContextTransitioning>)transitionContext
+{
+ [super startInteractiveTransition:transitionContext];
+ EXPECT_TRUE([transitionContext.containerView.window.firstResponder resignFirstResponder]);
+}
+
+@end
+
+TEST(NavigationSwipeTests, RestoreFirstResponderAfterNavigationSwipe)
+{
+ poseAsClass("TestNavigationInteractiveTransition", "_UINavigationInteractiveTransitionBase");
+
+ auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 500)]);
+ [webView setAllowsBackForwardNavigationGestures:YES];
+ [webView becomeFirstResponder];
+
+ [webView synchronouslyLoadTestPageNamed:@"simple"];
+ [webView synchronouslyLoadTestPageNamed:@"simple2"];
+
+ [webView _beginBackSwipeForTesting];
+ [webView _completeBackSwipeForTesting];
+ EXPECT_TRUE([webView _contentViewIsFirstResponder]);
+}
+
+TEST(NavigationSwipeTests, DoNotBecomeFirstResponderAfterNavigationSwipeIfWebViewIsUnparented)
+{
+ poseAsClass("TestNavigationInteractiveTransition", "_UINavigationInteractiveTransitionBase");
+
+ auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 500)]);
+ [webView setAllowsBackForwardNavigationGestures:YES];
+ [webView becomeFirstResponder];
+
+ [webView synchronouslyLoadTestPageNamed:@"simple"];
+ [webView synchronouslyLoadTestPageNamed:@"simple2"];
+
+ [webView _beginBackSwipeForTesting];
+ [webView removeFromSuperview];
+ [webView _completeBackSwipeForTesting];
+ EXPECT_FALSE([webView _contentViewIsFirstResponder]);
+}
+
+#endif // PLATFORM(IOS_FAMILY)
Modified: branches/safari-610.1.25.10-branch/Tools/TestWebKitAPI/ios/UIKitSPI.h (265503 => 265504)
--- branches/safari-610.1.25.10-branch/Tools/TestWebKitAPI/ios/UIKitSPI.h 2020-08-11 17:30:48 UTC (rev 265503)
+++ branches/safari-610.1.25.10-branch/Tools/TestWebKitAPI/ios/UIKitSPI.h 2020-08-11 17:30:51 UTC (rev 265504)
@@ -44,6 +44,7 @@
#import <UIKit/UIViewController_Private.h>
#import <UIKit/UIWKTextInteractionAssistant.h>
#import <UIKit/UIWebFormAccessory.h>
+#import <UIKit/_UINavigationInteractiveTransition.h>
IGNORE_WARNINGS_BEGIN("deprecated-implementations")
#import <UIKit/UIWebBrowserView.h>
@@ -131,6 +132,9 @@
+ (UICalloutBar *)sharedCalloutBar;
@end
+@interface _UINavigationInteractiveTransitionBase : UIPercentDrivenInteractiveTransition
+@end
+
@interface UIWKDocumentContext : NSObject
@property (nonatomic, copy) NSObject *contextBefore;