Changeset 252260 in webkit
- Timestamp:
- Nov 8, 2019 1:34:49 PM (4 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r252259 r252260 1 2019-11-08 Alex Christensen <achristensen@webkit.org> 2 3 Make DownloadID an ObjectIdentifier 4 https://bugs.webkit.org/show_bug.cgi?id=203962 5 6 Reviewed by Youenn Fablet. 7 8 Also deprecate the unused WKDownloadGetID because this identifier is internal. 9 10 * NetworkProcess/Downloads/Download.cpp: 11 (WebKit::Download::Download): 12 (WebKit::Download::didReceiveData): 13 (WebKit::Download::didFinish): 14 (WebKit::Download::didFail): 15 (WebKit::Download::didCancel): 16 (WebKit::Download::messageSenderDestinationID const): 17 * NetworkProcess/Downloads/DownloadID.h: 18 (WebKit::DownloadID::DownloadID): Deleted. 19 (WebKit::DownloadID::operator== const): Deleted. 20 (WebKit::DownloadID::operator!= const): Deleted. 21 (WebKit::DownloadID::downloadID const): Deleted. 22 (IPC::ArgumentCoder<WebKit::DownloadID>::encode): Deleted. 23 (IPC::ArgumentCoder<WebKit::DownloadID>::decode): Deleted. 24 (WTF::DownloadIDHash::hash): Deleted. 25 (WTF::DownloadIDHash::equal): Deleted. 26 (WTF::HashTraits<WebKit::DownloadID>::emptyValue): Deleted. 27 (WTF::HashTraits<WebKit::DownloadID>::constructDeletedValue): Deleted. 28 (WTF::HashTraits<WebKit::DownloadID>::isDeletedValue): Deleted. 29 * NetworkProcess/Downloads/DownloadMonitor.cpp: 30 (WebKit::DownloadMonitor::applicationWillEnterForeground): 31 (WebKit::DownloadMonitor::applicationDidEnterBackground): 32 (WebKit::DownloadMonitor::timerFired): 33 * NetworkProcess/Downloads/PendingDownload.cpp: 34 (WebKit::PendingDownload::messageSenderDestinationID const): 35 * NetworkProcess/Downloads/PendingDownload.h: 36 * NetworkProcess/NetworkDataTask.h: 37 (WebKit::NetworkDataTask::setPendingDownloadID): 38 (WebKit::NetworkDataTask::isDownload const): 39 * NetworkProcess/NetworkProcess.cpp: 40 (WebKit::NetworkProcess::pendingDownloadCanceled): 41 (WebKit::NetworkProcess::findPendingDownloadLocation): 42 * NetworkProcess/NetworkProcess.h: 43 * NetworkProcess/NetworkResourceLoader.cpp: 44 (WebKit::NetworkResourceLoader::convertToDownload): 45 * NetworkProcess/cocoa/NetworkSessionCocoa.mm: 46 (-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]): 47 (-[WKNetworkSessionDelegate URLSession:downloadTask:didFinishDownloadingToURL:]): 48 (-[WKNetworkSessionDelegate URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]): 49 (WebKit::NetworkSessionCocoa::continueDidReceiveChallenge): 50 * Scripts/webkit/messages.py: 51 * Shared/Authentication/AuthenticationManager.h: 52 * UIProcess/API/C/WKDownload.cpp: 53 (WKDownloadGetID): 54 * UIProcess/API/C/WKDownload.h: 55 * UIProcess/Downloads/DownloadProxy.cpp: 56 (WebKit::DownloadProxy::DownloadProxy): 57 (WebKit::generateDownloadID): Deleted. 58 * UIProcess/Downloads/DownloadProxy.h: 59 * UIProcess/Downloads/DownloadProxyMap.cpp: 60 (WebKit::DownloadProxyMap::createDownloadProxy): 61 (WebKit::DownloadProxyMap::downloadFinished): 62 (WebKit::DownloadProxyMap::invalidate): 63 * WebProcess/WebPage/WebFrame.cpp: 64 (WebKit::WebFrame::startDownload): 65 (WebKit::WebFrame::convertMainResourceLoadToDownload): 66 * WebProcess/WebPage/WebFrame.h: 67 * WebProcess/WebPage/WebPage.h: 68 1 69 2019-11-08 Alex Christensen <achristensen@webkit.org> 2 70 -
trunk/Source/WebKit/NetworkProcess/Downloads/Download.cpp
r250521 r252260 60 60 , m_testSpeedMultiplier(session.testSpeedMultiplier()) 61 61 { 62 ASSERT(m_downloadID .downloadID());62 ASSERT(m_downloadID); 63 63 64 64 m_downloadManager.didCreateDownload(); … … 75 75 , m_testSpeedMultiplier(session.testSpeedMultiplier()) 76 76 { 77 ASSERT(m_downloadID .downloadID());77 ASSERT(m_downloadID); 78 78 79 79 m_downloadManager.didCreateDownload(); … … 121 121 { 122 122 if (!m_hasReceivedData) { 123 RELEASE_LOG_IF_ALLOWED("didReceiveData: Started receiving data (id = %" PRIu64 ")", downloadID(). downloadID());123 RELEASE_LOG_IF_ALLOWED("didReceiveData: Started receiving data (id = %" PRIu64 ")", downloadID().toUInt64()); 124 124 m_hasReceivedData = true; 125 125 } … … 132 132 void Download::didFinish() 133 133 { 134 RELEASE_LOG_IF_ALLOWED("didFinish: (id = %" PRIu64 ")", downloadID(). downloadID());134 RELEASE_LOG_IF_ALLOWED("didFinish: (id = %" PRIu64 ")", downloadID().toUInt64()); 135 135 136 136 send(Messages::DownloadProxy::DidFinish()); … … 147 147 { 148 148 RELEASE_LOG_IF_ALLOWED("didFail: (id = %" PRIu64 ", isTimeout = %d, isCancellation = %d, errCode = %d)", 149 downloadID(). downloadID(), error.isTimeout(), error.isCancellation(), error.errorCode());149 downloadID().toUInt64(), error.isTimeout(), error.isCancellation(), error.errorCode()); 150 150 151 151 send(Messages::DownloadProxy::DidFail(error, resumeData)); … … 160 160 void Download::didCancel(const IPC::DataReference& resumeData) 161 161 { 162 RELEASE_LOG_IF_ALLOWED("didCancel: (id = %" PRIu64 ")", downloadID(). downloadID());162 RELEASE_LOG_IF_ALLOWED("didCancel: (id = %" PRIu64 ")", downloadID().toUInt64()); 163 163 164 164 send(Messages::DownloadProxy::DidCancel(resumeData)); … … 178 178 uint64_t Download::messageSenderDestinationID() const 179 179 { 180 return m_downloadID. downloadID();180 return m_downloadID.toUInt64(); 181 181 } 182 182 -
trunk/Source/WebKit/NetworkProcess/Downloads/DownloadID.h
r204668 r252260 24 24 */ 25 25 26 #ifndef DownloadID_h 27 #define DownloadID_h 26 #pragma once 28 27 29 #include "ArgumentCoder.h" 30 #include "Decoder.h" 31 #include "Encoder.h" 32 #include <wtf/HashTraits.h> 28 #include <wtf/ObjectIdentifier.h> 33 29 34 30 namespace WebKit { 35 31 36 class DownloadID { 37 public: 38 DownloadID() 39 { 40 } 41 42 explicit DownloadID(uint64_t downloadID) 43 : m_downloadID(downloadID) 44 { 45 } 46 47 bool operator==(DownloadID other) const { return m_downloadID == other.m_downloadID; } 48 bool operator!=(DownloadID other) const { return m_downloadID != other.m_downloadID; } 49 50 uint64_t downloadID() const { return m_downloadID; } 51 private: 52 uint64_t m_downloadID { 0 }; 53 }; 32 enum DownloadIdentifierType { }; 33 using DownloadID = ObjectIdentifier<DownloadIdentifierType>; 54 34 55 35 } 56 57 namespace IPC {58 59 template<> struct ArgumentCoder<WebKit::DownloadID> {60 static void encode(Encoder& encoder, const WebKit::DownloadID& downloadID)61 {62 encoder << downloadID.downloadID();63 }64 static bool decode(Decoder& decoder, WebKit::DownloadID& downloadID)65 {66 uint64_t id;67 if (!decoder.decode(id))68 return false;69 70 downloadID = WebKit::DownloadID(id);71 72 return true;73 }74 };75 76 }77 78 namespace WTF {79 80 struct DownloadIDHash {81 static unsigned hash(const WebKit::DownloadID& d) { return intHash(d.downloadID()); }82 static bool equal(const WebKit::DownloadID& a, const WebKit::DownloadID& b) { return a.downloadID() == b.downloadID(); }83 static const bool safeToCompareToEmptyOrDeleted = true;84 };85 template<> struct HashTraits<WebKit::DownloadID> : GenericHashTraits<WebKit::DownloadID> {86 static WebKit::DownloadID emptyValue() { return { }; }87 88 static void constructDeletedValue(WebKit::DownloadID& slot) { slot = WebKit::DownloadID(std::numeric_limits<uint64_t>::max()); }89 static bool isDeletedValue(const WebKit::DownloadID& slot) { return slot.downloadID() == std::numeric_limits<uint64_t>::max(); }90 };91 template<> struct DefaultHash<WebKit::DownloadID> {92 typedef DownloadIDHash Hash;93 };94 95 }96 #endif /* DownloadID_h */ -
trunk/Source/WebKit/NetworkProcess/Downloads/DownloadMonitor.cpp
r250521 r252260 94 94 void DownloadMonitor::applicationWillEnterForeground() 95 95 { 96 RELEASE_LOG_IF_ALLOWED("applicationWillEnterForeground (id = %" PRIu64 ")", m_download.downloadID(). downloadID());96 RELEASE_LOG_IF_ALLOWED("applicationWillEnterForeground (id = %" PRIu64 ")", m_download.downloadID().toUInt64()); 97 97 m_timer.stop(); 98 98 m_interval = 0; … … 101 101 void DownloadMonitor::applicationDidEnterBackground() 102 102 { 103 RELEASE_LOG_IF_ALLOWED("applicationDidEnterBackground (id = %" PRIu64 ")", m_download.downloadID(). downloadID());103 RELEASE_LOG_IF_ALLOWED("applicationDidEnterBackground (id = %" PRIu64 ")", m_download.downloadID().toUInt64()); 104 104 ASSERT(!m_timer.isActive()); 105 105 ASSERT(!m_interval); … … 118 118 RELEASE_ASSERT(m_interval < WTF_ARRAY_LENGTH(throughputIntervals)); 119 119 if (measuredThroughputRate() < throughputIntervals[m_interval].bytesPerSecond) { 120 RELEASE_LOG_IF_ALLOWED("timerFired: cancelling download (id = %" PRIu64 ")", m_download.downloadID(). downloadID());120 RELEASE_LOG_IF_ALLOWED("timerFired: cancelling download (id = %" PRIu64 ")", m_download.downloadID().toUInt64()); 121 121 m_download.cancel(); 122 122 } else if (m_interval + 1 < WTF_ARRAY_LENGTH(throughputIntervals)) { 123 RELEASE_LOG_IF_ALLOWED("timerFired: sufficient throughput rate (id = %" PRIu64 ")", m_download.downloadID(). downloadID());123 RELEASE_LOG_IF_ALLOWED("timerFired: sufficient throughput rate (id = %" PRIu64 ")", m_download.downloadID().toUInt64()); 124 124 m_timer.startOneShot(timeUntilNextInterval(m_interval++) / testSpeedMultiplier()); 125 125 } else 126 RELEASE_LOG_IF_ALLOWED("timerFired: Download reached threshold to not be terminated (id = %" PRIu64 ")", m_download.downloadID(). downloadID());126 RELEASE_LOG_IF_ALLOWED("timerFired: Download reached threshold to not be terminated (id = %" PRIu64 ")", m_download.downloadID().toUInt64()); 127 127 } 128 128 -
trunk/Source/WebKit/NetworkProcess/Downloads/PendingDownload.cpp
r248846 r252260 111 111 uint64_t PendingDownload::messageSenderDestinationID() const 112 112 { 113 return m_networkLoad->pendingDownloadID(). downloadID();113 return m_networkLoad->pendingDownloadID().toUInt64(); 114 114 } 115 115 -
trunk/Source/WebKit/NetworkProcess/Downloads/PendingDownload.h
r241008 r252260 26 26 #pragma once 27 27 28 #include "DownloadID.h" 28 29 #include "MessageSender.h" 29 30 #include "NetworkLoadClient.h" … … 42 43 43 44 class Download; 44 class DownloadID;45 45 class NetworkLoad; 46 46 class NetworkLoadParameters; -
trunk/Source/WebKit/NetworkProcess/NetworkDataTask.h
r252185 r252260 109 109 void setPendingDownloadID(DownloadID downloadID) 110 110 { 111 ASSERT(!m_pendingDownloadID .downloadID());112 ASSERT(downloadID .downloadID());111 ASSERT(!m_pendingDownloadID); 112 ASSERT(downloadID); 113 113 m_pendingDownloadID = downloadID; 114 114 } … … 121 121 virtual void setPendingDownloadLocation(const String& filename, SandboxExtension::Handle&&, bool /*allowOverwrite*/) { m_pendingDownloadLocation = filename; } 122 122 const String& pendingDownloadLocation() const { return m_pendingDownloadLocation; } 123 bool isDownload() const { return !!m_pendingDownloadID .downloadID(); }123 bool isDownload() const { return !!m_pendingDownloadID; } 124 124 125 125 const WebCore::ResourceRequest& firstRequest() const { return m_firstRequest; } -
trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp
r252259 r252260 1968 1968 void NetworkProcess::pendingDownloadCanceled(DownloadID downloadID) 1969 1969 { 1970 downloadProxyConnection()->send(Messages::DownloadProxy::DidCancel({ }), downloadID .downloadID());1970 downloadProxyConnection()->send(Messages::DownloadProxy::DidCancel({ }), downloadID); 1971 1971 } 1972 1972 1973 1973 void NetworkProcess::findPendingDownloadLocation(NetworkDataTask& networkDataTask, ResponseCompletionHandler&& completionHandler, const ResourceResponse& response) 1974 1974 { 1975 uint64_t destinationID = networkDataTask.pendingDownloadID().downloadID();1975 auto destinationID = networkDataTask.pendingDownloadID(); 1976 1976 downloadProxyConnection()->send(Messages::DownloadProxy::DidReceiveResponse(response), destinationID); 1977 1977 -
trunk/Source/WebKit/NetworkProcess/NetworkProcess.h
r252259 r252260 28 28 #include "AuxiliaryProcess.h" 29 29 #include "CacheModel.h" 30 #include "DownloadID.h" 30 31 #include "DownloadManager.h" 31 32 #include "LocalStorageDatabaseTracker.h" … … 76 77 class CertificateInfo; 77 78 class CurlProxySettings; 78 class DownloadID;79 79 class ProtectionSpace; 80 80 class StorageQuotaManager; -
trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
r252047 r252260 357 357 void NetworkResourceLoader::convertToDownload(DownloadID downloadID, const ResourceRequest& request, const ResourceResponse& response) 358 358 { 359 RELEASE_LOG(Loading, "Converting NetworkResourceLoader %p to download %" PRIu64 " (pageID = %" PRIu64 ", frameID = %" PRIu64 ", resourceID = %" PRIu64 ")", this, downloadID. downloadID(), m_parameters.webPageID.toUInt64(), m_parameters.webFrameID.toUInt64(), m_parameters.identifier);359 RELEASE_LOG(Loading, "Converting NetworkResourceLoader %p to download %" PRIu64 " (pageID = %" PRIu64 ", frameID = %" PRIu64 ", resourceID = %" PRIu64 ")", this, downloadID.toUInt64(), m_parameters.webPageID.toUInt64(), m_parameters.webFrameID.toUInt64(), m_parameters.identifier); 360 360 361 361 // This can happen if the resource came from the disk cache. -
trunk/Source/WebKit/NetworkProcess/WebSocketTask.h
r248762 r252260 32 32 #else 33 33 34 namespace IPC { 35 class DataReference; 36 } 37 34 38 namespace WebKit { 35 39 -
trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm
r252185 r252260 688 688 return; 689 689 auto downloadID = _sessionWrapper->downloadMap.take(task.taskIdentifier); 690 if (!downloadID .downloadID())690 if (!downloadID) 691 691 return; 692 692 if (!_session) … … 851 851 return; 852 852 auto downloadID = _sessionWrapper->downloadMap.take([downloadTask taskIdentifier]); 853 if (!downloadID .downloadID())853 if (!downloadID) 854 854 return; 855 855 if (!_session) … … 868 868 return; 869 869 auto downloadID = _sessionWrapper->downloadMap.get([downloadTask taskIdentifier]); 870 if (!downloadID .downloadID())870 if (!downloadID) 871 871 return; 872 872 if (!_session) … … 1306 1306 #endif 1307 1307 auto downloadID = sessionWrapper.downloadMap.get(taskIdentifier); 1308 if (downloadID .downloadID()) {1308 if (downloadID) { 1309 1309 if (auto* download = networkProcess().downloadManager().download(downloadID)) { 1310 1310 WebCore::AuthenticationChallenge authenticationChallenge { challenge }; -
trunk/Source/WebKit/Scripts/webkit/messages.py
r251445 r252260 218 218 'WebCore::SWServerConnectionIdentifier', 219 219 'WebKit::ActivityStateChangeID', 220 'WebKit::DownloadID', 220 221 'WebKit::LayerHostingContextID', 221 222 'WebKit::TransactionID', -
trunk/Source/WebKit/Shared/Authentication/AuthenticationManager.h
r251002 r252260 26 26 #pragma once 27 27 28 #include "DownloadID.h" 28 29 #include "MessageReceiver.h" 29 30 #include "NetworkProcessSupplement.h" … … 54 55 namespace WebKit { 55 56 56 class Download;57 class DownloadID;58 57 class NetworkProcess; 59 58 class WebFrame; -
trunk/Source/WebKit/UIProcess/API/C/WKDownload.cpp
r222468 r252260 41 41 } 42 42 43 uint64_t WKDownloadGetID(WKDownloadRef download)43 uint64_t WKDownloadGetID(WKDownloadRef) 44 44 { 45 return toImpl(download)->downloadID().downloadID();45 return 0; 46 46 } 47 47 -
trunk/Source/WebKit/UIProcess/API/C/WKDownload.h
r222468 r252260 28 28 29 29 #include <WebKit/WKBase.h> 30 #include <WebKit/WKDeprecated.h> 30 31 31 32 #ifndef __cplusplus … … 39 40 WK_EXPORT WKTypeID WKDownloadGetTypeID(); 40 41 41 WK_EXPORT uint64_t WKDownloadGetID(WKDownloadRef download) ;42 WK_EXPORT uint64_t WKDownloadGetID(WKDownloadRef download) WK_C_API_DEPRECATED; 42 43 WK_EXPORT WKURLRequestRef WKDownloadCopyRequest(WKDownloadRef download); 43 44 WK_EXPORT WKDataRef WKDownloadGetResumeData(WKDownloadRef download); -
trunk/Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp
r250292 r252260 45 45 namespace WebKit { 46 46 using namespace WebCore; 47 48 static uint64_t generateDownloadID()49 {50 static uint64_t uniqueDownloadID = 0;51 return ++uniqueDownloadID;52 }53 47 54 48 Ref<DownloadProxy> DownloadProxy::create(DownloadProxyMap& downloadProxyMap, WebsiteDataStore& dataStore, WebProcessPool& processPool, const ResourceRequest& resourceRequest) … … 61 55 , m_dataStore(&dataStore) 62 56 , m_processPool(&processPool) 63 , m_downloadID( generateDownloadID())57 , m_downloadID(DownloadID::generate()) 64 58 , m_request(resourceRequest) 65 59 { -
trunk/Source/WebKit/UIProcess/Downloads/DownloadProxy.h
r251445 r252260 49 49 namespace WebKit { 50 50 51 class DownloadID;52 51 class DownloadProxyMap; 53 52 class WebPageProxy; -
trunk/Source/WebKit/UIProcess/Downloads/DownloadProxyMap.cpp
r250292 r252260 86 86 m_downloads.set(downloadProxy->downloadID(), downloadProxy.copyRef()); 87 87 88 RELEASE_LOG(Loading, "Adding download %" PRIu64 " to UIProcess DownloadProxyMap", downloadProxy->downloadID(). downloadID());88 RELEASE_LOG(Loading, "Adding download %" PRIu64 " to UIProcess DownloadProxyMap", downloadProxy->downloadID().toUInt64()); 89 89 90 90 if (m_downloads.size() == 1 && m_shouldTakeAssertion) { … … 99 99 } 100 100 101 m_process->addMessageReceiver(Messages::DownloadProxy::messageReceiverName(), downloadProxy->downloadID(). downloadID(), downloadProxy.get());101 m_process->addMessageReceiver(Messages::DownloadProxy::messageReceiverName(), downloadProxy->downloadID().toUInt64(), downloadProxy.get()); 102 102 103 103 return downloadProxy; … … 108 108 auto downloadID = downloadProxy.downloadID(); 109 109 110 RELEASE_LOG(Loading, "Removing download %" PRIu64 " from UIProcess DownloadProxyMap", downloadID. downloadID());110 RELEASE_LOG(Loading, "Removing download %" PRIu64 " from UIProcess DownloadProxyMap", downloadID.toUInt64()); 111 111 112 112 // The DownloadProxy may be holding the last reference to the process pool. … … 115 115 ASSERT(m_downloads.contains(downloadID)); 116 116 117 m_process->removeMessageReceiver(Messages::DownloadProxy::messageReceiverName(), downloadID. downloadID());117 m_process->removeMessageReceiver(Messages::DownloadProxy::messageReceiverName(), downloadID.toUInt64()); 118 118 downloadProxy.invalidate(); 119 119 m_downloads.remove(downloadID); … … 134 134 download->processDidClose(); 135 135 download->invalidate(); 136 m_process->removeMessageReceiver(Messages::DownloadProxy::messageReceiverName(), download->downloadID(). downloadID());136 m_process->removeMessageReceiver(Messages::DownloadProxy::messageReceiverName(), download->downloadID().toUInt64()); 137 137 } 138 138 -
trunk/Source/WebKit/WebProcess/WebPage/WebFrame.cpp
r251425 r252260 280 280 void WebFrame::startDownload(const WebCore::ResourceRequest& request, const String& suggestedName) 281 281 { 282 ASSERT(m_policyDownloadID .downloadID());282 ASSERT(m_policyDownloadID); 283 283 284 284 auto policyDownloadID = m_policyDownloadID; … … 290 290 void WebFrame::convertMainResourceLoadToDownload(DocumentLoader* documentLoader, const ResourceRequest& request, const ResourceResponse& response) 291 291 { 292 ASSERT(m_policyDownloadID .downloadID());292 ASSERT(m_policyDownloadID); 293 293 294 294 auto policyDownloadID = m_policyDownloadID; -
trunk/Source/WebKit/WebProcess/WebPage/WebFrame.h
r251295 r252260 182 182 ForNavigationAction m_policyFunctionForNavigationAction { ForNavigationAction::No }; 183 183 HashMap<uint64_t, CompletionHandler<void()>> m_willSubmitFormCompletionHandlers; 184 DownloadID m_policyDownloadID { 0 };184 DownloadID m_policyDownloadID; 185 185 186 186 std::unique_ptr<WebFrameLoaderClient> m_frameLoaderClient; -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.h
r251765 r252260 34 34 #include "APIObject.h" 35 35 #include "CallbackID.h" 36 #include "DownloadID.h" 36 37 #include "DrawingAreaInfo.h" 37 38 #include "EditingRange.h" … … 210 211 class DataReference; 211 212 class DrawingArea; 212 class DownloadID;213 213 class FindController; 214 214 class GamepadData;
Note: See TracChangeset
for help on using the changeset viewer.