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();