Title: [161007] trunk/Source/WebKit2
Revision
161007
Author
[email protected]
Date
2013-12-23 11:34:27 -0800 (Mon, 23 Dec 2013)

Log Message

Use std::chrono::milliseconds for message wait timeouts in WebKit2
https://bugs.webkit.org/show_bug.cgi?id=126168

Reviewed by Sam Weinig.

* Platform/CoreIPC/Connection.cpp:
(CoreIPC::Connection::waitForMessage):
* Platform/CoreIPC/Connection.h:
(CoreIPC::Connection::waitForAndDispatchImmediately):
* UIProcess/API/mac/WKView.mm:
(-[WKView forceAsyncDrawingAreaSizeUpdate:]):
(-[WKView waitForAsyncDrawingAreaSizeUpdate]):
* UIProcess/DrawingAreaProxy.cpp:
* UIProcess/DrawingAreaProxy.h:
(WebKit::DrawingAreaProxy::didUpdateBackingStoreStateTimeout):
(WebKit::DrawingAreaProxy::waitForPossibleGeometryUpdate):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::waitForDidUpdateViewState):
* UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
* UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
(WebKit::TiledCoreAnimationDrawingAreaProxy::waitForPossibleGeometryUpdate):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (161006 => 161007)


--- trunk/Source/WebKit2/ChangeLog	2013-12-23 19:15:09 UTC (rev 161006)
+++ trunk/Source/WebKit2/ChangeLog	2013-12-23 19:34:27 UTC (rev 161007)
@@ -1,5 +1,29 @@
 2013-12-23  Anders Carlsson  <[email protected]>
 
+        Use std::chrono::milliseconds for message wait timeouts in WebKit2
+        https://bugs.webkit.org/show_bug.cgi?id=126168
+
+        Reviewed by Sam Weinig.
+
+        * Platform/CoreIPC/Connection.cpp:
+        (CoreIPC::Connection::waitForMessage):
+        * Platform/CoreIPC/Connection.h:
+        (CoreIPC::Connection::waitForAndDispatchImmediately):
+        * UIProcess/API/mac/WKView.mm:
+        (-[WKView forceAsyncDrawingAreaSizeUpdate:]):
+        (-[WKView waitForAsyncDrawingAreaSizeUpdate]):
+        * UIProcess/DrawingAreaProxy.cpp:
+        * UIProcess/DrawingAreaProxy.h:
+        (WebKit::DrawingAreaProxy::didUpdateBackingStoreStateTimeout):
+        (WebKit::DrawingAreaProxy::waitForPossibleGeometryUpdate):
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::waitForDidUpdateViewState):
+        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
+        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
+        (WebKit::TiledCoreAnimationDrawingAreaProxy::waitForPossibleGeometryUpdate):
+
+2013-12-23  Anders Carlsson  <[email protected]>
+
         Include <condition_variable>, not <thread>.
 
         * Platform/CoreIPC/Connection.h:

Modified: trunk/Source/WebKit2/Platform/CoreIPC/Connection.cpp (161006 => 161007)


--- trunk/Source/WebKit2/Platform/CoreIPC/Connection.cpp	2013-12-23 19:15:09 UTC (rev 161006)
+++ trunk/Source/WebKit2/Platform/CoreIPC/Connection.cpp	2013-12-23 19:34:27 UTC (rev 161007)
@@ -375,7 +375,7 @@
     return sendMessage(std::move(encoder));
 }
 
