Title: [149241] trunk/Source/WebCore
Revision
149241
Author
[email protected]
Date
2013-04-27 12:59:04 -0700 (Sat, 27 Apr 2013)

Log Message

Add StorageThread::dispatch
https://bugs.webkit.org/show_bug.cgi?id=115308

Reviewed by Andreas Kling.

StorageThread::dispatch takes a Function<void ()> and runs it on the storage thread. This will be used to eventually get rid of StorageTask.

* storage/StorageTask.cpp:
(WebCore::StorageTask::StorageTask):
(WebCore::StorageTask::performTask):
* storage/StorageTask.h:
(WebCore::StorageTask::createDispatch):
* storage/StorageThread.cpp:
(WebCore::StorageThread::dispatch):
* storage/StorageThread.h:
(StorageThread):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (149240 => 149241)


--- trunk/Source/WebCore/ChangeLog	2013-04-27 18:25:19 UTC (rev 149240)
+++ trunk/Source/WebCore/ChangeLog	2013-04-27 19:59:04 UTC (rev 149241)
@@ -1,3 +1,22 @@
+2013-04-27  Anders Carlsson  <[email protected]>
+
+        Add StorageThread::dispatch
+        https://bugs.webkit.org/show_bug.cgi?id=115308
+
+        Reviewed by Andreas Kling.
+
+        StorageThread::dispatch takes a Function<void ()> and runs it on the storage thread. This will be used to eventually get rid of StorageTask.
+
+        * storage/StorageTask.cpp:
+        (WebCore::StorageTask::StorageTask):
+        (WebCore::StorageTask::performTask):
+        * storage/StorageTask.h:
+        (WebCore::StorageTask::createDispatch):
+        * storage/StorageThread.cpp:
+        (WebCore::StorageThread::dispatch):
+        * storage/StorageThread.h:
+        (StorageThread):
+
 2013-04-27  Jer Noble  <[email protected]>
 
         REGRESSION (r147261): Audio controls background not displayed after loading audio file

Modified: trunk/Source/WebCore/storage/StorageTask.cpp (149240 => 149241)


--- trunk/Source/WebCore/storage/StorageTask.cpp	2013-04-27 18:25:19 UTC (rev 149240)
+++ trunk/Source/WebCore/storage/StorageTask.cpp	2013-04-27 19:59:04 UTC (rev 149241)
@@ -32,6 +32,16 @@
 
 namespace WebCore {
 
+StorageTask::StorageTask(Type type, const Function<void()>& function)
+    : m_type(type)
+    , m_function(function)
+    , m_area(0)
+    , m_thread(0)
+{
+    ASSERT(!m_function.isNull());
+    ASSERT(m_type == Dispatch);
+}
+
 StorageTask::StorageTask(Type type, StorageAreaSync* area)
     : m_type(type)
     , m_area(area)
@@ -84,6 +94,9 @@
 void StorageTask::performTask()
 {
     switch (m_type) {
+        case Dispatch:
+            m_function();
+            break;
         case AreaImport:
             m_area->performImport();
             break;

Modified: trunk/Source/WebCore/storage/StorageTask.h (149240 => 149241)


--- trunk/Source/WebCore/storage/StorageTask.h	2013-04-27 18:25:19 UTC (rev 149240)
+++ trunk/Source/WebCore/storage/StorageTask.h	2013-04-27 19:59:04 UTC (rev 149241)
@@ -26,6 +26,7 @@
 #ifndef StorageTask_h
 #define StorageTask_h
 
+#include <wtf/Functional.h>
 #include <wtf/PassOwnPtr.h>
 #include <wtf/Threading.h>
 #include <wtf/text/WTFString.h>
@@ -38,10 +39,11 @@
     class StorageTask {
         WTF_MAKE_NONCOPYABLE(StorageTask); WTF_MAKE_FAST_ALLOCATED;
     public:
-        enum Type { AreaImport, AreaSync, DeleteEmptyDatabase, SetOriginDetails, ImportOrigins, DeleteAllOrigins, DeleteOrigin, ReleaseFastMallocFreeMemory, TerminateThread };
+        enum Type { Dispatch, AreaImport, AreaSync, DeleteEmptyDatabase, SetOriginDetails, ImportOrigins, DeleteAllOrigins, DeleteOrigin, ReleaseFastMallocFreeMemory, TerminateThread };
 
         ~StorageTask();
 
+        static PassOwnPtr<StorageTask> createDispatch(const Function<void()>& function) { return adoptPtr(new StorageTask(Dispatch, function)); }
         static PassOwnPtr<StorageTask> createImport(StorageAreaSync* area) { return adoptPtr(new StorageTask(AreaImport, area)); }
         static PassOwnPtr<StorageTask> createSync(StorageAreaSync* area) { return adoptPtr(new StorageTask(AreaSync, area)); }
         static PassOwnPtr<StorageTask> createDeleteEmptyDatabase(StorageAreaSync* area) { return adoptPtr(new StorageTask(DeleteEmptyDatabase, area)); }
@@ -55,6 +57,7 @@
         void performTask();
 
     private:
+        StorageTask(Type, const Function<void()>&);
         StorageTask(Type, StorageAreaSync*);
         StorageTask(Type, StorageThread*);
         StorageTask(Type, const String& originIdentifier);
@@ -62,6 +65,7 @@
         explicit StorageTask(Type);
 
         Type m_type;
+        Function<void ()> m_function;
         StorageAreaSync* m_area;
         StorageThread* m_thread;
         String m_originIdentifier;

Modified: trunk/Source/WebCore/storage/StorageThread.cpp (149240 => 149241)


--- trunk/Source/WebCore/storage/StorageThread.cpp	2013-04-27 18:25:19 UTC (rev 149240)
+++ trunk/Source/WebCore/storage/StorageThread.cpp	2013-04-27 19:59:04 UTC (rev 149241)
@@ -90,6 +90,11 @@
     m_queue.append(task);
 }
 
+void StorageThread::dispatch(const Function<void()>& function)
+{
+    scheduleTask(StorageTask::createDispatch(function));
+}
+
 void StorageThread::terminate()
 {
     ASSERT(isMainThread());

Modified: trunk/Source/WebCore/storage/StorageThread.h (149240 => 149241)


--- trunk/Source/WebCore/storage/StorageThread.h	2013-04-27 18:25:19 UTC (rev 149240)
+++ trunk/Source/WebCore/storage/StorageThread.h	2013-04-27 19:59:04 UTC (rev 149241)
@@ -26,6 +26,7 @@
 #ifndef StorageThread_h
 #define StorageThread_h
 
+#include <wtf/Forward.h>
 #include <wtf/HashSet.h>
 #include <wtf/MessageQueue.h>
 #include <wtf/PassOwnPtr.h>
@@ -47,6 +48,8 @@
         void terminate();
         void scheduleTask(PassOwnPtr<StorageTask>);
 
+        void dispatch(const Function<void()>&);
+
         // Background thread part of the terminate procedure.
         void performTerminate();
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to