| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Apple Inc. All rights reserved. | 2 * Copyright (C) 2012 Apple 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 | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 : m_databaseContextRegisteredCount(0) | 68 : m_databaseContextRegisteredCount(0) |
| 69 , m_databaseContextInstanceCount(0) | 69 , m_databaseContextInstanceCount(0) |
| 70 #endif | 70 #endif |
| 71 { | 71 { |
| 72 } | 72 } |
| 73 | 73 |
| 74 DatabaseManager::~DatabaseManager() | 74 DatabaseManager::~DatabaseManager() |
| 75 { | 75 { |
| 76 } | 76 } |
| 77 | 77 |
| 78 class DatabaseCreationCallbackTask final : public ExecutionContextTask { | 78 // This is just for ignoring DatabaseCallback::handleEvent()'s return value. |
| 79 public: | 79 static void databaseCallbackHandleEvent(DatabaseCallback* callback, Database* da
tabase) |
| 80 static std::unique_ptr<DatabaseCreationCallbackTask> create(Database* databa
se, DatabaseCallback* creationCallback) | 80 { |
| 81 { | 81 callback->handleEvent(database); |
| 82 return wrapUnique(new DatabaseCreationCallbackTask(database, creationCal
lback)); | 82 } |
| 83 } | |
| 84 | |
| 85 void performTask(ExecutionContext*) override | |
| 86 { | |
| 87 m_creationCallback->handleEvent(m_database.get()); | |
| 88 } | |
| 89 | |
| 90 private: | |
| 91 DatabaseCreationCallbackTask(Database* database, DatabaseCallback* callback) | |
| 92 : m_database(database) | |
| 93 , m_creationCallback(callback) | |
| 94 { | |
| 95 } | |
| 96 | |
| 97 Persistent<Database> m_database; | |
| 98 Persistent<DatabaseCallback> m_creationCallback; | |
| 99 }; | |
| 100 | 83 |
| 101 DatabaseContext* DatabaseManager::existingDatabaseContextFor(ExecutionContext* c
ontext) | 84 DatabaseContext* DatabaseManager::existingDatabaseContextFor(ExecutionContext* c
ontext) |
| 102 { | 85 { |
| 103 ASSERT(m_databaseContextRegisteredCount >= 0); | 86 ASSERT(m_databaseContextRegisteredCount >= 0); |
| 104 ASSERT(m_databaseContextInstanceCount >= 0); | 87 ASSERT(m_databaseContextInstanceCount >= 0); |
| 105 ASSERT(m_databaseContextRegisteredCount <= m_databaseContextInstanceCount); | 88 ASSERT(m_databaseContextRegisteredCount <= m_databaseContextInstanceCount); |
| 106 return m_contextMap.get(context); | 89 return m_contextMap.get(context); |
| 107 } | 90 } |
| 108 | 91 |
| 109 DatabaseContext* DatabaseManager::databaseContextFor(ExecutionContext* context) | 92 DatabaseContext* DatabaseManager::databaseContextFor(ExecutionContext* context) |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 Database* database = openDatabaseInternal(context, name, | 190 Database* database = openDatabaseInternal(context, name, |
| 208 expectedVersion, displayName, estimatedSize, setVersionInNewDatabase, er
ror, errorMessage); | 191 expectedVersion, displayName, estimatedSize, setVersionInNewDatabase, er
ror, errorMessage); |
| 209 if (!database) | 192 if (!database) |
| 210 return nullptr; | 193 return nullptr; |
| 211 | 194 |
| 212 databaseContextFor(context)->setHasOpenDatabases(); | 195 databaseContextFor(context)->setHasOpenDatabases(); |
| 213 DatabaseClient::from(context)->didOpenDatabase(database, context->getSecurit
yOrigin()->host(), name, expectedVersion); | 196 DatabaseClient::from(context)->didOpenDatabase(database, context->getSecurit
yOrigin()->host(), name, expectedVersion); |
| 214 | 197 |
| 215 if (database->isNew() && creationCallback) { | 198 if (database->isNew() && creationCallback) { |
| 216 WTF_LOG(StorageAPI, "Scheduling DatabaseCreationCallbackTask for databas
e %p\n", database); | 199 WTF_LOG(StorageAPI, "Scheduling DatabaseCreationCallbackTask for databas
e %p\n", database); |
| 217 database->getExecutionContext()->postTask(BLINK_FROM_HERE, DatabaseCreat
ionCallbackTask::create(database, creationCallback), "openDatabase"); | 200 database->getExecutionContext()->postTask(BLINK_FROM_HERE, createSameThr
eadTask(&databaseCallbackHandleEvent, wrapPersistent(creationCallback), wrapPers
istent(database)), "openDatabase"); |
| 218 } | 201 } |
| 219 | 202 |
| 220 ASSERT(database); | 203 ASSERT(database); |
| 221 return database; | 204 return database; |
| 222 } | 205 } |
| 223 | 206 |
| 224 String DatabaseManager::fullPathForDatabase(SecurityOrigin* origin, const String
& name, bool createIfDoesNotExist) | 207 String DatabaseManager::fullPathForDatabase(SecurityOrigin* origin, const String
& name, bool createIfDoesNotExist) |
| 225 { | 208 { |
| 226 return DatabaseTracker::tracker().fullPathForDatabase(origin, name, createIf
DoesNotExist); | 209 return DatabaseTracker::tracker().fullPathForDatabase(origin, name, createIf
DoesNotExist); |
| 227 } | 210 } |
| 228 | 211 |
| 229 void DatabaseManager::logErrorMessage(ExecutionContext* context, const String& m
essage) | 212 void DatabaseManager::logErrorMessage(ExecutionContext* context, const String& m
essage) |
| 230 { | 213 { |
| 231 context->addConsoleMessage(ConsoleMessage::create(StorageMessageSource, Erro
rMessageLevel, message)); | 214 context->addConsoleMessage(ConsoleMessage::create(StorageMessageSource, Erro
rMessageLevel, message)); |
| 232 } | 215 } |
| 233 | 216 |
| 234 } // namespace blink | 217 } // namespace blink |
| OLD | NEW |