| 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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 : m_databaseContextRegisteredCount(0) | 63 : m_databaseContextRegisteredCount(0) |
| 64 , m_databaseContextInstanceCount(0) | 64 , m_databaseContextInstanceCount(0) |
| 65 #endif | 65 #endif |
| 66 { | 66 { |
| 67 m_server = new DatabaseServer; | 67 m_server = new DatabaseServer; |
| 68 ASSERT(m_server); // We should always have a server to work with. | 68 ASSERT(m_server); // We should always have a server to work with. |
| 69 } | 69 } |
| 70 | 70 |
| 71 class DatabaseCreationCallbackTask : public ExecutionContextTask { | 71 class DatabaseCreationCallbackTask : public ExecutionContextTask { |
| 72 public: | 72 public: |
| 73 static PassOwnPtr<DatabaseCreationCallbackTask> create(PassRefPtr<Database>
database, PassRefPtr<DatabaseCallback> creationCallback) | 73 static PassOwnPtr<DatabaseCreationCallbackTask> create(PassRefPtr<Database>
database, PassOwnPtr<DatabaseCallback> creationCallback) |
| 74 { | 74 { |
| 75 return adoptPtr(new DatabaseCreationCallbackTask(database, creationCallb
ack)); | 75 return adoptPtr(new DatabaseCreationCallbackTask(database, creationCallb
ack)); |
| 76 } | 76 } |
| 77 | 77 |
| 78 virtual void performTask(ExecutionContext*) | 78 virtual void performTask(ExecutionContext*) |
| 79 { | 79 { |
| 80 m_creationCallback->handleEvent(m_database.get()); | 80 m_creationCallback->handleEvent(m_database.get()); |
| 81 } | 81 } |
| 82 | 82 |
| 83 private: | 83 private: |
| 84 DatabaseCreationCallbackTask(PassRefPtr<Database> database, PassRefPtr<Datab
aseCallback> callback) | 84 DatabaseCreationCallbackTask(PassRefPtr<Database> database, PassOwnPtr<Datab
aseCallback> callback) |
| 85 : m_database(database) | 85 : m_database(database) |
| 86 , m_creationCallback(callback) | 86 , m_creationCallback(callback) |
| 87 { | 87 { |
| 88 } | 88 } |
| 89 | 89 |
| 90 RefPtr<Database> m_database; | 90 RefPtr<Database> m_database; |
| 91 RefPtr<DatabaseCallback> m_creationCallback; | 91 OwnPtr<DatabaseCallback> m_creationCallback; |
| 92 }; | 92 }; |
| 93 | 93 |
| 94 PassRefPtr<DatabaseContext> DatabaseManager::existingDatabaseContextFor(Executio
nContext* context) | 94 PassRefPtr<DatabaseContext> DatabaseManager::existingDatabaseContextFor(Executio
nContext* context) |
| 95 { | 95 { |
| 96 MutexLocker locker(m_contextMapLock); | 96 MutexLocker locker(m_contextMapLock); |
| 97 | 97 |
| 98 ASSERT(m_databaseContextRegisteredCount >= 0); | 98 ASSERT(m_databaseContextRegisteredCount >= 0); |
| 99 ASSERT(m_databaseContextInstanceCount >= 0); | 99 ASSERT(m_databaseContextInstanceCount >= 0); |
| 100 ASSERT(m_databaseContextRegisteredCount <= m_databaseContextInstanceCount); | 100 ASSERT(m_databaseContextRegisteredCount <= m_databaseContextInstanceCount); |
| 101 | 101 |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 default: | 209 default: |
| 210 ASSERT_NOT_REACHED(); | 210 ASSERT_NOT_REACHED(); |
| 211 } | 211 } |
| 212 } | 212 } |
| 213 | 213 |
| 214 return backend.release(); | 214 return backend.release(); |
| 215 } | 215 } |
| 216 | 216 |
| 217 PassRefPtr<Database> DatabaseManager::openDatabase(ExecutionContext* context, | 217 PassRefPtr<Database> DatabaseManager::openDatabase(ExecutionContext* context, |
| 218 const String& name, const String& expectedVersion, const String& displayName
, | 218 const String& name, const String& expectedVersion, const String& displayName
, |
| 219 unsigned long estimatedSize, PassRefPtr<DatabaseCallback> creationCallback, | 219 unsigned long estimatedSize, PassOwnPtr<DatabaseCallback> creationCallback, |
| 220 DatabaseError& error, String& errorMessage) | 220 DatabaseError& error, String& errorMessage) |
| 221 { | 221 { |
| 222 ASSERT(error == DatabaseError::None); | 222 ASSERT(error == DatabaseError::None); |
| 223 | 223 |
| 224 bool setVersionInNewDatabase = !creationCallback; | 224 bool setVersionInNewDatabase = !creationCallback; |
| 225 RefPtr<DatabaseBackendBase> backend = openDatabaseBackend(context, DatabaseT
ype::Async, name, | 225 RefPtr<DatabaseBackendBase> backend = openDatabaseBackend(context, DatabaseT
ype::Async, name, |
| 226 expectedVersion, displayName, estimatedSize, setVersionInNewDatabase, er
ror, errorMessage); | 226 expectedVersion, displayName, estimatedSize, setVersionInNewDatabase, er
ror, errorMessage); |
| 227 if (!backend) | 227 if (!backend) |
| 228 return 0; | 228 return 0; |
| 229 | 229 |
| 230 RefPtr<Database> database = Database::create(context, backend); | 230 RefPtr<Database> database = Database::create(context, backend); |
| 231 | 231 |
| 232 RefPtr<DatabaseContext> databaseContext = databaseContextFor(context); | 232 RefPtr<DatabaseContext> databaseContext = databaseContextFor(context); |
| 233 databaseContext->setHasOpenDatabases(); | 233 databaseContext->setHasOpenDatabases(); |
| 234 InspectorInstrumentation::didOpenDatabase(context, database, context->securi
tyOrigin()->host(), name, expectedVersion); | 234 InspectorInstrumentation::didOpenDatabase(context, database, context->securi
tyOrigin()->host(), name, expectedVersion); |
| 235 | 235 |
| 236 if (backend->isNew() && creationCallback.get()) { | 236 if (backend->isNew() && creationCallback.get()) { |
| 237 WTF_LOG(StorageAPI, "Scheduling DatabaseCreationCallbackTask for databas
e %p\n", database.get()); | 237 WTF_LOG(StorageAPI, "Scheduling DatabaseCreationCallbackTask for databas
e %p\n", database.get()); |
| 238 database->m_executionContext->postTask(DatabaseCreationCallbackTask::cre
ate(database, creationCallback)); | 238 database->m_executionContext->postTask(DatabaseCreationCallbackTask::cre
ate(database, creationCallback)); |
| 239 } | 239 } |
| 240 | 240 |
| 241 ASSERT(database); | 241 ASSERT(database); |
| 242 return database.release(); | 242 return database.release(); |
| 243 } | 243 } |
| 244 | 244 |
| 245 PassRefPtr<DatabaseSync> DatabaseManager::openDatabaseSync(ExecutionContext* con
text, | 245 PassRefPtr<DatabaseSync> DatabaseManager::openDatabaseSync(ExecutionContext* con
text, |
| 246 const String& name, const String& expectedVersion, const String& displayName
, | 246 const String& name, const String& expectedVersion, const String& displayName
, |
| 247 unsigned long estimatedSize, PassRefPtr<DatabaseCallback> creationCallback, | 247 unsigned long estimatedSize, PassOwnPtr<DatabaseCallback> creationCallback, |
| 248 DatabaseError& error, String& errorMessage) | 248 DatabaseError& error, String& errorMessage) |
| 249 { | 249 { |
| 250 ASSERT(context->isContextThread()); | 250 ASSERT(context->isContextThread()); |
| 251 ASSERT(error == DatabaseError::None); | 251 ASSERT(error == DatabaseError::None); |
| 252 | 252 |
| 253 bool setVersionInNewDatabase = !creationCallback; | 253 bool setVersionInNewDatabase = !creationCallback; |
| 254 RefPtr<DatabaseBackendBase> backend = openDatabaseBackend(context, DatabaseT
ype::Sync, name, | 254 RefPtr<DatabaseBackendBase> backend = openDatabaseBackend(context, DatabaseT
ype::Sync, name, |
| 255 expectedVersion, displayName, estimatedSize, setVersionInNewDatabase, er
ror, errorMessage); | 255 expectedVersion, displayName, estimatedSize, setVersionInNewDatabase, er
ror, errorMessage); |
| 256 if (!backend) | 256 if (!backend) |
| 257 return 0; | 257 return 0; |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 if (databaseContext) | 299 if (databaseContext) |
| 300 m_server->interruptAllDatabasesForContext(databaseContext->backend().get
()); | 300 m_server->interruptAllDatabasesForContext(databaseContext->backend().get
()); |
| 301 } | 301 } |
| 302 | 302 |
| 303 void DatabaseManager::logErrorMessage(ExecutionContext* context, const String& m
essage) | 303 void DatabaseManager::logErrorMessage(ExecutionContext* context, const String& m
essage) |
| 304 { | 304 { |
| 305 context->addConsoleMessage(StorageMessageSource, ErrorMessageLevel, message)
; | 305 context->addConsoleMessage(StorageMessageSource, ErrorMessageLevel, message)
; |
| 306 } | 306 } |
| 307 | 307 |
| 308 } // namespace WebCore | 308 } // namespace WebCore |
| OLD | NEW |