Changeset 195543 in webkit


Ignore:
Timestamp:
Jan 25, 2016 10:41:27 AM (8 years ago)
Author:
dbates@webkit.org
Message:

WebKitTestRunner: Credential cache is not cleared between tests
https://bugs.webkit.org/show_bug.cgi?id=153407
<rdar://problem/24280834>

Reviewed by Brady Eidson.

Source/WebKit2:

Add SPI to call NetworkStorageSession::switchToNewTestingSession() to create a new testing session.
The new testing session will have an empty credential cache.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::switchToNewTestingSession): Added.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in: Added message SwitchToNewTestingSession().
  • UIProcess/API/C/WKContext.cpp:

(WKContextResetTestingNetworkSession): Added.

  • UIProcess/API/C/WKContextPrivate.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::resetTestingNetworkSession): Added.

  • UIProcess/WebProcessPool.h:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::switchToNewTestingSession): Added.

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in: Added message SwitchToNewTestingSession().

Tools:

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetStateToConsistentValues): Reset testing network session
to clear cached credentials.

Location:
trunk
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r195538 r195543  
     12016-01-25  Daniel Bates  <dabates@apple.com>
     2
     3        WebKitTestRunner: Credential cache is not cleared between tests
     4        https://bugs.webkit.org/show_bug.cgi?id=153407
     5        <rdar://problem/24280834>
     6
     7        Reviewed by Brady Eidson.
     8
     9        Add SPI to call NetworkStorageSession::switchToNewTestingSession() to create a new testing session.
     10        The new testing session will have an empty credential cache.
     11
     12        * NetworkProcess/NetworkProcess.cpp:
     13        (WebKit::NetworkProcess::switchToNewTestingSession): Added.
     14        * NetworkProcess/NetworkProcess.h:
     15        * NetworkProcess/NetworkProcess.messages.in: Added message SwitchToNewTestingSession().
     16        * UIProcess/API/C/WKContext.cpp:
     17        (WKContextResetTestingNetworkSession): Added.
     18        * UIProcess/API/C/WKContextPrivate.h:
     19        * UIProcess/WebProcessPool.cpp:
     20        (WebKit::WebProcessPool::resetTestingNetworkSession): Added.
     21        * UIProcess/WebProcessPool.h:
     22        * WebProcess/WebProcess.cpp:
     23        (WebKit::WebProcess::switchToNewTestingSession): Added.
     24        * WebProcess/WebProcess.h:
     25        * WebProcess/WebProcess.messages.in: Added message SwitchToNewTestingSession().
     26
    1272016-01-22  Ryosuke Niwa  <rniwa@webkit.org>
    228
  • trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp

    r195357 r195543  
    256256}
    257257
     258void NetworkProcess::switchToNewTestingSession()
     259{
     260    NetworkStorageSession::switchToNewTestingSession();
     261}
     262
    258263void NetworkProcess::ensurePrivateBrowsingSession(SessionID sessionID)
    259264{
  • trunk/Source/WebKit2/NetworkProcess/NetworkProcess.h

    r195357 r195543  
    147147    void deleteWebsiteDataForOrigins(WebCore::SessionID, uint64_t websiteDataTypes, const Vector<WebCore::SecurityOriginData>& origins, const Vector<String>& cookieHostNames, uint64_t callbackID);
    148148
     149    void switchToNewTestingSession();
     150
    149151    // FIXME: This should take a session ID so we can identify which disk cache to delete.
    150152    void clearDiskCache(std::chrono::system_clock::time_point modifiedSince, std::function<void ()> completionHandler);
  • trunk/Source/WebKit2/NetworkProcess/NetworkProcess.messages.in

    r195357 r195543  
    3333#endif
    3434
     35    SwitchToNewTestingSession()
     36
    3537    EnsurePrivateBrowsingSession(WebCore::SessionID sessionID)
    3638    DestroyPrivateBrowsingSession(WebCore::SessionID sessionID)
  • trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp

    r194295 r195543  
    539539}
    540540
     541void WKContextResetTestingNetworkSession(WKContextRef context)
     542{
     543    toImpl(context)->resetTestingNetworkSession();
     544}
     545
    541546WKDictionaryRef WKContextCopyPlugInAutoStartOriginHashes(WKContextRef contextRef)
    542547{
  • trunk/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h

    r192796 r195543  
    8383WK_EXPORT void WKContextUseTestingNetworkSession(WKContextRef context);
    8484
     85// Test only. Should be called before running a test.
     86WK_EXPORT void WKContextResetTestingNetworkSession(WKContextRef context);
     87
    8588typedef void (*WKContextInvalidMessageFunction)(WKStringRef messageName);
    8689WK_EXPORT void WKContextSetInvalidMessageFunction(WKContextInvalidMessageFunction invalidMessageFunction);
  • trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp

    r194880 r195543  
    10741074}
    10751075
     1076void WebProcessPool::resetTestingNetworkSession()
     1077{
     1078    ASSERT(!m_processes.isEmpty());
     1079    ASSERT(m_networkProcess);
     1080
     1081    if (!m_shouldUseTestingNetworkSession || !m_networkProcess || m_processes.isEmpty())
     1082        return;
     1083
     1084    sendToAllProcesses(Messages::WebProcess::SwitchToNewTestingSession());
     1085    m_networkProcess->send(Messages::NetworkProcess::SwitchToNewTestingSession(), 0);
     1086}
     1087
    10761088void WebProcessPool::allowSpecificHTTPSCertificateForHost(const WebCertificateInfo* certificate, const String& host)
    10771089{
  • trunk/Source/WebKit2/UIProcess/WebProcessPool.h

    r194880 r195543  
    240240
    241241    void useTestingNetworkSession();
     242    void resetTestingNetworkSession();
    242243    bool isUsingTestingNetworkSession() const { return m_shouldUseTestingNetworkSession; }
    243244
  • trunk/Source/WebKit2/WebProcess/WebProcess.cpp

    r194880 r195543  
    499499}
    500500
     501void WebProcess::switchToNewTestingSession()
     502{
     503    NetworkStorageSession::switchToNewTestingSession();
     504}
     505
    501506WebPage* WebProcess::focusedWebPage() const
    502507{   
  • trunk/Source/WebKit2/WebProcess/WebProcess.h

    r194880 r195543  
    211211    void platformInitializeWebProcess(WebProcessCreationParameters&&);
    212212
     213    void switchToNewTestingSession();
     214
    213215    void platformTerminate();
    214216    void registerURLSchemeAsEmptyDocument(const String&);
  • trunk/Source/WebKit2/WebProcess/WebProcess.messages.in

    r192796 r195543  
    4545    UserPreferredLanguagesChanged(Vector<String> languages)
    4646    FullKeyboardAccessModeChanged(bool fullKeyboardAccessEnabled)
     47
     48    SwitchToNewTestingSession()
    4749
    4850    // Legacy private browsing session is per process. Individual pages or page groups may use the private session or the default one as appropriate.
  • trunk/Tools/ChangeLog

    r195513 r195543  
     12016-01-25  Daniel Bates  <dabates@apple.com>
     2
     3        WebKitTestRunner: Credential cache is not cleared between tests
     4        https://bugs.webkit.org/show_bug.cgi?id=153407
     5        <rdar://problem/24280834>
     6
     7        Reviewed by Brady Eidson.
     8
     9        * WebKitTestRunner/TestController.cpp:
     10        (WTR::TestController::resetStateToConsistentValues): Reset testing network session
     11        to clear cached credentials.
     12
    1132016-01-24  Dan Bernstein  <mitz@apple.com>
    214
  • trunk/Tools/WebKitTestRunner/TestController.cpp

    r195474 r195543  
    715715    WKContextSetCacheModel(TestController::singleton().context(), kWKCacheModelDocumentBrowser);
    716716
     717    WKContextResetTestingNetworkSession(TestController::singleton().context());
     718
    717719    // FIXME: This function should also ensure that there is only one page open.
    718720
Note: See TracChangeset for help on using the changeset viewer.