Changeset 246660 in webkit
- Timestamp:
- Jun 20, 2019 3:52:06 PM (5 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r246657 r246660 1 2019-06-20 Brady Eidson <beidson@apple.com> 2 3 WebURLSchemeHandlerProxy::loadSynchronously crash with sync request. 4 <rdar://problem/51862206> and https://bugs.webkit.org/show_bug.cgi?id=199063 5 6 Reviewed by Geoffrey Garen. 7 8 Don't use a DataReference for the sync reply type. 9 10 * UIProcess/WebPageProxy.messages.in: 11 * UIProcess/WebURLSchemeHandler.h: 12 13 * UIProcess/WebURLSchemeTask.cpp: 14 (WebKit::WebURLSchemeTask::didComplete): 15 * UIProcess/WebURLSchemeTask.h: 16 17 * WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp: 18 (WebKit::WebURLSchemeHandlerProxy::loadSynchronously): 19 1 20 2019-06-20 Alex Christensen <achristensen@webkit.org> 2 21 -
trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in
r246413 r246660 537 537 StartURLSchemeTask(struct WebKit::URLSchemeTaskParameters parameters) 538 538 StopURLSchemeTask(uint64_t handlerIdentifier, uint64_t taskIdentifier) 539 LoadSynchronousURLSchemeTask(struct WebKit::URLSchemeTaskParameters parameters) -> (WebCore::ResourceResponse response, WebCore::ResourceError error, IPC::DataReferencedata) Synchronous539 LoadSynchronousURLSchemeTask(struct WebKit::URLSchemeTaskParameters parameters) -> (WebCore::ResourceResponse response, WebCore::ResourceError error, Vector<char> data) Synchronous 540 540 541 541 #if ENABLE(DEVICE_ORIENTATION) -
trunk/Source/WebKit/UIProcess/WebURLSchemeHandler.h
r245796 r246660 45 45 class WebProcessProxy; 46 46 47 using SyncLoadCompletionHandler = CompletionHandler<void(const WebCore::ResourceResponse&, const WebCore::ResourceError&, const IPC::DataReference&)>;47 using SyncLoadCompletionHandler = CompletionHandler<void(const WebCore::ResourceResponse&, const WebCore::ResourceError&, const Vector<char>&)>; 48 48 49 49 class WebURLSchemeHandler : public RefCounted<WebURLSchemeHandler> { -
trunk/Source/WebKit/UIProcess/WebURLSchemeTask.cpp
r240046 r246660 137 137 138 138 if (isSync()) { 139 IPC::DataReference data; 140 if (m_syncData) 141 data = { reinterpret_cast<const uint8_t*>(m_syncData->data()), m_syncData->size() }; 142 m_syncCompletionHandler(m_syncResponse, error, data); 139 Vector<char> data; 140 if (m_syncData) { 141 data.resize(m_syncData->size()); 142 memcpy(data.data(), reinterpret_cast<const char*>(m_syncData->data()), m_syncData->size()); 143 } 144 145 m_syncCompletionHandler(m_syncResponse, error, WTFMove(data)); 143 146 m_syncData = nullptr; 144 147 } -
trunk/Source/WebKit/UIProcess/WebURLSchemeTask.h
r245796 r246660 50 50 class WebPageProxy; 51 51 52 using SyncLoadCompletionHandler = CompletionHandler<void(const WebCore::ResourceResponse&, const WebCore::ResourceError&, const IPC::DataReference&)>;52 using SyncLoadCompletionHandler = CompletionHandler<void(const WebCore::ResourceResponse&, const WebCore::ResourceError&, const Vector<char>&)>; 53 53 54 54 class WebURLSchemeTask : public RefCounted<WebURLSchemeTask>, public InstanceCounted<WebURLSchemeTask> { -
trunk/Source/WebKit/WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp
r235205 r246660 65 65 void WebURLSchemeHandlerProxy::loadSynchronously(ResourceLoadIdentifier loadIdentifier, const ResourceRequest& request, ResourceResponse& response, ResourceError& error, Vector<char>& data) 66 66 { 67 IPC::DataReference dataReference;68 if (!m_webPage.sendSync(Messages::WebPageProxy::LoadSynchronousURLSchemeTask(URLSchemeTaskParameters { m_identifier, loadIdentifier, request }), Messages::WebPageProxy::LoadSynchronousURLSchemeTask::Reply(response, error, data Reference))) {67 data.shrink(0); 68 if (!m_webPage.sendSync(Messages::WebPageProxy::LoadSynchronousURLSchemeTask(URLSchemeTaskParameters { m_identifier, loadIdentifier, request }), Messages::WebPageProxy::LoadSynchronousURLSchemeTask::Reply(response, error, data))) { 69 69 error = failedCustomProtocolSyncLoad(request); 70 70 return; 71 71 } 72 73 data.resize(dataReference.size());74 memcpy(data.data(), dataReference.data(), dataReference.size());75 72 } 76 73
Note: See TracChangeset
for help on using the changeset viewer.