⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 271263 in webkit


Ignore:
Timestamp:
Jan 7, 2021, 3:09:45 PM (6 years ago)
Author:
commit-queue@webkit.org
Message:

Assertion failure in WebPageProxy::stopURLSchemeTask,
https://bugs.webkit.org/show_bug.cgi?id=220401

Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-07
Reviewed by Ryosuke Niwa.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::startURLSchemeTaskShared):
(WebKit::WebPageProxy::stopURLSchemeTask):
(WebKit::WebPageProxy::loadSynchronousURLSchemeTask):

  • UIProcess/WebURLSchemeHandler.cpp:

(WebKit::WebURLSchemeHandler::processForTaskIdentifier const):
(WebKit::WebURLSchemeHandler::stopTask):
(WebKit::WebURLSchemeHandler::removeTaskFromPageMap):

Location:
trunk/Source/WebKit
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r271253 r271263  
     12021-01-07  Alex Christensen  <achristensen@webkit.org>
     2
     3        Assertion failure in WebPageProxy::stopURLSchemeTask,
     4        https://bugs.webkit.org/show_bug.cgi?id=220401
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        * UIProcess/WebPageProxy.cpp:
     9        (WebKit::WebPageProxy::startURLSchemeTaskShared):
     10        (WebKit::WebPageProxy::stopURLSchemeTask):
     11        (WebKit::WebPageProxy::loadSynchronousURLSchemeTask):
     12        * UIProcess/WebURLSchemeHandler.cpp:
     13        (WebKit::WebURLSchemeHandler::processForTaskIdentifier const):
     14        (WebKit::WebURLSchemeHandler::stopTask):
     15        (WebKit::WebURLSchemeHandler::removeTaskFromPageMap):
     16
    1172021-01-07  Andy Estes  <aestes@apple.com>
    218
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r271205 r271263  
    95459545void WebPageProxy::startURLSchemeTaskShared(Ref<WebProcessProxy>&& process, PageIdentifier webPageID, URLSchemeTaskParameters&& parameters)
    95469546{
     9547    MESSAGE_CHECK(m_process, decltype(m_urlSchemeHandlersByIdentifier)::isValidKey(parameters.handlerIdentifier));
    95479548    auto iterator = m_urlSchemeHandlersByIdentifier.find(parameters.handlerIdentifier);
    95489549    MESSAGE_CHECK(process, iterator != m_urlSchemeHandlersByIdentifier.end());
     
    95539554void WebPageProxy::stopURLSchemeTask(uint64_t handlerIdentifier, uint64_t taskIdentifier)
    95549555{
     9556    MESSAGE_CHECK(m_process, decltype(m_urlSchemeHandlersByIdentifier)::isValidKey(handlerIdentifier));
    95559557    auto iterator = m_urlSchemeHandlersByIdentifier.find(handlerIdentifier);
    95569558    MESSAGE_CHECK(m_process, iterator != m_urlSchemeHandlersByIdentifier.end());
     
    95619563void WebPageProxy::loadSynchronousURLSchemeTask(URLSchemeTaskParameters&& parameters, Messages::WebPageProxy::LoadSynchronousURLSchemeTask::DelayedReply&& reply)
    95629564{
     9565    MESSAGE_CHECK(m_process, decltype(m_urlSchemeHandlersByIdentifier)::isValidKey(parameters.handlerIdentifier));
    95639566    auto iterator = m_urlSchemeHandlersByIdentifier.find(parameters.handlerIdentifier);
    95649567    MESSAGE_CHECK(m_process, iterator != m_urlSchemeHandlersByIdentifier.end());
  • trunk/Source/WebKit/UIProcess/WebURLSchemeHandler.cpp

    r266157 r271263  
    6565WebProcessProxy* WebURLSchemeHandler::processForTaskIdentifier(uint64_t taskIdentifier) const
    6666{
     67    if (!decltype(m_tasks)::isValidKey(taskIdentifier))
     68        return nullptr;
    6769    auto iterator = m_tasks.find(taskIdentifier);
    6870    if (iterator == m_tasks.end())
     
    9294void WebURLSchemeHandler::stopTask(WebPageProxy& page, uint64_t taskIdentifier)
    9395{
     96    if (!decltype(m_tasks)::isValidKey(taskIdentifier))
     97        return;
    9498    auto iterator = m_tasks.find(taskIdentifier);
    9599    if (iterator == m_tasks.end())
     
    117121    ASSERT(iterator != m_tasksByPageIdentifier.end());
    118122    ASSERT(iterator->value.contains(taskID));
     123    if (!decltype(iterator->value)::isValidValue(taskID))
     124        return;
    119125    iterator->value.remove(taskID);
    120126    if (iterator->value.isEmpty())
Note: See TracChangeset for help on using the changeset viewer.