Changeset 250597 in webkit
- Timestamp:
- Oct 2, 2019 1:00:33 AM (5 years ago)
- Location:
- trunk
- Files:
-
- 5 deleted
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ChangeLog
r250596 r250597 1 2019-10-02 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [GTK][WPE] Stop using legacy custom protocol implementation 4 https://bugs.webkit.org/show_bug.cgi?id=202407 5 6 Reviewed by Žan Doberšek. 7 8 Make LEGACY_CUSTOM_PROTOCOL_MANAGER disabled by default. 9 10 * Source/cmake/OptionsFTW.cmake: 11 * Source/cmake/OptionsPlayStation.cmake: 12 * Source/cmake/OptionsWin.cmake: 13 * Source/cmake/WebKitFeatures.cmake: 14 1 15 2019-10-02 Zan Dobersek <zdobersek@igalia.com> 2 16 -
trunk/Source/WebCore/ChangeLog
r250596 r250597 1 2019-10-02 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [GTK][WPE] Stop using legacy custom protocol implementation 4 https://bugs.webkit.org/show_bug.cgi?id=202407 5 6 Reviewed by Žan Doberšek. 7 8 Remove the code to setup custom protocols in soup session. 9 10 * platform/network/soup/SoupNetworkSession.cpp: 11 (WebCore::SoupNetworkSession::SoupNetworkSession): 12 * platform/network/soup/SoupNetworkSession.h: 13 1 14 2019-10-02 Zan Dobersek <zdobersek@igalia.com> 2 15 -
trunk/Source/WebCore/platform/network/soup/SoupNetworkSession.cpp
r249197 r250597 46 46 47 47 static bool gIgnoreTLSErrors; 48 static GType gCustomProtocolRequestType;49 48 50 49 static CString& initialAcceptLanguages() … … 134 133 #endif 135 134 nullptr); 136 137 setupCustomProtocols();138 135 139 136 if (!initialAcceptLanguages().isNull()) … … 338 335 } 339 336 340 void SoupNetworkSession::setCustomProtocolRequestType(GType requestType)341 {342 ASSERT(g_type_is_a(requestType, SOUP_TYPE_REQUEST));343 gCustomProtocolRequestType = requestType;344 }345 346 void SoupNetworkSession::setupCustomProtocols()347 {348 if (!g_type_is_a(gCustomProtocolRequestType, SOUP_TYPE_REQUEST))349 return;350 351 auto* requestClass = static_cast<SoupRequestClass*>(g_type_class_peek(gCustomProtocolRequestType));352 if (!requestClass || !requestClass->schemes)353 return;354 355 soup_session_add_feature_by_type(m_soupSession.get(), gCustomProtocolRequestType);356 }357 358 337 void SoupNetworkSession::setShouldIgnoreTLSErrors(bool ignoreTLSErrors) 359 338 { -
trunk/Source/WebCore/platform/network/soup/SoupNetworkSession.h
r249192 r250597 73 73 static void allowSpecificHTTPSCertificateForHost(const CertificateInfo&, const String& host); 74 74 75 static void setCustomProtocolRequestType(GType);76 void setupCustomProtocols();77 78 75 void getHostNamesWithHSTSCache(HashSet<String>&); 79 76 void deleteHSTSCacheForHostNames(const Vector<String>&); -
trunk/Source/WebKit/ChangeLog
r250596 r250597 1 2019-10-02 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [GTK][WPE] Stop using legacy custom protocol implementation 4 https://bugs.webkit.org/show_bug.cgi?id=202407 5 6 Reviewed by Žan Doberšek. 7 8 Use the new approach, which is simpler and doesn't require to go to the network process to load custom 9 protocols. 10 11 * NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp: Removed. 12 * NetworkProcess/NetworkProcess.cpp: 13 (WebKit::m_messagePortChannelRegistry): 14 * NetworkProcess/soup/WebKitSoupRequestInputStream.cpp: Removed. 15 * NetworkProcess/soup/WebKitSoupRequestInputStream.h: Removed. 16 * PlatformGTK.cmake: 17 * PlatformWPE.cmake: 18 * SourcesGTK.txt: 19 * SourcesWPE.txt: 20 * UIProcess/API/glib/WebKitCustomProtocolManagerClient.cpp: Removed. 21 * UIProcess/API/glib/WebKitCustomProtocolManagerClient.h: Removed. 22 * UIProcess/API/glib/WebKitURISchemeRequest.cpp: 23 (webkitURISchemeRequestCreate): 24 (webkit_uri_scheme_request_get_scheme): 25 (webkit_uri_scheme_request_get_uri): 26 (webkit_uri_scheme_request_get_path): 27 (webkit_uri_scheme_request_get_web_view): 28 (webkitURISchemeRequestReadCallback): 29 (webkit_uri_scheme_request_finish_error): 30 * UIProcess/API/glib/WebKitURISchemeRequestPrivate.h: 31 * UIProcess/API/glib/WebKitWebContext.cpp: 32 (webkitWebContextConstructed): 33 (webkitWebContextDispose): 34 (webkit_web_context_register_uri_scheme): 35 (webkitWebContextCreatePageForWebView): 36 * UIProcess/API/glib/WebKitWebContextPrivate.h: 37 * UIProcess/WebURLSchemeTask.h: 38 (WebKit::WebURLSchemeTask::request const): 39 * UIProcess/soup/WebProcessPoolSoup.cpp: 40 1 41 2019-10-02 Zan Dobersek <zdobersek@igalia.com> 2 42 -
trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp
r250589 r250597 162 162 addSupplement<LegacyCustomProtocolManager>(); 163 163 #endif 164 #if PLATFORM(COCOA) || USE(SOUP)164 #if PLATFORM(COCOA) 165 165 LegacyCustomProtocolManager::networkProcessCreated(*this); 166 166 #endif -
trunk/Source/WebKit/PlatformGTK.cmake
r246925 r250597 34 34 35 35 list(APPEND WebKit_MESSAGES_IN_FILES 36 NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.messages.in37 38 36 UIProcess/ViewGestureController.messages.in 39 40 UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.messages.in41 37 42 38 WebProcess/WebPage/ViewGestureGeometryCollector.messages.in … … 374 370 "${FORWARDING_HEADERS_DIR}/JavaScriptCore/glib" 375 371 "${WEBKIT_DIR}/PluginProcess/unix" 376 "${WEBKIT_DIR}/NetworkProcess/CustomProtocols/soup"377 372 "${WEBKIT_DIR}/NetworkProcess/glib" 378 373 "${WEBKIT_DIR}/NetworkProcess/gtk" … … 397 392 "${WEBKIT_DIR}/UIProcess/API/gtk" 398 393 "${WEBKIT_DIR}/UIProcess/CoordinatedGraphics" 399 "${WEBKIT_DIR}/UIProcess/Network/CustomProtocols/soup"400 394 "${WEBKIT_DIR}/UIProcess/Plugins/gtk" 401 395 "${WEBKIT_DIR}/UIProcess/geoclue" -
trunk/Source/WebKit/PlatformWPE.cmake
r246873 r250597 74 74 list(APPEND WebKit_UNIFIED_SOURCE_LIST_FILES 75 75 "SourcesWPE.txt" 76 )77 78 list(APPEND WebKit_MESSAGES_IN_FILES79 NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.messages.in80 81 UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.messages.in82 76 ) 83 77 … … 233 227 "${DERIVED_SOURCES_DIR}" 234 228 "${DERIVED_SOURCES_WPE_API_DIR}" 235 "${WEBKIT_DIR}/NetworkProcess/CustomProtocols/soup"236 229 "${WEBKIT_DIR}/NetworkProcess/glib" 237 230 "${WEBKIT_DIR}/NetworkProcess/soup" … … 253 246 "${WEBKIT_DIR}/UIProcess/API/wpe" 254 247 "${WEBKIT_DIR}/UIProcess/CoordinatedGraphics" 255 "${WEBKIT_DIR}/UIProcess/Network/CustomProtocols/soup"256 248 "${WEBKIT_DIR}/UIProcess/geoclue" 257 249 "${WEBKIT_DIR}/UIProcess/gstreamer" -
trunk/Source/WebKit/SourcesGTK.txt
r250517 r250597 27 27 NetworkProcess/Cookies/soup/WebCookieManagerSoup.cpp 28 28 29 NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.cpp30 31 NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp32 33 29 NetworkProcess/cache/NetworkCacheDataSoup.cpp 34 30 NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp … … 42 38 NetworkProcess/soup/NetworkSessionSoup.cpp 43 39 NetworkProcess/soup/RemoteNetworkingContextSoup.cpp 44 NetworkProcess/soup/WebKitSoupRequestInputStream.cpp45 40 NetworkProcess/soup/WebSocketTaskSoup.cpp 46 41 … … 135 130 UIProcess/API/glib/WebKitCookieManager.cpp @no-unify 136 131 UIProcess/API/glib/WebKitCredential.cpp @no-unify 137 UIProcess/API/glib/WebKitCustomProtocolManagerClient.cpp @no-unify138 132 UIProcess/API/glib/WebKitDeviceInfoPermissionRequest.cpp @no-unify 139 133 UIProcess/API/glib/WebKitDownload.cpp @no-unify … … 215 209 UIProcess/Launcher/glib/ProcessLauncherGLib.cpp @no-unify 216 210 UIProcess/Launcher/glib/BubblewrapLauncher.cpp @no-unify 217 218 UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.cpp219 211 220 212 UIProcess/linux/MemoryPressureMonitor.cpp -
trunk/Source/WebKit/SourcesWPE.txt
r250517 r250597 27 27 NetworkProcess/Cookies/soup/WebCookieManagerSoup.cpp 28 28 29 NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.cpp30 31 NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp32 33 29 NetworkProcess/cache/NetworkCacheDataSoup.cpp 34 30 NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp … … 42 38 NetworkProcess/soup/NetworkSessionSoup.cpp 43 39 NetworkProcess/soup/RemoteNetworkingContextSoup.cpp 44 NetworkProcess/soup/WebKitSoupRequestInputStream.cpp45 40 NetworkProcess/soup/WebSocketTaskSoup.cpp 46 41 … … 124 119 UIProcess/API/glib/WebKitCookieManager.cpp @no-unify 125 120 UIProcess/API/glib/WebKitCredential.cpp @no-unify 126 UIProcess/API/glib/WebKitCustomProtocolManagerClient.cpp @no-unify127 121 UIProcess/API/glib/WebKitDeviceInfoPermissionRequest.cpp @no-unify 128 122 UIProcess/API/glib/WebKitDownload.cpp @no-unify … … 198 192 UIProcess/Launcher/glib/BubblewrapLauncher.cpp 199 193 200 UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.cpp201 202 194 UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp 203 195 UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp -
trunk/Source/WebKit/UIProcess/API/glib/WebKitURISchemeRequest.cpp
r249501 r250597 59 59 struct _WebKitURISchemeRequestPrivate { 60 60 WebKitWebContext* webContext; 61 LegacyCustomProtocolManagerProxy* manager; 61 RefPtr<WebURLSchemeTask> task; 62 62 63 RefPtr<WebPageProxy> initiatingPage; 63 uint64_t requestID;64 64 CString uri; 65 65 GUniquePtr<SoupURI> soupURI; … … 79 79 } 80 80 81 WebKitURISchemeRequest* webkitURISchemeRequestCreate( uint64_t requestID, WebKitWebContext* webContext, const ResourceRequest& resourceRequest, LegacyCustomProtocolManagerProxy& manager)81 WebKitURISchemeRequest* webkitURISchemeRequestCreate(WebKitWebContext* webContext, WebPageProxy& page, WebURLSchemeTask& task) 82 82 { 83 83 WebKitURISchemeRequest* request = WEBKIT_URI_SCHEME_REQUEST(g_object_new(WEBKIT_TYPE_URI_SCHEME_REQUEST, nullptr)); 84 84 request->priv->webContext = webContext; 85 request->priv->manager = &manager; 86 request->priv->uri = resourceRequest.url().string().utf8(); 87 request->priv->requestID = requestID; 88 89 ASSERT(resourceRequest.initiatingPageID()); 90 request->priv->initiatingPage = WebProcessProxy::webPage(makeObjectIdentifier<WebPageProxyIdentifierType>(*resourceRequest.initiatingPageID())); 91 ASSERT(request->priv->initiatingPage); 92 85 request->priv->task = &task; 86 request->priv->initiatingPage = &page; 93 87 return request; 94 88 } … … 99 93 } 100 94 101 LegacyCustomProtocolManagerProxy* webkitURISchemeRequestGetManager(WebKitURISchemeRequest* request)102 {103 return request->priv->manager;104 }105 106 void webkitURISchemeRequestInvalidate(WebKitURISchemeRequest* request)107 {108 request->priv->manager = nullptr;109 webkitURISchemeRequestCancel(request);110 }111 112 95 /** 113 96 * webkit_uri_scheme_request_get_scheme: … … 120 103 const char* webkit_uri_scheme_request_get_scheme(WebKitURISchemeRequest* request) 121 104 { 122 g_return_val_if_fail(WEBKIT_IS_URI_SCHEME_REQUEST(request), 0);105 g_return_val_if_fail(WEBKIT_IS_URI_SCHEME_REQUEST(request), nullptr); 123 106 124 107 if (!request->priv->soupURI) 125 request->priv->soupURI.reset(soup_uri_new(request->priv->uri.data())); 108 request->priv->soupURI = urlToSoupURI(request->priv->task->request().url()); 109 126 110 return request->priv->soupURI->scheme; 127 111 } … … 137 121 const char* webkit_uri_scheme_request_get_uri(WebKitURISchemeRequest* request) 138 122 { 139 g_return_val_if_fail(WEBKIT_IS_URI_SCHEME_REQUEST(request), 0); 123 g_return_val_if_fail(WEBKIT_IS_URI_SCHEME_REQUEST(request), nullptr); 124 125 if (request->priv->uri.isNull()) 126 request->priv->uri = request->priv->task->request().url().string().utf8(); 140 127 141 128 return request->priv->uri.data(); … … 152 139 const char* webkit_uri_scheme_request_get_path(WebKitURISchemeRequest* request) 153 140 { 154 g_return_val_if_fail(WEBKIT_IS_URI_SCHEME_REQUEST(request), 0);141 g_return_val_if_fail(WEBKIT_IS_URI_SCHEME_REQUEST(request), nullptr); 155 142 156 143 if (!request->priv->soupURI) 157 request->priv->soupURI.reset(soup_uri_new(request->priv->uri.data())); 144 request->priv->soupURI = urlToSoupURI(request->priv->task->request().url()); 145 158 146 return request->priv->soupURI->path; 159 147 } … … 169 157 WebKitWebView* webkit_uri_scheme_request_get_web_view(WebKitURISchemeRequest* request) 170 158 { 171 g_return_val_if_fail(WEBKIT_IS_URI_SCHEME_REQUEST(request), 0);159 g_return_val_if_fail(WEBKIT_IS_URI_SCHEME_REQUEST(request), nullptr); 172 160 173 161 return webkitWebContextGetWebViewForPage(request->priv->webContext, request->priv->initiatingPage.get()); … … 177 165 { 178 166 GRefPtr<WebKitURISchemeRequest> request = adoptGRef(schemeRequest); 179 WebKitURISchemeRequestPrivate* priv = request->priv;180 167 GUniqueOutPtr<GError> error; 181 168 gssize bytesRead = g_input_stream_read_finish(inputStream, result, &error.outPtr()); 182 if (!priv->manager) {183 webkitWebContextDidFinishLoadingCustomProtocol(priv->webContext, priv->requestID);184 return;185 }186 187 169 if (bytesRead == -1) { 188 170 webkit_uri_scheme_request_finish_error(request.get(), error.get()); … … 190 172 } 191 173 174 WebKitURISchemeRequestPrivate* priv = request->priv; 192 175 // Need to check the stream before proceeding as it can be cancelled if finish_error 193 176 // was previously call, which won't be detected by g_input_stream_read_finish(). 194 if (! request->priv->stream)177 if (!priv->stream) 195 178 return; 196 179 197 auto webData = IPC::DataReference(reinterpret_cast<const uint8_t*>(priv->readBuffer), bytesRead);198 180 if (!priv->bytesRead) { 199 // First chunk read. In case of empty reply an empty API::Data is sent to the networking process. 200 ResourceResponse response(URL(URL(), String::fromUTF8(priv->uri)), String::fromUTF8(priv->mimeType.data()), 201 priv->streamLength, emptyString()); 202 priv->manager->didReceiveResponse(priv->requestID, response, 0); 203 priv->manager->didLoadData(priv->requestID, webData); 204 } else if (bytesRead || (!bytesRead && !priv->streamLength)) { 205 // Subsequent chunk read. We only send an empty API::Data to the networking process when stream length is unknown. 206 priv->manager->didLoadData(priv->requestID, webData); 181 ResourceResponse response(priv->task->request().url(), String::fromUTF8(priv->mimeType.data()), priv->streamLength, emptyString()); 182 priv->task->didReceiveResponse(response); 207 183 } 208 184 209 185 if (!bytesRead) { 210 priv->manager->didFinishLoading(priv->requestID); 211 webkitWebContextDidFinishLoadingCustomProtocol(priv->webContext, priv->requestID); 186 priv->task->didComplete({ }); 212 187 return; 213 188 } 214 189 190 priv->task->didReceiveData(SharedBuffer::create(priv->readBuffer, bytesRead)); 215 191 priv->bytesRead += bytesRead; 216 192 g_input_stream_read_async(inputStream, priv->readBuffer, gReadBufferSize, RunLoopSourcePriority::AsyncIONetwork, priv->cancellable.get(), … … 258 234 259 235 WebKitURISchemeRequestPrivate* priv = request->priv; 260 if (!webkitWebContextIsLoadingCustomProtocol(priv->webContext, priv->requestID))261 return;262 263 236 priv->stream = nullptr; 264 ResourceError resourceError(g_quark_to_string(error->domain), toWebCoreError(error->code), soupURIToURL(priv->soupURI.get()), String::fromUTF8(error->message)); 265 priv->manager->didFailWithError(priv->requestID, resourceError); 266 webkitWebContextDidFinishLoadingCustomProtocol(priv->webContext, priv->requestID); 267 } 237 ResourceError resourceError(g_quark_to_string(error->domain), toWebCoreError(error->code), priv->task->request().url(), String::fromUTF8(error->message)); 238 priv->task->didComplete(resourceError); 239 } -
trunk/Source/WebKit/UIProcess/API/glib/WebKitURISchemeRequestPrivate.h
r218487 r250597 20 20 #pragma once 21 21 22 #include "LegacyCustomProtocolManagerProxy.h"23 22 #include "WebKitURISchemeRequest.h" 24 23 #include "WebKitWebContext.h" 24 #include "WebPageProxy.h" 25 #include "WebURLSchemeTask.h" 25 26 #include <WebCore/ResourceRequest.h> 26 27 27 WebKitURISchemeRequest* webkitURISchemeRequestCreate( uint64_t requestID, WebKitWebContext*, const WebCore::ResourceRequest&, WebKit::LegacyCustomProtocolManagerProxy&);28 WebKitURISchemeRequest* webkitURISchemeRequestCreate(WebKitWebContext*, WebKit::WebPageProxy&, WebKit::WebURLSchemeTask&); 28 29 void webkitURISchemeRequestCancel(WebKitURISchemeRequest*); 29 WebKit::LegacyCustomProtocolManagerProxy* webkitURISchemeRequestGetManager(WebKitURISchemeRequest*);30 void webkitURISchemeRequestInvalidate(WebKitURISchemeRequest*); -
trunk/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp
r250518 r250597 22 22 23 23 #include "APIAutomationClient.h" 24 #include "APICustomProtocolManagerClient.h"25 24 #include "APIDownloadClient.h" 26 25 #include "APIInjectedBundleClient.h" … … 34 33 #include "WebCertificateInfo.h" 35 34 #include "WebKitAutomationSessionPrivate.h" 36 #include "WebKitCustomProtocolManagerClient.h"37 35 #include "WebKitDownloadClient.h" 38 36 #include "WebKitDownloadPrivate.h" … … 54 52 #include "WebKitWebsiteDataManagerPrivate.h" 55 53 #include "WebNotificationManagerProxy.h" 54 #include "WebURLSchemeHandler.h" 56 55 #include "WebsiteDataType.h" 57 56 #include <JavaScriptCore/RemoteInspector.h> … … 126 125 }; 127 126 128 class WebKitURISchemeHandler : public RefCounted<WebKitURISchemeHandler>{127 class WebKitURISchemeHandler final : public WebURLSchemeHandler { 129 128 public: 130 WebKitURISchemeHandler(WebKitURISchemeRequestCallback callback, void* userData, GDestroyNotify destroyNotify) 131 : m_callback(callback) 132 , m_userData(userData) 133 , m_destroyNotify(destroyNotify) 129 static Ref<WebKitURISchemeHandler> create(WebKitWebContext* context, WebKitURISchemeRequestCallback callback, void* userData, GDestroyNotify destroyNotify) 134 130 { 131 return adoptRef(*new WebKitURISchemeHandler(context, callback, userData, destroyNotify)); 135 132 } 136 133 … … 141 138 } 142 139 143 bool hasCallback() 140 private: 141 WebKitURISchemeHandler(WebKitWebContext* context, WebKitURISchemeRequestCallback callback, void* userData, GDestroyNotify destroyNotify) 142 : m_context(context) 143 , m_callback(callback) 144 , m_userData(userData) 145 , m_destroyNotify(destroyNotify) 144 146 { 145 return m_callback; 146 } 147 148 void performCallback(WebKitURISchemeRequest* request) 147 } 148 149 void platformStartTask(WebPageProxy& page, WebURLSchemeTask& task) final 149 150 { 150 ASSERT(m_callback); 151 152 m_callback(request, m_userData); 153 } 154 155 private: 151 if (!m_callback) 152 return; 153 154 GRefPtr<WebKitURISchemeRequest> request = adoptGRef(webkitURISchemeRequestCreate(m_context, page, task)); 155 auto addResult = m_requests.add(task.identifier(), WTFMove(request)); 156 ASSERT(addResult.isNewEntry); 157 m_callback(addResult.iterator->value.get(), m_userData); 158 } 159 160 void platformStopTask(WebPageProxy&, WebURLSchemeTask& task) final 161 { 162 auto it = m_requests.find(task.identifier()); 163 if (it == m_requests.end()) 164 return; 165 166 webkitURISchemeRequestCancel(it->value.get()); 167 m_requests.remove(it); 168 } 169 170 void platformTaskCompleted(WebURLSchemeTask& task) final 171 { 172 m_requests.remove(task.identifier()); 173 } 174 175 WebKitWebContext* m_context { nullptr }; 156 176 WebKitURISchemeRequestCallback m_callback { nullptr }; 157 177 void* m_userData { nullptr }; 158 178 GDestroyNotify m_destroyNotify { nullptr }; 179 HashMap<uint64_t, GRefPtr<WebKitURISchemeRequest>> m_requests; 159 180 }; 160 181 … … 171 192 GRefPtr<WebKitSecurityManager> securityManager; 172 193 URISchemeHandlerMap uriSchemeHandlers; 173 URISchemeRequestMap uriSchemeRequests;174 194 GRefPtr<WebKitGeolocationManager> geolocationManager; 175 195 std::unique_ptr<WebKitNotificationProvider> notificationProvider; … … 348 368 attachInjectedBundleClientToContext(webContext); 349 369 attachDownloadClientToContext(webContext); 350 attachCustomProtocolManagerClientToContext(webContext);351 370 352 371 priv->geolocationManager = adoptGRef(webkitGeolocationManagerCreate(priv->processPool->supplement<WebGeolocationManagerProxy>())); … … 365 384 priv->processPool->setInjectedBundleClient(nullptr); 366 385 priv->processPool->setDownloadClient(makeUniqueRef<API::DownloadClient>()); 367 priv->processPool->setLegacyCustomProtocolManagerClient(nullptr);368 386 } 369 387 … … 1115 1133 g_return_if_fail(callback); 1116 1134 1117 RefPtr<WebKitURISchemeHandler> handler = adoptRef(new WebKitURISchemeHandler(callback, userData, destroyNotify));1118 auto addResult = context->priv->uriSchemeHandlers.set(String::fromUTF8(scheme), handler.get());1119 if (addResult.isNewEntry)1120 WebKit::WebProcessPool::registerGlobalURLSchemeAsHavingCustomProtocolHandlers(String::fromUTF8(scheme));1135 auto handler = WebKitURISchemeHandler::create(context, callback, userData, destroyNotify); 1136 auto addResult = context->priv->uriSchemeHandlers.set(String::fromUTF8(scheme), WTFMove(handler)); 1137 for (auto* webView : context->priv->webViews.values()) 1138 webkitWebViewGetPage(webView).setURLSchemeHandlerForScheme(*addResult.iterator->value, String::fromUTF8(scheme)); 1121 1139 } 1122 1140 … … 1665 1683 } 1666 1684 1667 void webkitWebContextStartLoadingCustomProtocol(WebKitWebContext* context, uint64_t customProtocolID, const WebCore::ResourceRequest& resourceRequest, LegacyCustomProtocolManagerProxy& manager)1668 {1669 GRefPtr<WebKitURISchemeRequest> request = adoptGRef(webkitURISchemeRequestCreate(customProtocolID, context, resourceRequest, manager));1670 String scheme(String::fromUTF8(webkit_uri_scheme_request_get_scheme(request.get())));1671 RefPtr<WebKitURISchemeHandler> handler = context->priv->uriSchemeHandlers.get(scheme);1672 ASSERT(handler.get());1673 if (!handler->hasCallback())1674 return;1675 1676 context->priv->uriSchemeRequests.set(customProtocolID, request.get());1677 handler->performCallback(request.get());1678 }1679 1680 void webkitWebContextStopLoadingCustomProtocol(WebKitWebContext* context, uint64_t customProtocolID)1681 {1682 GRefPtr<WebKitURISchemeRequest> request = context->priv->uriSchemeRequests.get(customProtocolID);1683 if (!request.get())1684 return;1685 webkitURISchemeRequestCancel(request.get());1686 }1687 1688 void webkitWebContextInvalidateCustomProtocolRequests(WebKitWebContext* context, LegacyCustomProtocolManagerProxy& manager)1689 {1690 for (auto& request : copyToVector(context->priv->uriSchemeRequests.values())) {1691 if (webkitURISchemeRequestGetManager(request.get()) == &manager)1692 webkitURISchemeRequestInvalidate(request.get());1693 }1694 }1695 1696 void webkitWebContextDidFinishLoadingCustomProtocol(WebKitWebContext* context, uint64_t customProtocolID)1697 {1698 context->priv->uriSchemeRequests.remove(customProtocolID);1699 }1700 1701 bool webkitWebContextIsLoadingCustomProtocol(WebKitWebContext* context, uint64_t customProtocolID)1702 {1703 return context->priv->uriSchemeRequests.get(customProtocolID);1704 }1705 1706 1685 void webkitWebContextCreatePageForWebView(WebKitWebContext* context, WebKitWebView* webView, WebKitUserContentManager* userContentManager, WebKitWebView* relatedView) 1707 1686 { … … 1719 1698 webkitWebViewCreatePage(webView, WTFMove(pageConfiguration)); 1720 1699 1700 auto& page = webkitWebViewGetPage(webView); 1701 for (auto& it : context->priv->uriSchemeHandlers) { 1702 Ref<WebURLSchemeHandler> handler(*it.value); 1703 page.setURLSchemeHandlerForScheme(WTFMove(handler), it.key); 1704 } 1705 1721 1706 context->priv->webViews.set(webkit_web_view_get_page_id(webView), webView); 1722 1707 } -
trunk/Source/WebKit/UIProcess/API/glib/WebKitWebContextPrivate.h
r232111 r250597 27 27 28 28 #include "DownloadProxy.h" 29 #include "LegacyCustomProtocolManagerProxy.h"30 29 #include "WebKitUserContentManager.h" 31 30 #include "WebKitWebContext.h" … … 38 37 void webkitWebContextRemoveDownload(WebKit::DownloadProxy*); 39 38 void webkitWebContextDownloadStarted(WebKitWebContext*, WebKitDownload*); 40 void webkitWebContextStartLoadingCustomProtocol(WebKitWebContext*, uint64_t customProtocolID, const WebCore::ResourceRequest&, WebKit::LegacyCustomProtocolManagerProxy&);41 void webkitWebContextStopLoadingCustomProtocol(WebKitWebContext*, uint64_t customProtocolID);42 void webkitWebContextInvalidateCustomProtocolRequests(WebKitWebContext*, WebKit::LegacyCustomProtocolManagerProxy&);43 void webkitWebContextDidFinishLoadingCustomProtocol(WebKitWebContext*, uint64_t customProtocolID);44 bool webkitWebContextIsLoadingCustomProtocol(WebKitWebContext*, uint64_t customProtocolID);45 39 void webkitWebContextCreatePageForWebView(WebKitWebContext*, WebKitWebView*, WebKitUserContentManager*, WebKitWebView*); 46 40 void webkitWebContextWebViewDestroyed(WebKitWebContext*, WebKitWebView*); -
trunk/Source/WebKit/UIProcess/WebURLSchemeTask.h
r249329 r250597 63 63 WebCore::PageIdentifier webPageID() const { ASSERT(RunLoop::isMain()); return m_webPageID; } 64 64 WebProcessProxy* process() { ASSERT(RunLoop::isMain()); return m_process.get(); } 65 const WebCore::ResourceRequest& request() const { ASSERT(RunLoop::isMain()); return m_request; } 65 66 66 67 #if PLATFORM(COCOA) 67 68 NSURLRequest *nsRequest() const; 68 #endif69 #if PLATFORM(WIN)70 const WebCore::ResourceRequest& request() const { ASSERT(RunLoop::isMain()); return m_request; }71 69 #endif 72 70 -
trunk/Source/WebKit/UIProcess/soup/WebProcessPoolSoup.cpp
r243143 r250597 27 27 #include "WebProcessPool.h" 28 28 29 #include "APICustomProtocolManagerClient.h"30 29 #include "NetworkProcessCreationParameters.h" 31 30 #include "NetworkProcessMessages.h" -
trunk/Source/cmake/OptionsFTW.cmake
r248755 r250597 91 91 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_KEYBOARD_KEY_ATTRIBUTE PRIVATE ON) 92 92 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LEGACY_CSS_VENDOR_PREFIXES PRIVATE ON) 93 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER PRIVATE OFF)94 93 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MAC_GESTURE_EVENTS PRIVATE OFF) 95 94 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MATHML PRIVATE ON) -
trunk/Source/cmake/OptionsPlayStation.cmake
r250596 r250597 39 39 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTPDIR PRIVATE OFF) 40 40 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GEOLOCATION PRIVATE OFF) 41 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER PRIVATE OFF)42 41 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MATHML PRIVATE OFF) 43 42 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_METER_ELEMENT PRIVATE OFF) -
trunk/Source/cmake/OptionsWin.cmake
r248788 r250597 76 76 if (${WTF_PLATFORM_WIN_CAIRO}) 77 77 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INTL PUBLIC ON) 78 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER PUBLIC OFF)79 78 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LEGACY_ENCRYPTED_MEDIA PUBLIC OFF) 80 79 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_PUBLIC_SUFFIX_LIST PRIVATE ON) -
trunk/Source/cmake/WebKitFeatures.cmake
r247367 r250597 157 157 WEBKIT_OPTION_DEFINE(ENABLE_LAYOUT_FORMATTING_CONTEXT "Toggle Layout Formatting Context support" PRIVATE OFF) 158 158 WEBKIT_OPTION_DEFINE(ENABLE_LEGACY_CSS_VENDOR_PREFIXES "Toggle legacy css vendor prefix support" PRIVATE OFF) 159 WEBKIT_OPTION_DEFINE(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER "Toggle legacy protocol manager support" PRIVATE O N)159 WEBKIT_OPTION_DEFINE(ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER "Toggle legacy protocol manager support" PRIVATE OFF) 160 160 WEBKIT_OPTION_DEFINE(ENABLE_LEGACY_ENCRYPTED_MEDIA "Toggle Legacy EME V2 support" PRIVATE OFF) 161 161 WEBKIT_OPTION_DEFINE(ENABLE_LETTERPRESS "Toggle letterpress support" PRIVATE OFF) -
trunk/Tools/ChangeLog
r250593 r250597 1 2019-10-02 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [GTK][WPE] Stop using legacy custom protocol implementation 4 https://bugs.webkit.org/show_bug.cgi?id=202407 5 6 Reviewed by Žan Doberšek. 7 8 Remove the tests to check failure after committed, because it's not possible to test it with current code. 9 10 * TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp: 11 (testWebContextURIScheme): 12 1 13 2019-10-01 Alexey Shvayka <shvaikalesh@gmail.com> 2 14 -
trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp
r248552 r250597 162 162 static const char* genericErrorMessage = "Error message."; 163 163 static const char* beforeReceiveResponseErrorMessage = "Error before didReceiveResponse."; 164 static const char* afterInitialChunkErrorMessage = "Error after reading the initial chunk.";165 164 166 165 class URISchemeTest: public LoadTrackingTest { … … 241 240 } 242 241 243 void loadCommitted() override244 {245 if (m_finishOnCommitted) {246 GUniquePtr<GError> error(g_error_new_literal(g_quark_from_string(errorDomain), errorCode, afterInitialChunkErrorMessage));247 webkit_uri_scheme_request_finish_error(m_uriSchemeRequest.get(), error.get());248 }249 250 LoadTrackingTest::loadCommitted();251 }252 253 void finishOnCommittedAndWaitUntilLoadFinished()254 {255 m_finishOnCommitted = true;256 waitUntilLoadFinished();257 m_finishOnCommitted = false;258 }259 260 242 GRefPtr<WebKitURISchemeRequest> m_uriSchemeRequest; 261 243 HashMap<String, URISchemeHandler> m_handlersMap; 262 bool m_finishOnCommitted { false };263 244 }; 264 245 … … 319 300 g_assert_cmpint(strncmp(mainResourceData, echoHTML.get(), mainResourceDataSize), ==, 0); 320 301 321 test->registerURISchemeHandler("nomime", kBarHTML, -1, 0);302 test->registerURISchemeHandler("nomime", kBarHTML, -1, nullptr); 322 303 test->m_loadEvents.clear(); 323 304 test->loadURI("nomime:foo-bar"); … … 325 306 g_assert_true(test->m_loadEvents.contains(LoadTrackingTest::ProvisionalLoadFailed)); 326 307 327 test->registerURISchemeHandler("empty", 0, 0, "text/html");308 test->registerURISchemeHandler("empty", nullptr, 0, "text/html"); 328 309 test->m_loadEvents.clear(); 329 310 test->loadURI("empty:nothing"); … … 353 334 g_assert_cmpstr(test->m_error->message, ==, beforeReceiveResponseErrorMessage); 354 335 355 test->m_loadEvents.clear(); 356 test->loadURI("error:after-first-chunk"); 357 test->finishOnCommittedAndWaitUntilLoadFinished(); 358 g_assert_false(test->m_loadEvents.contains(LoadTrackingTest::ProvisionalLoadFailed)); 359 g_assert_true(test->m_loadEvents.contains(LoadTrackingTest::LoadFailed)); 360 g_assert_true(test->m_loadFailed); 361 g_assert_error(test->m_error.get(), g_quark_from_string(errorDomain), errorCode); 362 g_assert_cmpstr(test->m_error->message, ==, afterInitialChunkErrorMessage); 363 364 test->registerURISchemeHandler("closed", 0, 0, 0); 336 test->registerURISchemeHandler("closed", nullptr, 0, nullptr); 365 337 test->m_loadEvents.clear(); 366 338 test->loadURI("closed:input-stream");
Note: See TracChangeset
for help on using the changeset viewer.