OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 14 matching lines...) Expand all Loading... |
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 */ | 29 */ |
30 | 30 |
31 #include "modules/webdatabase/DatabaseTracker.h" | 31 #include "modules/webdatabase/DatabaseTracker.h" |
32 | 32 |
33 #include "core/dom/Document.h" | 33 #include "core/dom/Document.h" |
34 #include "core/dom/ExecutionContext.h" | 34 #include "core/dom/ExecutionContext.h" |
35 #include "core/dom/ExecutionContextTask.h" | |
36 #include "core/dom/TaskRunnerHelper.h" | 35 #include "core/dom/TaskRunnerHelper.h" |
37 #include "modules/webdatabase/Database.h" | 36 #include "modules/webdatabase/Database.h" |
38 #include "modules/webdatabase/DatabaseClient.h" | 37 #include "modules/webdatabase/DatabaseClient.h" |
39 #include "modules/webdatabase/DatabaseContext.h" | 38 #include "modules/webdatabase/DatabaseContext.h" |
40 #include "modules/webdatabase/QuotaTracker.h" | 39 #include "modules/webdatabase/QuotaTracker.h" |
41 #include "modules/webdatabase/sqlite/SQLiteFileSystem.h" | 40 #include "modules/webdatabase/sqlite/SQLiteFileSystem.h" |
| 41 #include "platform/CrossThreadFunctional.h" |
42 #include "platform/weborigin/SecurityOrigin.h" | 42 #include "platform/weborigin/SecurityOrigin.h" |
43 #include "platform/weborigin/SecurityOriginHash.h" | 43 #include "platform/weborigin/SecurityOriginHash.h" |
44 #include "public/platform/Platform.h" | 44 #include "public/platform/Platform.h" |
45 #include "public/platform/WebDatabaseObserver.h" | 45 #include "public/platform/WebDatabaseObserver.h" |
46 #include "public/platform/WebSecurityOrigin.h" | 46 #include "public/platform/WebSecurityOrigin.h" |
47 #include "public/platform/WebTraceLocation.h" | 47 #include "public/platform/WebTraceLocation.h" |
48 #include "wtf/Assertions.h" | 48 #include "wtf/Assertions.h" |
49 #include "wtf/Functional.h" | 49 #include "wtf/Functional.h" |
50 #include "wtf/PtrUtil.h" | 50 #include "wtf/PtrUtil.h" |
51 #include "wtf/StdLibExtras.h" | 51 #include "wtf/StdLibExtras.h" |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 DatabaseNameMap* nameMap = m_openDatabaseMap->at(originString); | 180 DatabaseNameMap* nameMap = m_openDatabaseMap->at(originString); |
181 if (!nameMap) | 181 if (!nameMap) |
182 return; | 182 return; |
183 | 183 |
184 DatabaseSet* databaseSet = nameMap->at(name); | 184 DatabaseSet* databaseSet = nameMap->at(name); |
185 if (!databaseSet) | 185 if (!databaseSet) |
186 return; | 186 return; |
187 | 187 |
188 // We have to call closeImmediately() on the context thread. | 188 // We have to call closeImmediately() on the context thread. |
189 for (DatabaseSet::iterator it = databaseSet->begin(); | 189 for (DatabaseSet::iterator it = databaseSet->begin(); |
190 it != databaseSet->end(); ++it) | 190 it != databaseSet->end(); ++it) { |
191 (*it)->getDatabaseContext()->getExecutionContext()->postTask( | 191 (*it)->getWebTaskRunner()->postTask( |
192 TaskType::DatabaseAccess, BLINK_FROM_HERE, | 192 BLINK_FROM_HERE, |
193 createCrossThreadTask(&DatabaseTracker::closeOneDatabaseImmediately, | 193 crossThreadBind(&DatabaseTracker::closeOneDatabaseImmediately, |
194 crossThreadUnretained(this), originString, name, | 194 crossThreadUnretained(this), originString, name, *it)); |
195 *it)); | 195 } |
196 } | 196 } |
197 | 197 |
198 void DatabaseTracker::forEachOpenDatabaseInPage( | 198 void DatabaseTracker::forEachOpenDatabaseInPage( |
199 Page* page, | 199 Page* page, |
200 std::unique_ptr<DatabaseCallback> callback) { | 200 std::unique_ptr<DatabaseCallback> callback) { |
201 MutexLocker openDatabaseMapLock(m_openDatabaseMapGuard); | 201 MutexLocker openDatabaseMapLock(m_openDatabaseMapGuard); |
202 if (!m_openDatabaseMap) | 202 if (!m_openDatabaseMap) |
203 return; | 203 return; |
204 for (auto& originMap : *m_openDatabaseMap) { | 204 for (auto& originMap : *m_openDatabaseMap) { |
205 for (auto& nameDatabaseSet : *originMap.value) { | 205 for (auto& nameDatabaseSet : *originMap.value) { |
(...skipping 28 matching lines...) Expand all Loading... |
234 if (found == databaseSet->end()) | 234 if (found == databaseSet->end()) |
235 return; | 235 return; |
236 } | 236 } |
237 | 237 |
238 // And we have to call closeImmediately() without our collection lock being | 238 // And we have to call closeImmediately() without our collection lock being |
239 // held. | 239 // held. |
240 database->closeImmediately(); | 240 database->closeImmediately(); |
241 } | 241 } |
242 | 242 |
243 } // namespace blink | 243 } // namespace blink |
OLD | NEW |