Diff
Modified: trunk/Source/WebCore/ChangeLog (149241 => 149242)
--- trunk/Source/WebCore/ChangeLog 2013-04-27 19:59:04 UTC (rev 149241)
+++ trunk/Source/WebCore/ChangeLog 2013-04-27 20:28:30 UTC (rev 149242)
@@ -1,5 +1,24 @@
2013-04-27 Anders Carlsson <[email protected]>
+ Replace uses of StorageTask with StorageThread::dispatch and WTF::bind
+ https://bugs.webkit.org/show_bug.cgi?id=115309
+
+ Reviewed by Andreas Kling.
+
+ * storage/StorageTask.cpp:
+ (WebCore::StorageTask::StorageTask):
+ (WebCore::StorageTask::performTask):
+ * storage/StorageTask.h:
+ * storage/StorageThread.cpp:
+ (WebCore::StorageThread::terminate):
+ (WebCore::StorageThread::releaseFastMallocFreeMemoryInAllThreads):
+ * storage/StorageThread.h:
+ * storage/StorageTracker.cpp:
+ (WebCore::StorageTracker::importOriginIdentifiers):
+ (WebCore::StorageTracker::deleteAllOrigins):
+
+2013-04-27 Anders Carlsson <[email protected]>
+
Add StorageThread::dispatch
https://bugs.webkit.org/show_bug.cgi?id=115308
Modified: trunk/Source/WebCore/storage/StorageTask.cpp (149241 => 149242)
--- trunk/Source/WebCore/storage/StorageTask.cpp 2013-04-27 19:59:04 UTC (rev 149241)
+++ trunk/Source/WebCore/storage/StorageTask.cpp 2013-04-27 20:28:30 UTC (rev 149242)
@@ -36,7 +36,6 @@
: m_type(type)
, m_function(function)
, m_area(0)
- , m_thread(0)
{
ASSERT(!m_function.isNull());
ASSERT(m_type == Dispatch);
@@ -45,33 +44,14 @@
StorageTask::StorageTask(Type type, StorageAreaSync* area)
: m_type(type)
, m_area(area)
- , m_thread(0)
{
ASSERT(m_area);
ASSERT(m_type == AreaImport || m_type == AreaSync || m_type == DeleteEmptyDatabase);
}
-StorageTask::StorageTask(Type type, StorageThread* thread)
- : m_type(type)
- , m_area(0)
- , m_thread(thread)
-{
- ASSERT(m_thread);
- ASSERT(m_type == TerminateThread);
-}
-
-StorageTask::StorageTask(Type type)
- : m_type(type)
- , m_area(0)
- , m_thread(0)
-{
- ASSERT(m_type == ImportOrigins || m_type == DeleteAllOrigins || m_type == ReleaseFastMallocFreeMemory);
-}
-
StorageTask::StorageTask(Type type, const String& originIdentifier)
: m_type(type)
, m_area(0)
- , m_thread(0)
, m_originIdentifier(originIdentifier)
{
ASSERT(m_type == DeleteOrigin);
@@ -80,7 +60,6 @@
StorageTask::StorageTask(Type type, const String& originIdentifier, const String& databaseFilename)
: m_type(type)
, m_area(0)
- , m_thread(0)
, m_originIdentifier(originIdentifier)
, m_databaseFilename(databaseFilename)
{
@@ -106,24 +85,12 @@
case SetOriginDetails:
StorageTracker::tracker().syncSetOriginDetails(m_originIdentifier, m_databaseFilename);
break;
- case ImportOrigins:
- StorageTracker::tracker().syncImportOriginIdentifiers();
- break;
- case DeleteAllOrigins:
- StorageTracker::tracker().syncDeleteAllOrigins();
- break;
case DeleteOrigin:
StorageTracker::tracker().syncDeleteOrigin(m_originIdentifier);
break;
case DeleteEmptyDatabase:
m_area->deleteEmptyDatabase();
break;
- case ReleaseFastMallocFreeMemory:
- WTF::releaseFastMallocFreeMemory();
- break;
- case TerminateThread:
- m_thread->performTerminate();
- break;
}
}
Modified: trunk/Source/WebCore/storage/StorageTask.h (149241 => 149242)
--- trunk/Source/WebCore/storage/StorageTask.h 2013-04-27 19:59:04 UTC (rev 149241)
+++ trunk/Source/WebCore/storage/StorageTask.h 2013-04-27 20:28:30 UTC (rev 149242)
@@ -34,12 +34,11 @@
namespace WebCore {
class StorageAreaSync;
- class StorageThread;
class StorageTask {
WTF_MAKE_NONCOPYABLE(StorageTask); WTF_MAKE_FAST_ALLOCATED;
public:
- enum Type { Dispatch, AreaImport, AreaSync, DeleteEmptyDatabase, SetOriginDetails, ImportOrigins, DeleteAllOrigins, DeleteOrigin, ReleaseFastMallocFreeMemory, TerminateThread };
+ enum Type { Dispatch, AreaImport, AreaSync, DeleteEmptyDatabase, SetOriginDetails, DeleteOrigin };
~StorageTask();
@@ -47,27 +46,20 @@
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)); }
- static PassOwnPtr<StorageTask> createOriginIdentifiersImport() { return adoptPtr(new StorageTask(ImportOrigins)); }
static PassOwnPtr<StorageTask> createSetOriginDetails(const String& originIdentifier, const String& databaseFilename) { return adoptPtr(new StorageTask(SetOriginDetails, originIdentifier, databaseFilename)); }
static PassOwnPtr<StorageTask> createDeleteOrigin(const String& originIdentifier) { return adoptPtr(new StorageTask(DeleteOrigin, originIdentifier)); }
- static PassOwnPtr<StorageTask> createDeleteAllOrigins() { return adoptPtr(new StorageTask(DeleteAllOrigins)); }
- static PassOwnPtr<StorageTask> createReleaseFastMallocFreeMemory() { return adoptPtr(new StorageTask(ReleaseFastMallocFreeMemory)); }
- static PassOwnPtr<StorageTask> createTerminate(StorageThread* thread) { return adoptPtr(new StorageTask(TerminateThread, thread)); }
void performTask();
private:
StorageTask(Type, const Function<void()>&);
StorageTask(Type, StorageAreaSync*);
- StorageTask(Type, StorageThread*);
StorageTask(Type, const String& originIdentifier);
StorageTask(Type, const String& originIdentifier, const String& databaseFilename);
- explicit StorageTask(Type);
Type m_type;
Function<void ()> m_function;
StorageAreaSync* m_area;
- StorageThread* m_thread;
String m_originIdentifier;
String m_databaseFilename;
};
Modified: trunk/Source/WebCore/storage/StorageThread.cpp (149241 => 149242)
--- trunk/Source/WebCore/storage/StorageThread.cpp 2013-04-27 19:59:04 UTC (rev 149241)
+++ trunk/Source/WebCore/storage/StorageThread.cpp 2013-04-27 20:28:30 UTC (rev 149242)
@@ -104,7 +104,7 @@
if (!m_threadID)
return;
- m_queue.append(StorageTask::createTerminate(this));
+ m_queue.append(StorageTask::createDispatch(bind(&StorageThread::performTerminate, this)));
waitForThreadCompletion(m_threadID);
ASSERT(m_queue.killed());
m_threadID = 0;
@@ -119,9 +119,9 @@
void StorageThread::releaseFastMallocFreeMemoryInAllThreads()
{
HashSet<StorageThread*>& threads = activeStorageThreads();
- HashSet<StorageThread*>::iterator end = threads.end();
- for (HashSet<StorageThread*>::iterator it = threads.begin(); it != end; ++it)
- (*it)->scheduleTask(StorageTask::createReleaseFastMallocFreeMemory());
+
+ for (HashSet<StorageThread*>::iterator it = threads.begin(), end = threads.end(); it != end; ++it)
+ (*it)->dispatch(bind(WTF::releaseFastMallocFreeMemory));
}
}
Modified: trunk/Source/WebCore/storage/StorageThread.h (149241 => 149242)
--- trunk/Source/WebCore/storage/StorageThread.h 2013-04-27 19:59:04 UTC (rev 149241)
+++ trunk/Source/WebCore/storage/StorageThread.h 2013-04-27 20:28:30 UTC (rev 149242)
@@ -35,36 +35,36 @@
namespace WebCore {
- class StorageAreaSync;
- class StorageTask;
+class StorageAreaSync;
+class StorageTask;
- class StorageThread {
- WTF_MAKE_NONCOPYABLE(StorageThread); WTF_MAKE_FAST_ALLOCATED;
- public:
- static PassOwnPtr<StorageThread> create();
- ~StorageThread();
+class StorageThread {
+ WTF_MAKE_NONCOPYABLE(StorageThread); WTF_MAKE_FAST_ALLOCATED;
+public:
+ static PassOwnPtr<StorageThread> create();
+ ~StorageThread();
- bool start();
- void terminate();
- void scheduleTask(PassOwnPtr<StorageTask>);
+ bool start();
+ void terminate();
+ void scheduleTask(PassOwnPtr<StorageTask>);
- void dispatch(const Function<void()>&);
+ void dispatch(const Function<void()>&);
- // Background thread part of the terminate procedure.
- void performTerminate();
+ static void releaseFastMallocFreeMemoryInAllThreads();
- static void releaseFastMallocFreeMemoryInAllThreads();
+private:
+ StorageThread();
- private:
- StorageThread();
+ // Called on background thread.
+ static void threadEntryPointCallback(void*);
+ void threadEntryPoint();
- // Called on background thread.
- static void threadEntryPointCallback(void*);
- void threadEntryPoint();
+ // Background thread part of the terminate procedure.
+ void performTerminate();
- ThreadIdentifier m_threadID;
- MessageQueue<StorageTask> m_queue;
- };
+ ThreadIdentifier m_threadID;
+ MessageQueue<StorageTask> m_queue;
+};
} // namespace WebCore
Modified: trunk/Source/WebCore/storage/StorageTracker.cpp (149241 => 149242)
--- trunk/Source/WebCore/storage/StorageTracker.cpp 2013-04-27 19:59:04 UTC (rev 149241)
+++ trunk/Source/WebCore/storage/StorageTracker.cpp 2013-04-27 20:28:30 UTC (rev 149242)
@@ -168,7 +168,7 @@
ASSERT(isMainThread());
ASSERT(m_thread);
- m_thread->scheduleTask(StorageTask::createOriginIdentifiersImport());
+ m_thread->dispatch(bind(&StorageTracker::syncImportOriginIdentifiers, this));
}
void StorageTracker::notifyFinishedImportingOriginIdentifiersOnMainThread(void*)
@@ -387,8 +387,8 @@
}
PageGroup::clearLocalStorageForAllOrigins();
-
- m_thread->scheduleTask(StorageTask::createDeleteAllOrigins());
+
+ m_thread->dispatch(bind(&StorageTracker::syncDeleteAllOrigins, this));
}
void StorageTracker::syncDeleteAllOrigins()