Index: third_party/WebKit/Source/modules/webdatabase/DatabaseTracker.cpp |
diff --git a/third_party/WebKit/Source/modules/webdatabase/DatabaseTracker.cpp b/third_party/WebKit/Source/modules/webdatabase/DatabaseTracker.cpp |
index 3c31da4684da9313397612866157f75d57771d1b..4d0008813ff1bc4e5438b73cc5b4be80dde61949 100644 |
--- a/third_party/WebKit/Source/modules/webdatabase/DatabaseTracker.cpp |
+++ b/third_party/WebKit/Source/modules/webdatabase/DatabaseTracker.cpp |
@@ -30,6 +30,7 @@ |
#include "modules/webdatabase/DatabaseTracker.h" |
+#include "core/dom/CrossThreadTask.h" |
#include "core/dom/Document.h" |
#include "core/dom/ExecutionContext.h" |
#include "core/dom/ExecutionContextTask.h" |
@@ -45,6 +46,7 @@ |
#include "public/platform/WebSecurityOrigin.h" |
#include "public/platform/WebTraceLocation.h" |
#include "wtf/Assertions.h" |
+#include "wtf/Functional.h" |
#include "wtf/PtrUtil.h" |
#include "wtf/StdLibExtras.h" |
@@ -166,31 +168,6 @@ unsigned long long DatabaseTracker::getMaxSizeForDatabase(const Database* databa |
return databaseSize + spaceAvailable; |
} |
-class DatabaseTracker::CloseOneDatabaseImmediatelyTask final : public ExecutionContextTask { |
-public: |
- static std::unique_ptr<CloseOneDatabaseImmediatelyTask> create(const String& originString, const String& name, Database* database) |
- { |
- return wrapUnique(new CloseOneDatabaseImmediatelyTask(originString, name, database)); |
- } |
- |
- void performTask(ExecutionContext*) override |
- { |
- DatabaseTracker::tracker().closeOneDatabaseImmediately(m_originString, m_name, m_database); |
- } |
- |
-private: |
- CloseOneDatabaseImmediatelyTask(const String& originString, const String& name, Database* database) |
- : m_originString(originString.isolatedCopy()) |
- , m_name(name.isolatedCopy()) |
- , m_database(database) |
- { |
- } |
- |
- String m_originString; |
- String m_name; |
- CrossThreadPersistent<Database> m_database; |
-}; |
- |
void DatabaseTracker::closeDatabasesImmediately(SecurityOrigin* origin, const String& name) |
{ |
String originString = origin->toRawString(); |
@@ -208,7 +185,7 @@ void DatabaseTracker::closeDatabasesImmediately(SecurityOrigin* origin, const St |
// We have to call closeImmediately() on the context thread. |
for (DatabaseSet::iterator it = databaseSet->begin(); it != databaseSet->end(); ++it) |
- (*it)->getDatabaseContext()->getExecutionContext()->postTask(BLINK_FROM_HERE, CloseOneDatabaseImmediatelyTask::create(originString, name, *it)); |
+ (*it)->getDatabaseContext()->getExecutionContext()->postTask(BLINK_FROM_HERE, createCrossThreadTask(&DatabaseTracker::closeOneDatabaseImmediately, crossThreadUnretained(this), originString, name, *it)); |
hiroshige
2016/06/26 10:51:02
This CL passes |this| across thread, instead of ca
haraken
2016/06/27 01:13:52
Why don't you use wrapCrossThreadPersistent?
hiroshige
2016/06/27 07:20:06
Because DatabaseTracker is not GCed type.
|
} |
void DatabaseTracker::forEachOpenDatabaseInPage(Page* page, std::unique_ptr<DatabaseCallback> callback) |