5ba5c1cce4e6182a4cd2ecde0095066af549dbef
[WebKit-https.git] / Source / WebKit / NetworkProcess / NetworkSession.cpp
1 /*
2  * Copyright (C) 2015 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #include "config.h"
27 #include "NetworkSession.h"
28
29 #include <WebCore/NetworkStorageSession.h>
30
31 #if PLATFORM(COCOA)
32 #include "NetworkSessionCocoa.h"
33 #endif
34 #if USE(SOUP)
35 #include "NetworkSessionSoup.h"
36 #endif
37 #if USE(CURL)
38 #include "NetworkSessionCurl.h"
39 #endif
40
41 namespace WebKit {
42 using namespace WebCore;
43
44 Ref<NetworkSession> NetworkSession::create(NetworkProcess& networkProcess, NetworkSessionCreationParameters&& parameters)
45 {
46 #if PLATFORM(COCOA)
47     return NetworkSessionCocoa::create(networkProcess, WTFMove(parameters));
48 #endif
49 #if USE(SOUP)
50     return NetworkSessionSoup::create(networkProcess, WTFMove(parameters));
51 #endif
52 #if USE(CURL)
53     return NetworkSessionCurl::create(networkProcess, WTFMove(parameters));
54 #endif
55 }
56
57 NetworkStorageSession& NetworkSession::networkStorageSession() const
58 {
59     auto* storageSession = NetworkStorageSession::storageSession(m_sessionID);
60     RELEASE_ASSERT(storageSession);
61     return *storageSession;
62 }
63
64 NetworkSession::NetworkSession(NetworkProcess& networkProcess, PAL::SessionID sessionID)
65     : m_sessionID(sessionID)
66     , m_networkProcess(networkProcess)
67 {
68 }
69
70 NetworkSession::~NetworkSession()
71 {
72 }
73
74 void NetworkSession::invalidateAndCancel()
75 {
76     for (auto* task : m_dataTaskSet)
77         task->invalidateAndCancel();
78 }
79
80 } // namespace WebKit