-std::unique_ptr<MessageDecoder> Connection::waitForMessage(StringReference messageReceiverName, StringReference messageName, uint64_t destinationID, double timeout)
+std::unique_ptr<MessageDecoder> Connection::waitForMessage(StringReference messageReceiverName, StringReference messageName, uint64_t destinationID, std::chrono::milliseconds timeout)
 {
     // First, check if this message is already in the incoming messages queue.
     {
@@ -418,9 +418,7 @@
         }
 
         // Now we wait.
-        // FIXME: It would be better if Connection::waitForMessage took an std::chrono::milliseconds instead of a double.
-        std::chrono::milliseconds timeoutInMilliseconds(static_cast<std::chrono::milliseconds::rep>(timeout * 1000));
-        if (m_waitForMessageCondition.wait_for(lock, timeoutInMilliseconds) == std::cv_status::timeout) {
+        if (m_waitForMessageCondition.wait_for(lock, timeout) == std::cv_status::timeout) {
             // We timed out, now remove the pending wait.
             m_waitForMessageMap.remove(messageAndDestination);
 

Modified: trunk/Source/WebKit2/Platform/CoreIPC/Connection.h (161006 => 161007)


--- trunk/Source/WebKit2/Platform/CoreIPC/Connection.h	2013-12-23 19:15:09 UTC (rev 161006)
+++ trunk/Source/WebKit2/Platform/CoreIPC/Connection.h	2013-12-23 19:34:27 UTC (rev 161007)
@@ -159,7 +159,7 @@
 
     template<typename T> bool send(T&& message, uint64_t destinationID, unsigned messageSendFlags = 0);
     template<typename T> bool sendSync(T&& message, typename T::Reply&& reply, uint64_t destinationID, double timeout = NoTimeout, unsigned syncSendFlags = 0);
-    template<typename T> bool waitForAndDispatchImmediately(uint64_t destinationID, double timeout);
+    template<typename T> bool waitForAndDispatchImmediately(uint64_t destinationID, std::chrono::milliseconds timeout);
 
     std::unique_ptr<MessageEncoder> createSyncMessageEncoder(StringReference messageReceiverName, StringReference messageName, uint64_t destinationID, uint64_t& syncRequestID);
     bool sendMessage(std::unique_ptr<MessageEncoder>, unsigned messageSendFlags = 0);
@@ -181,7 +181,7 @@
     
     bool isValid() const { return m_client; }
     
-    std::unique_ptr<MessageDecoder> waitForMessage(StringReference messageReceiverName, StringReference messageName, uint64_t destinationID, double timeout);
+    std::unique_ptr<MessageDecoder> waitForMessage(StringReference messageReceiverName, StringReference messageName, uint64_t destinationID, std::chrono::milliseconds timeout);
     
     std::unique_ptr<MessageDecoder> waitForSyncReply(uint64_t syncRequestID, double timeout, unsigned syncSendFlags);
 
@@ -340,7 +340,7 @@
     return replyDecoder->decode(reply);
 }
 
-template<typename T> bool Connection::waitForAndDispatchImmediately(uint64_t destinationID, double timeout)
+template<typename T> bool Connection::waitForAndDispatchImmediately(uint64_t destinationID, std::chrono::milliseconds timeout)
 {
     std::unique_ptr<MessageDecoder> decoder = waitForMessage(T::receiverName(), T::name(), destinationID, timeout);
     if (!decoder)

Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm (161006 => 161007)


--- trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm	2013-12-23 19:15:09 UTC (rev 161006)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm	2013-12-23 19:34:27 UTC (rev 161007)
@@ -3169,7 +3169,7 @@
     // pending did-update message now, such that the new update can be sent. We do so after setting
     // the drawing area size such that the latest update is sent.
     if (DrawingAreaProxy* drawingArea = _data->_page->drawingArea())
-        drawingArea->waitForPossibleGeometryUpdate(0);
+        drawingArea->waitForPossibleGeometryUpdate(std::chrono::milliseconds::zero());
 }
 
 - (void)waitForAsyncDrawingAreaSizeUpdate
@@ -3178,8 +3178,8 @@
         // If a geometry update is still pending then the action of receiving the
         // first geometry update may result in another update being scheduled -
         // we should wait for this to complete too.
-        drawingArea->waitForPossibleGeometryUpdate(DrawingAreaProxy::didUpdateBackingStoreStateTimeout * 0.5);
-        drawingArea->waitForPossibleGeometryUpdate(DrawingAreaProxy::didUpdateBackingStoreStateTimeout * 0.5);
+        drawingArea->waitForPossibleGeometryUpdate(DrawingAreaProxy::didUpdateBackingStoreStateTimeout() / 2);
+        drawingArea->waitForPossibleGeometryUpdate(DrawingAreaProxy::didUpdateBackingStoreStateTimeout() / 2);
     }
 }
 

Modified: trunk/Source/WebKit2/UIProcess/DrawingAreaProxy.cpp (161006 => 161007)


