Changeset 239310 in webkit


Ignore:
Timestamp:
Dec 17, 2018 6:17:26 PM (5 years ago)
Author:
Chris Dumez
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):

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r239305 r239310  
     12018-12-17  Chris Dumez  <cdumez@apple.com>
     2
     3        Allow passing nil as session state to [WKWebView _restoreSessionState:]
     4        https://bugs.webkit.org/show_bug.cgi?id=192789
     5        <rdar://problem/46755277>
     6
     7        Reviewed by Alex Christensen.
     8
     9        Allow passing nil as session state to [WKWebView _restoreSessionState:] instead of crashing.
     10
     11        * UIProcess/API/Cocoa/WKWebView.mm:
     12        (-[WKWebView _restoreSessionState:andNavigate:]):
     13
    1142018-12-17  Alex Christensen  <achristensen@webkit.org>
    215
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm

    r239078 r239310  
    47134713- (WKNavigation *)_restoreSessionState:(_WKSessionState *)sessionState andNavigate:(BOOL)navigate
    47144714{
    4715     return wrapper(_page->restoreFromSessionState(sessionState->_sessionState, navigate));
     4715    return wrapper(_page->restoreFromSessionState(sessionState ? sessionState->_sessionState : WebKit::SessionState { }, navigate));
    47164716}
    47174717
  • trunk/Tools/ChangeLog

    r239306 r239310  
     12018-12-17  Chris Dumez  <cdumez@apple.com>
     2
     3        Allow passing nil as session state to [WKWebView _restoreSessionState:]
     4        https://bugs.webkit.org/show_bug.cgi?id=192789
     5        <rdar://problem/46755277>
     6
     7        Reviewed by Alex Christensen.
     8
     9        Add API test coverage.
     10
     11        * TestWebKitAPI/Tests/WebKit/WKBackForwardList.mm:
     12        (TEST):
     13
    1142018-12-17  Simon Fraser  <simon.fraser@apple.com>
    215
  • trunk/Tools/TestWebKitAPI/Tests/WebKit/WKBackForwardList.mm

    r226929 r239310  
    104104}
    105105
     106TEST(WKBackForwardList, RestoringNilSessionState)
     107{
     108    auto webView = adoptNS([[WKWebView alloc] init]);
     109
     110    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:loadableURL1]]];
     111    [webView _test_waitForDidFinishNavigation];
     112
     113    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:loadableURL2]]];
     114    [webView _test_waitForDidFinishNavigation];
     115
     116    WKBackForwardList *list = [webView backForwardList];
     117    EXPECT_EQ(YES, [webView canGoBack]);
     118    EXPECT_EQ(NO, [webView canGoForward]);
     119    EXPECT_EQ((NSUInteger)1, list.backList.count);
     120    EXPECT_EQ((NSUInteger)0, list.forwardList.count);
     121
     122    auto singlePageWebView = adoptNS([[WKWebView alloc] init]);
     123
     124    [singlePageWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:loadableURL1]]];
     125    [singlePageWebView _test_waitForDidFinishNavigation];
     126
     127    [webView _restoreSessionState:nil andNavigate:NO];
     128
     129    WKBackForwardList *newList = [webView backForwardList];
     130
     131    EXPECT_EQ(YES, [webView canGoBack]);
     132    EXPECT_EQ(NO, [webView canGoForward]);
     133    EXPECT_EQ((NSUInteger)1, newList.backList.count);
     134    EXPECT_EQ((NSUInteger)0, newList.forwardList.count);
     135}
     136
    106137static bool done;
    107138static size_t navigations;
Note: See TracChangeset for help on using the changeset viewer.