12011-04-12 Luiz Agostini <luiz.agostini@openbossa.org>
2
3 Reviewed by NOBODY (OOPS!).
4
5 [Qt] QNetworkReplyHandler refactoring: signal queue
6 https://bugs.webkit.org/show_bug.cgi?id=57075
7
8 The idea is to make all signals that come from the QNetworkReply to pass through a queue and to
9 stop that queue when loading is deferred. This way almost all the deferred logic can be removed
10 from QNetworkReplyHandler class and encapsulated in its own class.
11
12 To stop the queue during wrapper methods execution avoids stacking handler methods over wrapper
13 methods. Because of this there is no chance for the wrapper to be destroyed inside one of its methods.
14 This together with empting the queue at wrapper destruction time makes sure that the handler will
15 not receive calls from a dead wrapper.
16
17 The new class is named QNetworkReplyHandlerCallQueue.
18
19 * platform/network/qt/QNetworkReplyHandler.cpp:
20 (WebCore::QNetworkReplyHandlerCallQueue::QNetworkReplyHandlerCallQueue):
21 (WebCore::QNetworkReplyHandlerCallQueue::push):
22 (WebCore::QNetworkReplyHandlerCallQueue::lock):
23 (WebCore::QNetworkReplyHandlerCallQueue::unlock):
24 (WebCore::QNetworkReplyHandlerCallQueue::setDeferSignals):
25 (WebCore::QueueLocker::QueueLocker):
26 (WebCore::QueueLocker::~QueueLocker):
27 (WebCore::QNetworkReplyWrapper::QNetworkReplyWrapper):
28 (WebCore::QNetworkReplyWrapper::~QNetworkReplyWrapper):
29 (WebCore::QNetworkReplyWrapper::receiveMetaData):
30 (WebCore::QNetworkReplyWrapper::readyRead):
31 (WebCore::QNetworkReplyWrapper::didReceiveFinished):
32 (WebCore::QNetworkReplyHandler::QNetworkReplyHandler):
33 (WebCore::QNetworkReplyHandler::resetState):
34 (WebCore::QNetworkReplyHandler::release):
35 (WebCore::QNetworkReplyHandler::finish):
36 (WebCore::QNetworkReplyHandler::sendResponseIfNeeded):
37 (WebCore::QNetworkReplyHandler::forwardData):
38 (WebCore::QNetworkReplyHandler::start):
39 * platform/network/qt/QNetworkReplyHandler.h:
40 (WebCore::QNetworkReplyHandlerCallQueue::deferSignals):
41 (WebCore::QNetworkReplyHandlerCallQueue::clear):
42 (WebCore::QNetworkReplyWrapper::synchronousLoad):
43 (WebCore::QNetworkReplyHandler::setLoadingDeferred):
44