Modified: branches/safari-537.74-branch/Source/WebKit2/ChangeLog (160427 => 160428)
--- branches/safari-537.74-branch/Source/WebKit2/ChangeLog 2013-12-11 12:29:41 UTC (rev 160427)
+++ branches/safari-537.74-branch/Source/WebKit2/ChangeLog 2013-12-11 12:42:50 UTC (rev 160428)
@@ -1,5 +1,24 @@
2013-12-11 Lucas Forschler <[email protected]>
+ Merge r160197
+
+ 2013-12-05 Chris Fleizach <[email protected]>
+
+ 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):
+
+2013-12-11 Lucas Forschler <[email protected]>
+
Merge r159460
2013-11-18 David Hyatt <[email protected]>
Modified: branches/safari-537.74-branch/Source/WebKit2/Platform/CoreIPC/MessageSender.h (160427 => 160428)
--- branches/safari-537.74-branch/Source/WebKit2/Platform/CoreIPC/MessageSender.h 2013-12-11 12:29:41 UTC (rev 160427)
+++ branches/safari-537.74-branch/Source/WebKit2/Platform/CoreIPC/MessageSender.h 2013-12-11 12:42:50 UTC (rev 160428)
@@ -49,17 +49,17 @@
return sendMessage(encoder.release());
}
- template<typename U> bool sendSync(const U& message, const typename U::Reply& reply, double timeout = Connection::NoTimeout)
+ template<typename U> bool sendSync(const U& message, const typename U::Reply& reply, double timeout = Connection::NoTimeout, unsigned syncSendFlags = 0)
{
COMPILE_ASSERT(U::isSync, SyncMessageExpected);
- return sendSync(message, reply, messageSenderDestinationID(), timeout);
+ return sendSync(message, reply, messageSenderDestinationID(), timeout, syncSendFlags);
}
- template<typename U> bool sendSync(const U& message, const typename U::Reply& reply, uint64_t destinationID, double timeout = Connection::NoTimeout)
+ template<typename U> bool sendSync(const U& message, const typename U::Reply& reply, uint64_t destinationID, double timeout = Connection::NoTimeout, unsigned syncSendFlags = 0)
{
ASSERT(messageSenderConnection());
- return messageSenderConnection()->sendSync(message, reply, destinationID, timeout);
+ return messageSenderConnection()->sendSync(message, reply, destinationID, timeout, syncSendFlags);
}
bool sendMessage(PassOwnPtr<MessageEncoder>);
Modified: branches/safari-537.74-branch/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (160427 => 160428)
--- branches/safari-537.74-branch/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp 2013-12-11 12:29:41 UTC (rev 160427)
+++ branches/safari-537.74-branch/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp 2013-12-11 12:42:50 UTC (rev 160428)
@@ -51,6 +51,7 @@
#include "WebProcessProxyMessages.h"
#include <_javascript_Core/APICast.h>
#include <_javascript_Core/JSObject.h>
+#include <WebCore/AXObjectCache.h>
#include <WebCore/Chrome.h>
#include <WebCore/DOMWrapperWorld.h>
#include <WebCore/DocumentLoader.h>
@@ -651,7 +652,8 @@
uint64_t downloadID;
// Notify the UIProcess.
- if (!webPage->sendSync(Messages::WebPageProxy::DecidePolicyForResponseSync(m_frame->frameID(), response, request, listenerID, InjectedBundleUserMessageEncoder(userData.get())), Messages::WebPageProxy::DecidePolicyForResponseSync::Reply(receivedPolicyAction, policyAction, downloadID)))
+ unsigned syncSendFlags = (WebCore::AXObjectCache::accessibilityEnabled()) ? CoreIPC::SpinRunLoopWhileWaitingForReply : 0;
+ if (!webPage->sendSync(Messages::WebPageProxy::DecidePolicyForResponseSync(m_frame->frameID(), response, request, listenerID, InjectedBundleUserMessageEncoder(userData.get())), Messages::WebPageProxy::DecidePolicyForResponseSync::Reply(receivedPolicyAction, policyAction, downloadID), CoreIPC::Connection::NoTimeout, syncSendFlags))
return;
// We call this synchronously because CFNetwork can only convert a loading connection to a download from its didReceiveResponse callback.