--- trunk/Source/WebKit2/UIProcess/DrawingAreaProxy.cpp	2013-12-23 19:15:09 UTC (rev 161006)
+++ trunk/Source/WebKit2/UIProcess/DrawingAreaProxy.cpp	2013-12-23 19:34:27 UTC (rev 161007)
@@ -34,8 +34,6 @@
 
 namespace WebKit {
 
-const double DrawingAreaProxy::didUpdateBackingStoreStateTimeout = 0.5;
-
 DrawingAreaProxy::DrawingAreaProxy(DrawingAreaType type, WebPageProxy* webPageProxy)
     : m_type(type)
     , m_webPageProxy(webPageProxy)

Modified: trunk/Source/WebKit2/UIProcess/DrawingAreaProxy.h (161006 => 161007)


--- trunk/Source/WebKit2/UIProcess/DrawingAreaProxy.h	2013-12-23 19:15:09 UTC (rev 161006)
+++ trunk/Source/WebKit2/UIProcess/DrawingAreaProxy.h	2013-12-23 19:34:27 UTC (rev 161007)
@@ -32,6 +32,7 @@
 #include <WebCore/FloatPoint.h>
 #include <WebCore/IntRect.h>
 #include <WebCore/IntSize.h>
+#include <chrono>
 #include <stdint.h>
 #include <wtf/Noncopyable.h>
 
@@ -60,10 +61,10 @@
     const WebCore::IntSize& size() const { return m_size; }
     void setSize(const WebCore::IntSize&, const WebCore::IntSize&, const WebCore::IntSize& scrollOffset);
 
-    // The timeout, in seconds, we use when waiting for a DidUpdateGeometry message.
-    static const double didUpdateBackingStoreStateTimeout;
+    // The timeout we use when waiting for a DidUpdateGeometry message.
+    static constexpr std::chrono::milliseconds didUpdateBackingStoreStateTimeout() { return std::chrono::milliseconds(500); }
 
-    virtual void waitForPossibleGeometryUpdate(double = didUpdateBackingStoreStateTimeout) { }
+    virtual void waitForPossibleGeometryUpdate(std::chrono::milliseconds = didUpdateBackingStoreStateTimeout()) { }
 
     virtual void colorSpaceDidChange() { }
     virtual void minimumLayoutSizeDidChange() { }

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (161006 => 161007)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2013-12-23 19:15:09 UTC (rev 161006)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2013-12-23 19:34:27 UTC (rev 161007)
@@ -1008,7 +1008,7 @@
     m_waitingForDidUpdateViewState = true;
 
     if (!m_process->isLaunching()) {
-        const double viewStateUpdateTimeout = 0.25;
+        auto viewStateUpdateTimeout = std::chrono::milliseconds(250);
         m_process->connection()->waitForAndDispatchImmediately<Messages::WebPageProxy::DidUpdateViewState>(m_pageID, viewStateUpdateTimeout);
     }
 }

Modified: trunk/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h (161006 => 161007)


--- trunk/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h	2013-12-23 19:15:09 UTC (rev 161006)
+++ trunk/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h	2013-12-23 19:34:27 UTC (rev 161007)
@@ -41,7 +41,7 @@
     // DrawingAreaProxy
     virtual void deviceScaleFactorDidChange() OVERRIDE;
     virtual void sizeDidChange() OVERRIDE;
-    virtual void waitForPossibleGeometryUpdate(double timeout = didUpdateBackingStoreStateTimeout) OVERRIDE;
+    virtual void waitForPossibleGeometryUpdate(std::chrono::milliseconds timeout = didUpdateBackingStoreStateTimeout()) OVERRIDE;
     virtual void colorSpaceDidChange() OVERRIDE;
     virtual void minimumLayoutSizeDidChange() OVERRIDE;
 

Modified: trunk/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm (161006 => 161007)


--- trunk/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm	2013-12-23 19:15:09 UTC (rev 161006)
+++ trunk/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm	2013-12-23 19:34:27 UTC (rev 161007)
@@ -67,7 +67,7 @@
     sendUpdateGeometry();
 }
 
-void TiledCoreAnimationDrawingAreaProxy::waitForPossibleGeometryUpdate(double timeout)
+void TiledCoreAnimationDrawingAreaProxy::waitForPossibleGeometryUpdate(std::chrono::milliseconds timeout)
 {
     if (!m_isWaitingForDidUpdateGeometry)
         return;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to