Title: [161830] trunk/Source/WebCore
Revision
161830
Author
[email protected]
Date
2014-01-12 12:59:30 -0800 (Sun, 12 Jan 2014)

Log Message

Clean up NetworkStateNotifier class
https://bugs.webkit.org/show_bug.cgi?id=126850

Reviewed by Andreas Kling.

Use std::call_once instead of AtomicallyInitializedStatic and a std::function
instead of a custom function pointer typedef.

* platform/network/NetworkStateNotifier.cpp:
(WebCore::networkStateNotifier):
(WebCore::NetworkStateNotifier::addNetworkStateChangeListener):
(WebCore::NetworkStateNotifier::notifyNetworkStateChange):
* platform/network/NetworkStateNotifier.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (161829 => 161830)


--- trunk/Source/WebCore/ChangeLog	2014-01-12 20:54:54 UTC (rev 161829)
+++ trunk/Source/WebCore/ChangeLog	2014-01-12 20:59:30 UTC (rev 161830)
@@ -1,3 +1,19 @@
+2014-01-12  Anders Carlsson  <[email protected]>
+
+        Clean up NetworkStateNotifier class
+        https://bugs.webkit.org/show_bug.cgi?id=126850
+
+        Reviewed by Andreas Kling.
+
+        Use std::call_once instead of AtomicallyInitializedStatic and a std::function
+        instead of a custom function pointer typedef.
+
+        * platform/network/NetworkStateNotifier.cpp:
+        (WebCore::networkStateNotifier):
+        (WebCore::NetworkStateNotifier::addNetworkStateChangeListener):
+        (WebCore::NetworkStateNotifier::notifyNetworkStateChange):
+        * platform/network/NetworkStateNotifier.h:
+
 2014-01-12  Simon Fraser  <[email protected]>
 
         Add implementations of Frame::viewportArguments() and

Modified: trunk/Source/WebCore/platform/network/NetworkStateNotifier.cpp (161829 => 161830)


--- trunk/Source/WebCore/platform/network/NetworkStateNotifier.cpp	2014-01-12 20:54:54 UTC (rev 161829)
+++ trunk/Source/WebCore/platform/network/NetworkStateNotifier.cpp	2014-01-12 20:59:30 UTC (rev 161830)
@@ -26,30 +26,35 @@
 #include "config.h"
 #include "NetworkStateNotifier.h"
 
+#include <mutex>
 #include <wtf/Assertions.h>
 #include <wtf/StdLibExtras.h>
-#include <wtf/Threading.h>
 
 namespace WebCore {
 
 NetworkStateNotifier& networkStateNotifier()
 {
-    AtomicallyInitializedStatic(NetworkStateNotifier*, networkStateNotifier = new NetworkStateNotifier);
+    static std::once_flag onceFlag;
+    static NetworkStateNotifier* networkStateNotifier;
 
+    std::call_once(onceFlag, []{
+        networkStateNotifier = std::make_unique<NetworkStateNotifier>().release();
+    });
+
     return *networkStateNotifier;
 }
 
-void NetworkStateNotifier::addNetworkStateChangeListener(NetworkStateChangeListener listener)
+void NetworkStateNotifier::addNetworkStateChangeListener(std::function<void (bool)> listener)
 {
     ASSERT(listener);
-    m_listeners.append(listener);
+
+    m_listeners.append(std::move(listener));
 }
 
 void NetworkStateNotifier::notifyNetworkStateChange()
 {
-    Vector<NetworkStateChangeListener>::iterator end = m_listeners.end();
-    for (Vector<NetworkStateChangeListener>::iterator it = m_listeners.begin(); it != end; ++it)
-        (*it)(m_isOnLine);
+    for (const auto& listener : m_listeners)
+        listener(m_isOnLine);
 }
 
-}
+} // namespace WebCore

Modified: trunk/Source/WebCore/platform/network/NetworkStateNotifier.h (161829 => 161830)


--- trunk/Source/WebCore/platform/network/NetworkStateNotifier.h	2014-01-12 20:54:54 UTC (rev 161829)
+++ trunk/Source/WebCore/platform/network/NetworkStateNotifier.h	2014-01-12 20:59:30 UTC (rev 161830)
@@ -58,8 +58,7 @@
 #if PLATFORM(EFL)
     ~NetworkStateNotifier();
 #endif
-    typedef void (*NetworkStateChangeListener)(bool m_isOnLine);
-    void addNetworkStateChangeListener(NetworkStateChangeListener);
+    void addNetworkStateChangeListener(std::function<void (bool isOnLine)>);
 
     bool onLine() const { return m_isOnLine; }
     
@@ -69,7 +68,7 @@
 
 private:
     bool m_isOnLine;
-    Vector<NetworkStateChangeListener> m_listeners;
+    Vector<std::function<void (bool)>> m_listeners;
 
     void notifyNetworkStateChange();
     void updateState();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to