Changeset 240340 in webkit
- Timestamp:
- Jan 23, 2019 9:24:19 AM (5 years ago)
- Location:
- trunk/Source
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r240337 r240340 1 2019-01-23 Michael Catanzaro <mcatanzaro@igalia.com> 2 3 [SOUP] Clean up NetworkStorageSession 4 https://bugs.webkit.org/show_bug.cgi?id=193707 5 6 Reviewed by Carlos Garcia Campos. 7 8 A NetworkStorageSession now always has a SoupNetworkSession, so we can remove a lot of 9 complexity that is no longer needed. getOrCreateSoupNetworkSession can go away because we 10 know the session has always already been created. The soupNetworkSession getter can now 11 return a reference rather than a pointer, because it will never be NULL except after it has 12 been cleared with clearSoupNetworkSession (renamed), and that should only happen immediately 13 before process termination after nothing else is using it. Cookie jar syncing can also go 14 away; the NetworkStorageSession can now rely on the SoupNetworkSession to exist and just 15 use its cookie jar. 16 17 * platform/network/NetworkStorageSession.h: 18 (WebCore::NetworkStorageSession::soupNetworkSession const): Deleted. 19 * platform/network/soup/DNSResolveQueueSoup.cpp: 20 (WebCore::DNSResolveQueueSoup::updateIsUsingProxy): 21 (WebCore::DNSResolveQueueSoup::platformResolve): 22 (WebCore::DNSResolveQueueSoup::resolve): 23 * platform/network/soup/NetworkStorageSessionSoup.cpp: 24 (WebCore::NetworkStorageSession::NetworkStorageSession): 25 (WebCore::NetworkStorageSession::~NetworkStorageSession): 26 (WebCore::NetworkStorageSession::soupNetworkSession const): 27 (WebCore::NetworkStorageSession::clearSoupNetworkSession): 28 (WebCore::NetworkStorageSession::cookieStorage const): 29 (WebCore::NetworkStorageSession::setCookieStorage): 30 (WebCore::NetworkStorageSession::getOrCreateSoupNetworkSession const): Deleted. 31 (WebCore::NetworkStorageSession::clearSoupNetworkSessionAndCookieStorage): Deleted. 32 * platform/network/soup/SocketStreamHandleImplSoup.cpp: 33 (WebCore::SocketStreamHandleImpl::create): 34 1 35 2019-01-23 Zalan Bujtas <zalan@apple.com> 2 36 -
trunk/Source/WebCore/platform/network/NetworkStorageSession.h
r240292 r240340 98 98 ~NetworkStorageSession(); 99 99 100 SoupNetworkSession* soupNetworkSession() const { return m_session.get(); }; 101 SoupNetworkSession& getOrCreateSoupNetworkSession() const; 102 void clearSoupNetworkSessionAndCookieStorage(); 100 SoupNetworkSession& soupNetworkSession() const; 101 void clearSoupNetworkSession(); 103 102 SoupCookieJar* cookieStorage() const; 104 103 void setCookieStorage(SoupCookieJar*); … … 169 168 170 169 mutable std::unique_ptr<SoupNetworkSession> m_session; 171 GRefPtr<SoupCookieJar> m_cookieStorage;172 170 Function<void ()> m_cookieObserverHandler; 173 171 #elif USE(CURL) -
trunk/Source/WebCore/platform/network/soup/DNSResolveQueueSoup.cpp
r240292 r240340 93 93 { 94 94 GRefPtr<GProxyResolver> resolver; 95 g_object_get(globalDefaultNetworkStorageSessionAccessor()(). getOrCreateSoupNetworkSession().soupSession(), "proxy-resolver", &resolver.outPtr(), nullptr);95 g_object_get(globalDefaultNetworkStorageSessionAccessor()().soupNetworkSession().soupSession(), "proxy-resolver", &resolver.outPtr(), nullptr); 96 96 ASSERT(resolver); 97 97 … … 176 176 ASSERT(isMainThread()); 177 177 178 soup_session_prefetch_dns(globalDefaultNetworkStorageSessionAccessor()(). getOrCreateSoupNetworkSession().soupSession(), hostname.utf8().data(), nullptr, resolvedCallback, nullptr);178 soup_session_prefetch_dns(globalDefaultNetworkStorageSessionAccessor()().soupNetworkSession().soupSession(), hostname.utf8().data(), nullptr, resolvedCallback, nullptr); 179 179 } 180 180 … … 185 185 auto address = adoptGRef(soup_address_new(hostname.utf8().data(), 0)); 186 186 auto cancellable = adoptGRef(g_cancellable_new()); 187 soup_address_resolve_async(address.get(), soup_session_get_async_context(WebCore::globalDefaultNetworkStorageSessionAccessor()(). getOrCreateSoupNetworkSession().soupSession()), cancellable.get(), resolvedWithObserverCallback, this);187 soup_address_resolve_async(address.get(), soup_session_get_async_context(WebCore::globalDefaultNetworkStorageSessionAccessor()().soupNetworkSession().soupSession()), cancellable.get(), resolvedWithObserverCallback, this); 188 188 189 189 g_object_set_data(G_OBJECT(address.get()), "identifier", GUINT_TO_POINTER(identifier)); -
trunk/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp
r240292 r240340 58 58 , m_session(WTFMove(session)) 59 59 { 60 setCookieStorage(m_session ? m_session->cookieJar() : nullptr); 60 ASSERT(m_session->cookieJar()); 61 g_signal_connect_swapped(m_session->cookieJar(), "changed", G_CALLBACK(cookiesDidChange), this); 61 62 } 62 63 63 64 NetworkStorageSession::~NetworkStorageSession() 64 65 { 65 g_signal_handlers_disconnect_matched(m_cookieStorage.get(), G_SIGNAL_MATCH_DATA, 0, 0, nullptr, nullptr, this); 66 } 67 68 SoupNetworkSession& NetworkStorageSession::getOrCreateSoupNetworkSession() const 69 { 70 if (!m_session) 71 m_session = std::make_unique<SoupNetworkSession>(m_sessionID, m_cookieStorage.get()); 72 return *m_session; 73 } 74 75 void NetworkStorageSession::clearSoupNetworkSessionAndCookieStorage() 76 { 66 clearSoupNetworkSession(); 67 } 68 69 SoupNetworkSession& NetworkStorageSession::soupNetworkSession() const 70 { 71 ASSERT(m_session); 72 return *m_session.get(); 73 }; 74 75 void NetworkStorageSession::clearSoupNetworkSession() 76 { 77 if (m_session) { 78 ASSERT(m_session->cookieJar()); 79 g_signal_handlers_disconnect_matched(m_session->cookieJar(), G_SIGNAL_MATCH_DATA, 0, 0, nullptr, nullptr, this); 80 } 81 77 82 m_session = nullptr; 78 83 m_cookieObserverHandler = nullptr; 79 m_cookieStorage = nullptr;80 84 } 81 85 … … 88 92 SoupCookieJar* NetworkStorageSession::cookieStorage() const 89 93 { 90 RELEASE_ASSERT(!m_session || m_session->cookieJar() == m_cookieStorage.get()); 91 return m_cookieStorage.get(); 94 ASSERT(m_session); 95 ASSERT(m_session->cookieJar()); 96 return m_session->cookieJar(); 92 97 } 93 98 94 99 void NetworkStorageSession::setCookieStorage(SoupCookieJar* jar) 95 100 { 96 if (m_cookieStorage) 97 g_signal_handlers_disconnect_matched(m_cookieStorage.get(), G_SIGNAL_MATCH_DATA, 0, 0, nullptr, nullptr, this); 98 99 // We always have a valid cookieStorage. 100 if (jar) 101 m_cookieStorage = jar; 102 else { 103 m_cookieStorage = adoptGRef(soup_cookie_jar_new()); 104 soup_cookie_jar_set_accept_policy(m_cookieStorage.get(), SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY); 105 } 106 g_signal_connect_swapped(m_cookieStorage.get(), "changed", G_CALLBACK(cookiesDidChange), this); 107 if (m_session && m_session->cookieJar() != m_cookieStorage.get()) 108 m_session->setCookieJar(m_cookieStorage.get()); 101 ASSERT(jar); 102 ASSERT(m_session); 103 ASSERT(m_session->cookieJar()); 104 105 if (m_session->cookieJar() == jar) 106 return; 107 108 g_signal_handlers_disconnect_matched(m_session->cookieJar(), G_SIGNAL_MATCH_DATA, 0, 0, nullptr, nullptr, this); 109 m_session->setCookieJar(jar); 110 g_signal_connect_swapped(m_session->cookieJar(), "changed", G_CALLBACK(cookiesDidChange), this); 109 111 } 110 112 -
trunk/Source/WebCore/platform/network/soup/SocketStreamHandleImplSoup.cpp
r240117 r240340 94 94 auto uri = urlToSoupURI(url); 95 95 Ref<SocketStreamHandle> protectedSocketStreamHandle = socket.copyRef(); 96 soup_session_connect_async(networkStorageSession-> getOrCreateSoupNetworkSession().soupSession(), uri.get(), socket->m_cancellable.get(),96 soup_session_connect_async(networkStorageSession->soupNetworkSession().soupSession(), uri.get(), socket->m_cancellable.get(), 97 97 url.protocolIs("wss") ? reinterpret_cast<SoupSessionConnectProgressCallback>(connectProgressCallback) : nullptr, 98 98 reinterpret_cast<GAsyncReadyCallback>(connectedCallback), &protectedSocketStreamHandle.leakRef()); -
trunk/Source/WebKit/ChangeLog
r240338 r240340 1 2019-01-23 Michael Catanzaro <mcatanzaro@igalia.com> 2 3 [SOUP] Clean up NetworkStorageSession 4 https://bugs.webkit.org/show_bug.cgi?id=193707 5 6 Reviewed by Carlos Garcia Campos. 7 8 Restore an important call to clearSoupNetworkSession that was removed in r240292. Also, 9 adapt to NetworkStorageSessions API changes. 10 11 * NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp: 12 (WebKit::LegacyCustomProtocolManager::registerScheme): 13 * NetworkProcess/soup/NetworkProcessMainSoup.cpp: 14 * NetworkProcess/soup/NetworkProcessSoup.cpp: 15 (WebKit::NetworkProcess::userPreferredLanguagesChanged): 16 (WebKit::NetworkProcess::setNetworkProxySettings): 17 * NetworkProcess/soup/NetworkSessionSoup.cpp: 18 (WebKit::NetworkSessionSoup::soupSession const): 19 1 20 2019-01-23 Philippe Normand <pnormand@igalia.com> 2 21 -
trunk/Source/WebKit/NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp
r240292 r240340 104 104 genericRequestClass->schemes = const_cast<const char**>(reinterpret_cast<char**>(m_registeredSchemes->pdata)); 105 105 lastCreatedNetworkProcess()->forEachNetworkStorageSession([](const auto& session) { 106 if (auto* soupSession = session.soupNetworkSession()) 107 soupSession->setupCustomProtocols(); 106 session.soupNetworkSession().setupCustomProtocols(); 108 107 }); 109 108 } -
trunk/Source/WebKit/NetworkProcess/soup/NetworkProcessMainSoup.cpp
r240292 r240340 38 38 void platformFinalize() override 39 39 { 40 // Needed to destroy the SoupSession and SoupCookieJar, e.g. to avoid 41 // leaking SQLite temporary journaling files. 42 NetworkProcess::singleton().defaultStorageSession().clearSoupNetworkSession(); 40 43 } 41 44 }; -
trunk/Source/WebKit/NetworkProcess/soup/NetworkProcessSoup.cpp
r240292 r240340 97 97 SoupNetworkSession::setInitialAcceptLanguages(acceptLanguages); 98 98 forEachNetworkStorageSession([&acceptLanguages](const auto& session) { 99 if (auto* soupSession = session.soupNetworkSession()) 100 soupSession->setAcceptLanguages(acceptLanguages); 99 session.soupNetworkSession().setAcceptLanguages(acceptLanguages); 101 100 }); 102 101 } … … 170 169 SoupNetworkSession::setProxySettings(settings); 171 170 forEachNetworkStorageSession([](const auto& session) { 172 if (auto* soupSession = session.soupNetworkSession()) 173 soupSession->setupProxy(); 171 session.soupNetworkSession().setupProxy(); 174 172 }); 175 173 } -
trunk/Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp
r240292 r240340 53 53 SoupSession* NetworkSessionSoup::soupSession() const 54 54 { 55 return networkStorageSession(). getOrCreateSoupNetworkSession().soupSession();55 return networkStorageSession().soupNetworkSession().soupSession(); 56 56 } 57 57
Note: See TracChangeset
for help on using the changeset viewer.