Changeset 160197 in webkit


Ignore:
Timestamp:
Dec 5, 2013 3:33:10 PM (10 years ago)
Author:
Chris Fleizach
Message:

AX: Seed: safari extension installation crashes safari under voice over and freezes voice over
https://bugs.webkit.org/show_bug.cgi?id=125308

Reviewed by Anders Carlsson.

Much like Javascript alerts, we need to allow accessibility clients to continue to interact with the WebProcess thread
when using dispatchDecidePolicyResponses.

  • Platform/CoreIPC/MessageSender.h:

(CoreIPC::MessageSender::sendSync):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):

Location:
trunk/Source/WebKit2
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r160193 r160197  
     12013-12-05  Chris Fleizach  <cfleizach@apple.com>
     2
     3        AX: Seed: safari extension installation crashes safari under voice over and freezes voice over
     4        https://bugs.webkit.org/show_bug.cgi?id=125308
     5
     6        Reviewed by Anders Carlsson.
     7
     8        Much like Javascript alerts, we need to allow accessibility clients to continue to interact with the WebProcess thread
     9        when using dispatchDecidePolicyResponses.
     10
     11        * Platform/CoreIPC/MessageSender.h:
     12        (CoreIPC::MessageSender::sendSync):
     13        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
     14        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
     15
    1162013-12-05  Anders Carlsson  <andersca@apple.com>
    217
  • trunk/Source/WebKit2/Platform/CoreIPC/MessageSender.h

    r156604 r160197  
    5252
    5353    template<typename T>
    54     bool sendSync(T&& message, typename T::Reply&& reply, double timeout = Connection::NoTimeout)
     54    bool sendSync(T&& message, typename T::Reply&& reply, double timeout = Connection::NoTimeout, unsigned syncSendFlags = 0)
    5555    {
    5656        static_assert(T::isSync, "Message is not sync!");
    5757
    58         return sendSync(std::forward<T>(message), std::move(reply), messageSenderDestinationID(), timeout);
     58        return sendSync(std::forward<T>(message), std::move(reply), messageSenderDestinationID(), timeout, syncSendFlags);
    5959    }
    6060
    6161    template<typename T>
    62     bool sendSync(T&& message, typename T::Reply&& reply, uint64_t destinationID, double timeout = Connection::NoTimeout)
     62    bool sendSync(T&& message, typename T::Reply&& reply, uint64_t destinationID, double timeout = Connection::NoTimeout, unsigned syncSendFlags = 0)
    6363    {
    6464        ASSERT(messageSenderConnection());
    6565
    66         return messageSenderConnection()->sendSync(std::move(message), std::move(reply), destinationID, timeout);
     66        return messageSenderConnection()->sendSync(std::move(message), std::move(reply), destinationID, timeout, syncSendFlags);
    6767    }
    6868
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp

    r159882 r160197  
    5252#include <JavaScriptCore/APICast.h>
    5353#include <JavaScriptCore/JSObject.h>
     54#include <WebCore/AXObjectCache.h>
    5455#include <WebCore/Chrome.h>
    5556#include <WebCore/DOMWrapperWorld.h>
     
    647648
    648649    // Notify the UIProcess.
    649     if (!webPage->sendSync(Messages::WebPageProxy::DecidePolicyForResponseSync(m_frame->frameID(), response, request, canShowMIMEType, listenerID, InjectedBundleUserMessageEncoder(userData.get())), Messages::WebPageProxy::DecidePolicyForResponseSync::Reply(receivedPolicyAction, policyAction, downloadID)))
     650    unsigned syncSendFlags = (WebCore::AXObjectCache::accessibilityEnabled()) ? CoreIPC::SpinRunLoopWhileWaitingForReply : 0;
     651    if (!webPage->sendSync(Messages::WebPageProxy::DecidePolicyForResponseSync(m_frame->frameID(), response, request, canShowMIMEType, listenerID, InjectedBundleUserMessageEncoder(userData.get())), Messages::WebPageProxy::DecidePolicyForResponseSync::Reply(receivedPolicyAction, policyAction, downloadID), CoreIPC::Connection::NoTimeout, syncSendFlags))
    650652        return;
    651653
Note: See TracChangeset for help on using the changeset viewer.