Diff
Modified: trunk/Source/WebCore/ChangeLog (149244 => 149245)
--- trunk/Source/WebCore/ChangeLog 2013-04-27 20:44:04 UTC (rev 149244)
+++ trunk/Source/WebCore/ChangeLog 2013-04-27 20:55:45 UTC (rev 149245)
@@ -1,5 +1,20 @@
2013-04-27 Anders Carlsson <[email protected]>
+ Remove two more StorageTask types
+ https://bugs.webkit.org/show_bug.cgi?id=115312
+
+ Reviewed by Dean Jackson.
+
+ * storage/StorageTask.cpp:
+ (WebCore::StorageTask::performTask):
+ * storage/StorageTask.h:
+ * storage/StorageTracker.cpp:
+ (WebCore::StorageTracker::setOriginDetails):
+ (WebCore::StorageTracker::deleteOrigin):
+ * storage/StorageTracker.h:
+
+2013-04-27 Anders Carlsson <[email protected]>
+
Get rid of more uses of StorageTask
https://bugs.webkit.org/show_bug.cgi?id=115311
Modified: trunk/Source/WebCore/storage/StorageTask.cpp (149244 => 149245)
--- trunk/Source/WebCore/storage/StorageTask.cpp 2013-04-27 20:44:04 UTC (rev 149244)
+++ trunk/Source/WebCore/storage/StorageTask.cpp 2013-04-27 20:55:45 UTC (rev 149245)
@@ -40,21 +40,6 @@
ASSERT(m_type == Dispatch);
}
-StorageTask::StorageTask(Type type, const String& originIdentifier)
- : m_type(type)
- , m_originIdentifier(originIdentifier)
-{
- ASSERT(m_type == DeleteOrigin);
-}
-
-StorageTask::StorageTask(Type type, const String& originIdentifier, const String& databaseFilename)
- : m_type(type)
- , m_originIdentifier(originIdentifier)
- , m_databaseFilename(databaseFilename)
-{
- ASSERT(m_type == SetOriginDetails);
-}
-
StorageTask::~StorageTask()
{
}
@@ -65,12 +50,6 @@
case Dispatch:
m_function();
break;
- case SetOriginDetails:
- StorageTracker::tracker().syncSetOriginDetails(m_originIdentifier, m_databaseFilename);
- break;
- case DeleteOrigin:
- StorageTracker::tracker().syncDeleteOrigin(m_originIdentifier);
- break;
}
}
Modified: trunk/Source/WebCore/storage/StorageTask.h (149244 => 149245)
--- trunk/Source/WebCore/storage/StorageTask.h 2013-04-27 20:44:04 UTC (rev 149244)
+++ trunk/Source/WebCore/storage/StorageTask.h 2013-04-27 20:55:45 UTC (rev 149245)
@@ -38,25 +38,19 @@
class StorageTask {
WTF_MAKE_NONCOPYABLE(StorageTask); WTF_MAKE_FAST_ALLOCATED;
public:
- enum Type { Dispatch, SetOriginDetails, DeleteOrigin };
+ enum Type { Dispatch };
~StorageTask();
static PassOwnPtr<StorageTask> createDispatch(const Function<void()>& function) { return adoptPtr(new StorageTask(Dispatch, function)); }
- 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)); }
void performTask();
private:
StorageTask(Type, const Function<void()>&);
- StorageTask(Type, const String& originIdentifier);
- StorageTask(Type, const String& originIdentifier, const String& databaseFilename);
Type m_type;
Function<void ()> m_function;
- String m_originIdentifier;
- String m_databaseFilename;
};
} // namespace WebCore
Modified: trunk/Source/WebCore/storage/StorageTracker.cpp (149244 => 149245)
--- trunk/Source/WebCore/storage/StorageTracker.cpp 2013-04-27 20:44:04 UTC (rev 149244)
+++ trunk/Source/WebCore/storage/StorageTracker.cpp 2013-04-27 20:55:45 UTC (rev 149245)
@@ -302,25 +302,17 @@
m_originSet.add(originIdentifier);
}
- OwnPtr<StorageTask> task = StorageTask::createSetOriginDetails(originIdentifier.isolatedCopy(), databaseFile);
+ Function<void ()> function = bind(&StorageTracker::syncSetOriginDetails, this, originIdentifier.isolatedCopy(), databaseFile.isolatedCopy());
if (isMainThread()) {
ASSERT(m_thread);
- m_thread->scheduleTask(task.release());
- } else
- callOnMainThread(scheduleTask, reinterpret_cast<void*>(task.leakPtr()));
+ m_thread->dispatch(function);
+ } else {
+ // FIXME: This weird ping-ponging was done to fix a deadlock. We should figure out a cleaner way to avoid it instead.
+ callOnMainThread(bind(&StorageThread::dispatch, m_thread.get(), function));
+ }
}
-void StorageTracker::scheduleTask(void* taskIn)
-{
- ASSERT(isMainThread());
- ASSERT(StorageTracker::tracker().m_thread);
-
- OwnPtr<StorageTask> task = adoptPtr(reinterpret_cast<StorageTask*>(taskIn));
-
- StorageTracker::tracker().m_thread->scheduleTask(task.release());
-}
-
void StorageTracker::syncSetOriginDetails(const String& originIdentifier, const String& databaseFile)
{
ASSERT(!isMainThread());
@@ -483,8 +475,8 @@
willDeleteOrigin(originId);
m_originSet.remove(originId);
}
-
- m_thread->scheduleTask(StorageTask::createDeleteOrigin(originId));
+
+ m_thread->dispatch(bind(&StorageTracker::syncDeleteOrigin, this, originId.isolatedCopy()));
}
void StorageTracker::syncDeleteOrigin(const String& originIdentifier)
Modified: trunk/Source/WebCore/storage/StorageTracker.h (149244 => 149245)
--- trunk/Source/WebCore/storage/StorageTracker.h 2013-04-27 20:44:04 UTC (rev 149244)
+++ trunk/Source/WebCore/storage/StorageTracker.h 2013-04-27 20:55:45 UTC (rev 149245)
@@ -79,7 +79,6 @@
private:
explicit StorageTracker(const String& storagePath);
- static void scheduleTask(void*);
void internalInitialize();