Title: [239310] trunk
- Revision
- 239310
- Author
- cdu...@apple.com
- Date
- 2018-12-17 18:17:26 -0800 (Mon, 17 Dec 2018)
Log Message
Allow passing nil as session state to [WKWebView _restoreSessionState:]
https://bugs.webkit.org/show_bug.cgi?id=192789
<rdar://problem/46755277>
Reviewed by Alex Christensen.
Source/WebKit:
Allow passing nil as session state to [WKWebView _restoreSessionState:] instead of crashing.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _restoreSessionState:andNavigate:]):
Tools:
Add API test coverage.
* TestWebKitAPI/Tests/WebKit/WKBackForwardList.mm:
(TEST):
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (239309 => 239310)
--- trunk/Source/WebKit/ChangeLog 2018-12-18 02:03:15 UTC (rev 239309)
+++ trunk/Source/WebKit/ChangeLog 2018-12-18 02:17:26 UTC (rev 239310)
@@ -1,3 +1,16 @@
+2018-12-17 Chris Dumez <cdu...@apple.com>
+
+ Allow passing nil as session state to [WKWebView _restoreSessionState:]
+ https://bugs.webkit.org/show_bug.cgi?id=192789
+ <rdar://problem/46755277>
+
+ Reviewed by Alex Christensen.
+
+ Allow passing nil as session state to [WKWebView _restoreSessionState:] instead of crashing.
+
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView _restoreSessionState:andNavigate:]):
+
2018-12-17 Alex Christensen <achristen...@webkit.org>
Fix occasional null-dereference crash in WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (239309 => 239310)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2018-12-18 02:03:15 UTC (rev 239309)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2018-12-18 02:17:26 UTC (rev 239310)
@@ -4712,7 +4712,7 @@
- (WKNavigation *)_restoreSessionState:(_WKSessionState *)sessionState andNavigate:(BOOL)navigate
{
- return wrapper(_page->restoreFromSessionState(sessionState->_sessionState, navigate));
+ return wrapper(_page->restoreFromSessionState(sessionState ? sessionState->_sessionState : WebKit::SessionState { }, navigate));
}
- (void)_close
Modified: trunk/Tools/ChangeLog (239309 => 239310)
--- trunk/Tools/ChangeLog 2018-12-18 02:03:15 UTC (rev 239309)
+++ trunk/Tools/ChangeLog 2018-12-18 02:17:26 UTC (rev 239310)
@@ -1,3 +1,16 @@
+2018-12-17 Chris Dumez <cdu...@apple.com>
+
+ Allow passing nil as session state to [WKWebView _restoreSessionState:]
+ https://bugs.webkit.org/show_bug.cgi?id=192789
+ <rdar://problem/46755277>
+
+ Reviewed by Alex Christensen.
+
+ Add API test coverage.
+
+ * TestWebKitAPI/Tests/WebKit/WKBackForwardList.mm:
+ (TEST):
+
2018-12-17 Simon Fraser <simon.fra...@apple.com>
Don't use more expensive layer backing store formats when subpixel text antialiasing is not enabled
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKit/WKBackForwardList.mm (239309 => 239310)
--- trunk/Tools/TestWebKitAPI/Tests/WebKit/WKBackForwardList.mm 2018-12-18 02:03:15 UTC (rev 239309)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit/WKBackForwardList.mm 2018-12-18 02:17:26 UTC (rev 239310)
@@ -103,6 +103,37 @@
EXPECT_EQ((NSUInteger)0, newList.forwardList.count);
}
+TEST(WKBackForwardList, RestoringNilSessionState)
+{
+ auto webView = adoptNS([[WKWebView alloc] init]);
+
+ [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:loadableURL1]]];
+ [webView _test_waitForDidFinishNavigation];
+
+ [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:loadableURL2]]];
+ [webView _test_waitForDidFinishNavigation];
+
+ WKBackForwardList *list = [webView backForwardList];
+ EXPECT_EQ(YES, [webView canGoBack]);
+ EXPECT_EQ(NO, [webView canGoForward]);
+ EXPECT_EQ((NSUInteger)1, list.backList.count);
+ EXPECT_EQ((NSUInteger)0, list.forwardList.count);
+
+ auto singlePageWebView = adoptNS([[WKWebView alloc] init]);
+
+ [singlePageWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:loadableURL1]]];
+ [singlePageWebView _test_waitForDidFinishNavigation];
+
+ [webView _restoreSessionState:nil andNavigate:NO];
+
+ WKBackForwardList *newList = [webView backForwardList];
+
+ EXPECT_EQ(YES, [webView canGoBack]);
+ EXPECT_EQ(NO, [webView canGoForward]);
+ EXPECT_EQ((NSUInteger)1, newList.backList.count);
+ EXPECT_EQ((NSUInteger)0, newList.forwardList.count);
+}
+
static bool done;
static size_t navigations;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes