Changeset 268017 in webkit


Ignore:
Timestamp:
Oct 5, 2020 4:53:33 PM (4 years ago)
Author:
achristensen@apple.com
Message:

Make DownloadID an ObjectIdentifier
https://bugs.webkit.org/show_bug.cgi?id=203962

Reviewed by Youenn Fablet and Geoffrey Garen.

Also deprecate the unused WKDownloadGetID because this identifier is internal.

  • NetworkProcess/Downloads/Download.cpp:

(WebKit::Download::Download):
(WebKit::Download::didReceiveData):
(WebKit::Download::didFinish):
(WebKit::Download::didFail):
(WebKit::Download::didCancel):
(WebKit::Download::messageSenderDestinationID const):

  • NetworkProcess/Downloads/DownloadID.h:

(WebKit::DownloadID::DownloadID): Deleted.
(WebKit::DownloadID::operator== const): Deleted.
(WebKit::DownloadID::operator!= const): Deleted.
(WebKit::DownloadID::downloadID const): Deleted.
(IPC::ArgumentCoder<WebKit::DownloadID>::encode): Deleted.
(IPC::ArgumentCoder<WebKit::DownloadID>::decode): Deleted.
(WTF::DownloadIDHash::hash): Deleted.
(WTF::DownloadIDHash::equal): Deleted.
(WTF::HashTraits<WebKit::DownloadID>::emptyValue): Deleted.
(WTF::HashTraits<WebKit::DownloadID>::constructDeletedValue): Deleted.
(WTF::HashTraits<WebKit::DownloadID>::isDeletedValue): Deleted.

  • NetworkProcess/Downloads/DownloadMonitor.cpp:

(WebKit::DownloadMonitor::applicationWillEnterForeground):
(WebKit::DownloadMonitor::applicationDidEnterBackground):
(WebKit::DownloadMonitor::timerFired):

  • NetworkProcess/Downloads/PendingDownload.cpp:

(WebKit::PendingDownload::messageSenderDestinationID const):

  • NetworkProcess/Downloads/PendingDownload.h:
  • NetworkProcess/NetworkDataTask.h:

(WebKit::NetworkDataTask::setPendingDownloadID):
(WebKit::NetworkDataTask::isDownload const):

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::pendingDownloadCanceled):
(WebKit::NetworkProcess::findPendingDownloadLocation):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::convertToDownload):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]):
(-[WKNetworkSessionDelegate URLSession:downloadTask:didFinishDownloadingToURL:]):
(-[WKNetworkSessionDelegate URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]):
(WebKit::NetworkSessionCocoa::continueDidReceiveChallenge):

  • Scripts/webkit/messages.py:
  • Shared/Authentication/AuthenticationManager.h:
  • UIProcess/API/C/WKDownload.cpp:

(WKDownloadGetID):

  • UIProcess/API/C/WKDownload.h:
  • UIProcess/Downloads/DownloadProxy.cpp:

(WebKit::DownloadProxy::DownloadProxy):
(WebKit::generateDownloadID): Deleted.

  • UIProcess/Downloads/DownloadProxy.h:
  • UIProcess/Downloads/DownloadProxyMap.cpp:

(WebKit::DownloadProxyMap::createDownloadProxy):
(WebKit::DownloadProxyMap::downloadFinished):
(WebKit::DownloadProxyMap::invalidate):

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::startDownload):
(WebKit::WebFrame::convertMainResourceLoadToDownload):

  • WebProcess/WebPage/WebFrame.h:
  • WebProcess/WebPage/WebPage.h:
Location:
trunk/Source/WebKit
Files:
24 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r268015 r268017  
     12020-10-05  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 and Geoffrey Garen.
     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
    1692020-10-05  Alex Christensen  <achristensen@webkit.org>
    270
  • trunk/Source/WebKit/NetworkProcess/Downloads/Download.cpp

    r261898 r268017  
    6060    , m_testSpeedMultiplier(session.testSpeedMultiplier())
    6161{
    62     ASSERT(m_downloadID.downloadID());
     62    ASSERT(m_downloadID);
    6363
    6464    m_downloadManager.didCreateDownload();
     
    7575    , m_testSpeedMultiplier(session.testSpeedMultiplier())
    7676{
    77     ASSERT(m_downloadID.downloadID());
     77    ASSERT(m_downloadID);
    7878
    7979    m_downloadManager.didCreateDownload();
     
    121121{
    122122    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());
    124124        m_hasReceivedData = true;
    125125    }
     
    132132void Download::didFinish()
    133133{
    134     RELEASE_LOG_IF_ALLOWED("didFinish: (id = %" PRIu64 ")", downloadID().downloadID());
     134    RELEASE_LOG_IF_ALLOWED("didFinish: (id = %" PRIu64 ")", downloadID().toUInt64());
    135135
    136136    send(Messages::DownloadProxy::DidFinish());
     
    147147{
    148148    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());
    150150
    151151    send(Messages::DownloadProxy::DidFail(error, resumeData));
     
    160160void Download::didCancel(const IPC::DataReference& resumeData)
    161161{
    162     RELEASE_LOG_IF_ALLOWED("didCancel: (id = %" PRIu64 ")", downloadID().downloadID());
     162    RELEASE_LOG_IF_ALLOWED("didCancel: (id = %" PRIu64 ")", downloadID().toUInt64());
    163163
    164164    send(Messages::DownloadProxy::DidCancel(resumeData));
     
    178178uint64_t Download::messageSenderDestinationID() const
    179179{
    180     return m_downloadID.downloadID();
     180    return m_downloadID.toUInt64();
    181181}
    182182
  • trunk/Source/WebKit/NetworkProcess/Downloads/DownloadID.h

    r268008 r268017  
    2626#pragma once
    2727
    28 #include "ArgumentCoder.h"
    29 #include "Decoder.h"
    30 #include "Encoder.h"
    31 #include <wtf/HashTraits.h>
     28#include <wtf/ObjectIdentifier.h>
    3229
    3330namespace WebKit {
     
    3532enum class AllowOverwrite : bool { No, Yes };
    3633
    37 // FIXME: This should be an ObjectIdentifier.
    38 class DownloadID {
    39 public:
    40     DownloadID()
    41     {
    42     }
    43 
    44     explicit DownloadID(uint64_t downloadID)
    45         : m_downloadID(downloadID)
    46     {
    47     }
    48 
    49     bool operator==(DownloadID other) const { return m_downloadID == other.m_downloadID; }
    50     bool operator!=(DownloadID other) const { return m_downloadID != other.m_downloadID; }
    51 
    52     explicit operator bool() const { return downloadID(); }
    53 
    54     uint64_t downloadID() const { return m_downloadID; }
    55 private:
    56     uint64_t m_downloadID { 0 };
    57 };
     34enum DownloadIdentifierType { };
     35using DownloadID = ObjectIdentifier<DownloadIdentifierType>;
    5836
    5937}
    60 
    61 namespace IPC {
    62    
    63 template<> struct ArgumentCoder<WebKit::DownloadID> {
    64     static void encode(Encoder& encoder, const WebKit::DownloadID& downloadID)
    65     {
    66         encoder << downloadID.downloadID();
    67     }
    68     static WARN_UNUSED_RETURN bool decode(Decoder& decoder, WebKit::DownloadID& downloadID)
    69     {
    70         uint64_t id;
    71         if (!decoder.decode(id))
    72             return false;
    73 
    74         downloadID = WebKit::DownloadID(id);
    75        
    76         return true;
    77     }
    78 };
    79 
    80 }
    81 
    82 namespace WTF {
    83    
    84 struct DownloadIDHash {
    85     static unsigned hash(const WebKit::DownloadID& d) { return intHash(d.downloadID()); }
    86     static bool equal(const WebKit::DownloadID& a, const WebKit::DownloadID& b) { return a.downloadID() == b.downloadID(); }
    87     static const bool safeToCompareToEmptyOrDeleted = true;
    88 };
    89 template<> struct HashTraits<WebKit::DownloadID> : GenericHashTraits<WebKit::DownloadID> {
    90     static WebKit::DownloadID emptyValue() { return { }; }
    91    
    92     static void constructDeletedValue(WebKit::DownloadID& slot) { slot = WebKit::DownloadID(std::numeric_limits<uint64_t>::max()); }
    93     static bool isDeletedValue(const WebKit::DownloadID& slot) { return slot.downloadID() == std::numeric_limits<uint64_t>::max(); }
    94 };
    95 template<> struct DefaultHash<WebKit::DownloadID> : DownloadIDHash { };
    96 
    97 }
  • trunk/Source/WebKit/NetworkProcess/Downloads/DownloadMap.cpp

    r259540 r268017  
    5757DownloadMap::DownloadMapType::AddResult DownloadMap::add(DownloadID downloadID, std::unique_ptr<Download>&& download)
    5858{
    59     RELEASE_LOG(Loading, "Adding download %" PRIu64 " to NetworkProcess DownloadMap", downloadID.downloadID());
     59    RELEASE_LOG(Loading, "Adding download %" PRIu64 " to NetworkProcess DownloadMap", downloadID.toUInt64());
    6060
    6161    auto result = m_downloads.add(downloadID, WTFMove(download));
     
    7171bool DownloadMap::remove(DownloadID downloadID)
    7272{
    73     RELEASE_LOG(Loading, "Removing download %" PRIu64 " from NetworkProcess DownloadMap", downloadID.downloadID());
     73    RELEASE_LOG(Loading, "Removing download %" PRIu64 " from NetworkProcess DownloadMap", downloadID.toUInt64());
    7474
    7575    auto result = m_downloads.remove(downloadID);
  • trunk/Source/WebKit/NetworkProcess/Downloads/DownloadMonitor.cpp

    r252274 r268017  
    9494void DownloadMonitor::applicationWillEnterForeground()
    9595{
    96     RELEASE_LOG_IF_ALLOWED("applicationWillEnterForeground (id = %" PRIu64 ")", m_download.downloadID().downloadID());
     96    RELEASE_LOG_IF_ALLOWED("applicationWillEnterForeground (id = %" PRIu64 ")", m_download.downloadID().toUInt64());
    9797    m_timer.stop();
    9898    m_interval = 0;
     
    101101void DownloadMonitor::applicationDidEnterBackground()
    102102{
    103     RELEASE_LOG_IF_ALLOWED("applicationDidEnterBackground (id = %" PRIu64 ")", m_download.downloadID().downloadID());
     103    RELEASE_LOG_IF_ALLOWED("applicationDidEnterBackground (id = %" PRIu64 ")", m_download.downloadID().toUInt64());
    104104    ASSERT(!m_timer.isActive());
    105105    ASSERT(!m_interval);
     
    118118    RELEASE_ASSERT(m_interval < WTF_ARRAY_LENGTH(throughputIntervals));
    119119    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());
    121121        m_download.cancel();
    122122    } 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());
    124124        m_timer.startOneShot(timeUntilNextInterval(m_interval++) / testSpeedMultiplier());
    125125    } 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());
    127127}
    128128
  • trunk/Source/WebKit/NetworkProcess/Downloads/PendingDownload.cpp

    r264021 r268017  
    112112uint64_t PendingDownload::messageSenderDestinationID() const
    113113{
    114     return m_networkLoad->pendingDownloadID().downloadID();
     114    return m_networkLoad->pendingDownloadID().toUInt64();
    115115}
    116116   
  • trunk/Source/WebKit/NetworkProcess/Downloads/PendingDownload.h

    r252274 r268017  
    2626#pragma once
    2727
     28#include "DownloadID.h"
    2829#include "MessageSender.h"
    2930#include "NetworkLoadClient.h"
     
    4243
    4344class Download;
    44 class DownloadID;
    4545class NetworkLoad;
    4646class NetworkLoadParameters;
  • trunk/Source/WebKit/NetworkProcess/NetworkDataTask.h

    r264021 r268017  
    111111    void setPendingDownloadID(DownloadID downloadID)
    112112    {
    113         ASSERT(!m_pendingDownloadID.downloadID());
    114         ASSERT(downloadID.downloadID());
     113        ASSERT(!m_pendingDownloadID);
     114        ASSERT(downloadID);
    115115        m_pendingDownloadID = downloadID;
    116116    }
     
    123123    virtual void setPendingDownloadLocation(const String& filename, SandboxExtension::Handle&&, bool /*allowOverwrite*/) { m_pendingDownloadLocation = filename; }
    124124    const String& pendingDownloadLocation() const { return m_pendingDownloadLocation; }
    125     bool isDownload() const { return !!m_pendingDownloadID.downloadID(); }
     125    bool isDownload() const { return !!m_pendingDownloadID; }
    126126
    127127    const WebCore::ResourceRequest& firstRequest() const { return m_firstRequest; }
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp

    r268015 r268017  
    20912091void NetworkProcess::pendingDownloadCanceled(DownloadID downloadID)
    20922092{
    2093     downloadProxyConnection()->send(Messages::DownloadProxy::DidCancel({ }), downloadID.downloadID());
     2093    downloadProxyConnection()->send(Messages::DownloadProxy::DidCancel({ }), downloadID.toUInt64());
    20942094}
    20952095
    20962096void NetworkProcess::findPendingDownloadLocation(NetworkDataTask& networkDataTask, ResponseCompletionHandler&& completionHandler, const ResourceResponse& response)
    20972097{
    2098     uint64_t destinationID = networkDataTask.pendingDownloadID().downloadID();
     2098    uint64_t destinationID = networkDataTask.pendingDownloadID().toUInt64();
    20992099    downloadProxyConnection()->send(Messages::DownloadProxy::DidReceiveResponse(response), destinationID);
    21002100
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.h

    r268008 r268017  
    2929#include "CacheModel.h"
    3030#include "CallbackID.h"
     31#include "DownloadID.h"
    3132#include "DownloadManager.h"
    3233#include "LocalStorageDatabaseTracker.h"
     
    7879class CertificateInfo;
    7980class CurlProxySettings;
    80 class DownloadID;
    8181class ProtectionSpace;
    8282class StorageQuotaManager;
  • trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp

    r266003 r268017  
    464464void NetworkResourceLoader::convertToDownload(DownloadID downloadID, const ResourceRequest& request, const ResourceResponse& response)
    465465{
    466     RELEASE_LOG_IF_ALLOWED("convertToDownload: (downloadID=%" PRIu64 ", hasNetworkLoad=%d, hasResponseCompletionHandler=%d)", downloadID.downloadID(), !!m_networkLoad, !!m_responseCompletionHandler);
     466    RELEASE_LOG_IF_ALLOWED("convertToDownload: (downloadID=%" PRIu64 ", hasNetworkLoad=%d, hasResponseCompletionHandler=%d)", downloadID.toUInt64(), !!m_networkLoad, !!m_responseCompletionHandler);
    467467
    468468    // This can happen if the resource came from the disk cache.
  • trunk/Source/WebKit/NetworkProcess/WebSocketTask.h

    r263797 r268017  
    3232#else
    3333
     34namespace IPC {
     35class DataReference;
     36}
     37
    3438namespace WebKit {
    3539
  • trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm

    r266829 r268017  
    749749            return;
    750750        auto downloadID = _sessionWrapper->downloadMap.take(task.taskIdentifier);
    751         if (!downloadID.downloadID())
     751        if (!downloadID)
    752752            return;
    753753        if (!_session)
     
    946946        return;
    947947    auto downloadID = _sessionWrapper->downloadMap.take([downloadTask taskIdentifier]);
    948     if (!downloadID.downloadID())
     948    if (!downloadID)
    949949        return;
    950950    if (!_session)
     
    963963        return;
    964964    auto downloadID = _sessionWrapper->downloadMap.get([downloadTask taskIdentifier]);
    965     if (!downloadID.downloadID())
     965    if (!downloadID)
    966966        return;
    967967    if (!_session)
     
    15391539#endif
    15401540        auto downloadID = sessionWrapper.downloadMap.get(taskIdentifier);
    1541         if (downloadID.downloadID()) {
     1541        if (downloadID) {
    15421542            if (auto* download = networkProcess().downloadManager().download(downloadID)) {
    15431543                WebCore::AuthenticationChallenge authenticationChallenge { challenge };
  • trunk/Source/WebKit/Scripts/webkit/messages.py

    r268008 r268017  
    236236        'WebKit::ContentWorldIdentifier',
    237237        'WebKit::DisplayLinkObserverID',
     238        'WebKit::DownloadID',
    238239        'WebKit::GeolocationIdentifier',
    239240        'WebKit::ImageBufferBackendHandle',
  • trunk/Source/WebKit/Shared/PolicyDecision.h

    r261506 r268017  
    3939    WebCore::PolicyAction policyAction { WebCore::PolicyAction::Ignore };
    4040    uint64_t navigationID { 0 };
    41     DownloadID downloadID { 0 };
     41    Optional<DownloadID> downloadID { WTF::nullopt };
    4242    Optional<WebsitePoliciesData> websitePoliciesData { WTF::nullopt };
    4343    Optional<SandboxExtension::Handle> sandboxExtensionHandle { WTF::nullopt };
     
    7878            return WTF::nullopt;
    7979
    80         Optional<DownloadID> decodedDownloadID;
     80        Optional<Optional<DownloadID>> decodedDownloadID;
    8181        decoder >> decodedDownloadID;
    8282        if (!decodedDownloadID)
  • trunk/Source/WebKit/UIProcess/API/C/WKDownload.cpp

    r252274 r268017  
    4141}
    4242
    43 uint64_t WKDownloadGetID(WKDownloadRef download)
     43uint64_t WKDownloadGetID(WKDownloadRef)
    4444{
    45     return toImpl(download)->downloadID().downloadID();
     45    return 0;
    4646}
    4747
  • trunk/Source/WebKit/UIProcess/API/C/WKDownload.h

    r252274 r268017  
    2828
    2929#include <WebKit/WKBase.h>
     30#include <WebKit/WKDeprecated.h>
    3031
    3132#ifndef __cplusplus
     
    3940WK_EXPORT WKTypeID WKDownloadGetTypeID();
    4041
    41 WK_EXPORT uint64_t WKDownloadGetID(WKDownloadRef download);
     42WK_EXPORT uint64_t WKDownloadGetID(WKDownloadRef download) WK_C_API_DEPRECATED;
    4243WK_EXPORT WKURLRequestRef WKDownloadCopyRequest(WKDownloadRef download);
    4344WK_EXPORT WKDataRef WKDownloadGetResumeData(WKDownloadRef download);
  • trunk/Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp

    r268008 r268017  
    4949using namespace WebCore;
    5050
    51 static uint64_t generateDownloadID()
    52 {
    53     static uint64_t uniqueDownloadID = 0;
    54     return ++uniqueDownloadID;
    55 }
    56 
    5751DownloadProxy::DownloadProxy(DownloadProxyMap& downloadProxyMap, WebsiteDataStore& dataStore, WebProcessPool& processPool, const ResourceRequest& resourceRequest, const FrameInfoData& frameInfoData, WebPageProxy* originatingPage)
    5852    : m_downloadProxyMap(downloadProxyMap)
    5953    , m_dataStore(&dataStore)
    6054    , m_processPool(&processPool)
    61     , m_downloadID(generateDownloadID())
     55    , m_downloadID(DownloadID::generate())
    6256    , m_request(resourceRequest)
    6357    , m_originatingPage(makeWeakPtr(originatingPage))
  • trunk/Source/WebKit/UIProcess/Downloads/DownloadProxyMap.cpp

    r267763 r268017  
    8484    m_downloads.set(downloadProxy->downloadID(), downloadProxy.copyRef());
    8585
    86     RELEASE_LOG(Loading, "Adding download %" PRIu64 " to UIProcess DownloadProxyMap", downloadProxy->downloadID().downloadID());
     86    RELEASE_LOG(Loading, "Adding download %" PRIu64 " to UIProcess DownloadProxyMap", downloadProxy->downloadID().toUInt64());
    8787
    8888    if (m_downloads.size() == 1 && m_shouldTakeAssertion) {
     
    9696    }
    9797
    98     m_process.addMessageReceiver(Messages::DownloadProxy::messageReceiverName(), downloadProxy->downloadID().downloadID(), downloadProxy.get());
     98    m_process.addMessageReceiver(Messages::DownloadProxy::messageReceiverName(), downloadProxy->downloadID().toUInt64(), downloadProxy.get());
    9999
    100100    return downloadProxy;
     
    105105    auto downloadID = downloadProxy.downloadID();
    106106
    107     RELEASE_LOG(Loading, "Removing download %" PRIu64 " from UIProcess DownloadProxyMap", downloadID.downloadID());
     107    RELEASE_LOG(Loading, "Removing download %" PRIu64 " from UIProcess DownloadProxyMap", downloadID.toUInt64());
    108108
    109109    ASSERT(m_downloads.contains(downloadID));
    110110
    111     m_process.removeMessageReceiver(Messages::DownloadProxy::messageReceiverName(), downloadID.downloadID());
     111    m_process.removeMessageReceiver(Messages::DownloadProxy::messageReceiverName(), downloadID.toUInt64());
    112112    downloadProxy.invalidate();
    113113    m_downloads.remove(downloadID);
     
    128128        download->processDidClose();
    129129        download->invalidate();
    130         m_process.removeMessageReceiver(Messages::DownloadProxy::messageReceiverName(), download->downloadID().downloadID());
     130        m_process.removeMessageReceiver(Messages::DownloadProxy::messageReceiverName(), download->downloadID().toUInt64());
    131131    }
    132132
  • trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.cpp

    r261829 r268017  
    358358{
    359359    if (!isMainFrame || (m_mainFrame && m_mainFrame->frameID() != frameID) || navigationID != m_navigationID) {
    360         reply(PolicyDecision { identifier, WTF::nullopt, WebCore::PolicyAction::Ignore, navigationID, DownloadID(), WTF::nullopt });
     360        reply(PolicyDecision { identifier, WTF::nullopt, WebCore::PolicyAction::Ignore, navigationID, WTF::nullopt, WTF::nullopt });
    361361        return;
    362362    }
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r267966 r268017  
    33173317{
    33183318    if (!hasRunningProcess()) {
    3319         sender->send(PolicyDecision { sender->identifier(), isNavigatingToAppBoundDomain(), PolicyAction::Ignore, 0, DownloadID(), WTF::nullopt });
     3319        sender->send(PolicyDecision { sender->identifier(), isNavigatingToAppBoundDomain(), PolicyAction::Ignore, 0, WTF::nullopt, WTF::nullopt });
    33203320        return;
    33213321    }
     
    33263326        m_pageLoadState.clearPendingAPIRequest(transaction);
    33273327
    3328     DownloadID downloadID = { };
     3328    Optional<DownloadID> downloadID;
    33293329    if (action == PolicyAction::Download) {
    33303330        // Create a download proxy.
     
    51265126    if (!checkURLReceivedFromCurrentOrPreviousWebProcess(process, request.url())) {
    51275127        RELEASE_LOG_ERROR_IF_ALLOWED(Process, "Ignoring request to load this main resource because it is outside the sandbox");
    5128         sender->send(PolicyDecision { sender->identifier(), isNavigatingToAppBoundDomain(), PolicyAction::Ignore, 0, DownloadID(), WTF::nullopt });
     5128        sender->send(PolicyDecision { sender->identifier(), isNavigatingToAppBoundDomain(), PolicyAction::Ignore, 0, WTF::nullopt, WTF::nullopt });
    51295129        return;
    51305130    }
     
    53845384
    53855385    // If the client did not respond synchronously, proceed with the load.
    5386     sender->send(PolicyDecision { sender->identifier(), isNavigatingToAppBoundDomain(), PolicyAction::Use, navigationID, DownloadID(), WTF::nullopt });
     5386    sender->send(PolicyDecision { sender->identifier(), isNavigatingToAppBoundDomain(), PolicyAction::Use, navigationID, WTF::nullopt, WTF::nullopt });
    53875387}
    53885388
  • trunk/Source/WebKit/WebProcess/WebPage/WebFrame.cpp

    r266829 r268017  
    283283void WebFrame::startDownload(const WebCore::ResourceRequest& request, const String& suggestedName)
    284284{
    285     ASSERT(m_policyDownloadID.downloadID());
    286 
    287     auto policyDownloadID = m_policyDownloadID;
    288     m_policyDownloadID = { };
     285    if (!m_policyDownloadID) {
     286        ASSERT_NOT_REACHED();
     287        return;
     288    }
     289    auto policyDownloadID = *std::exchange(m_policyDownloadID, WTF::nullopt);
    289290
    290291    Optional<NavigatingToAppBoundDomain> isAppBound = NavigatingToAppBoundDomain::No;
     
    295296void WebFrame::convertMainResourceLoadToDownload(DocumentLoader* documentLoader, const ResourceRequest& request, const ResourceResponse& response)
    296297{
    297     ASSERT(m_policyDownloadID.downloadID());
    298 
    299     auto policyDownloadID = m_policyDownloadID;
    300     m_policyDownloadID = { };
     298    if (!m_policyDownloadID) {
     299        ASSERT_NOT_REACHED();
     300        return;
     301    }
     302    auto policyDownloadID = *std::exchange(m_policyDownloadID, WTF::nullopt);
    301303
    302304    SubresourceLoader* mainResourceLoader = documentLoader->mainResourceLoader();
  • trunk/Source/WebKit/WebProcess/WebPage/WebFrame.h

    r266829 r268017  
    191191    ForNavigationAction m_policyFunctionForNavigationAction { ForNavigationAction::No };
    192192    HashMap<uint64_t, CompletionHandler<void()>> m_willSubmitFormCompletionHandlers;
    193     DownloadID m_policyDownloadID { 0 };
     193    Optional<DownloadID> m_policyDownloadID;
    194194
    195195    LoadListener* m_loadListener { nullptr };
  • trunk/Source/WebKit/WebProcess/WebPage/WebPage.h

    r267973 r268017  
    3535#include "CallbackID.h"
    3636#include "ContentAsStringIncludesChildFrames.h"
     37#include "DownloadID.h"
    3738#include "DrawingAreaInfo.h"
    3839#include "EditingRange.h"
     
    233234
    234235class DrawingArea;
    235 class DownloadID;
    236236class FindController;
    237237class GamepadData;
Note: See TracChangeset for help on using the changeset viewer.