| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 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 | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. 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 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 IDBDatabase* IDBDatabase::create(ExecutionContext* context, PassOwnPtr<WebIDBDat
abase> database, IDBDatabaseCallbacks* callbacks) | 71 IDBDatabase* IDBDatabase::create(ExecutionContext* context, PassOwnPtr<WebIDBDat
abase> database, IDBDatabaseCallbacks* callbacks) |
| 72 { | 72 { |
| 73 IDBDatabase* idbDatabase = new IDBDatabase(context, database, callbacks); | 73 IDBDatabase* idbDatabase = new IDBDatabase(context, database, callbacks); |
| 74 idbDatabase->suspendIfNeeded(); | 74 idbDatabase->suspendIfNeeded(); |
| 75 return idbDatabase; | 75 return idbDatabase; |
| 76 } | 76 } |
| 77 | 77 |
| 78 IDBDatabase::IDBDatabase(ExecutionContext* context, PassOwnPtr<WebIDBDatabase> b
ackend, IDBDatabaseCallbacks* callbacks) | 78 IDBDatabase::IDBDatabase(ExecutionContext* context, PassOwnPtr<WebIDBDatabase> b
ackend, IDBDatabaseCallbacks* callbacks) |
| 79 : ActiveDOMObject(context) | 79 : ActiveDOMObject(context) |
| 80 , m_backend(backend) | 80 , m_backend(backend) |
| 81 , m_closePending(false) | |
| 82 , m_contextStopped(false) | |
| 83 , m_databaseCallbacks(callbacks) | 81 , m_databaseCallbacks(callbacks) |
| 84 { | 82 { |
| 85 m_databaseCallbacks->connect(this); | 83 m_databaseCallbacks->connect(this); |
| 86 } | 84 } |
| 87 | 85 |
| 88 IDBDatabase::~IDBDatabase() | 86 IDBDatabase::~IDBDatabase() |
| 89 { | 87 { |
| 90 if (!m_closePending && m_backend) | 88 if (!m_closePending && m_backend) |
| 91 m_backend->close(); | 89 m_backend->close(); |
| 92 } | 90 } |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 | 157 |
| 160 void IDBDatabase::onComplete(int64_t transactionId) | 158 void IDBDatabase::onComplete(int64_t transactionId) |
| 161 { | 159 { |
| 162 ASSERT(m_transactions.contains(transactionId)); | 160 ASSERT(m_transactions.contains(transactionId)); |
| 163 m_transactions.get(transactionId)->onComplete(); | 161 m_transactions.get(transactionId)->onComplete(); |
| 164 } | 162 } |
| 165 | 163 |
| 166 PassRefPtrWillBeRawPtr<DOMStringList> IDBDatabase::objectStoreNames() const | 164 PassRefPtrWillBeRawPtr<DOMStringList> IDBDatabase::objectStoreNames() const |
| 167 { | 165 { |
| 168 RefPtrWillBeRawPtr<DOMStringList> objectStoreNames = DOMStringList::create(D
OMStringList::IndexedDB); | 166 RefPtrWillBeRawPtr<DOMStringList> objectStoreNames = DOMStringList::create(D
OMStringList::IndexedDB); |
| 169 for (IDBDatabaseMetadata::ObjectStoreMap::const_iterator it = m_metadata.obj
ectStores.begin(); it != m_metadata.objectStores.end(); ++it) | 167 for (const auto& it : m_metadata.objectStores) |
| 170 objectStoreNames->append(it->value.name); | 168 objectStoreNames->append(it.value.name); |
| 171 objectStoreNames->sort(); | 169 objectStoreNames->sort(); |
| 172 return objectStoreNames.release(); | 170 return objectStoreNames.release(); |
| 173 } | 171 } |
| 174 | 172 |
| 175 void IDBDatabase::version(UnsignedLongLongOrString& result) const | 173 void IDBDatabase::version(UnsignedLongLongOrString& result) const |
| 176 { | 174 { |
| 177 if (m_metadata.intVersion == IDBDatabaseMetadata::NoIntVersion) | 175 if (m_metadata.intVersion == IDBDatabaseMetadata::NoIntVersion) |
| 178 result.setString(m_metadata.version); | 176 result.setString(m_metadata.version); |
| 179 else | 177 else |
| 180 result.setUnsignedLongLong(m_metadata.intVersion); | 178 result.setUnsignedLongLong(m_metadata.intVersion); |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 321 } | 319 } |
| 322 | 320 |
| 323 int64_t transactionId = nextTransactionId(); | 321 int64_t transactionId = nextTransactionId(); |
| 324 m_backend->createTransaction(transactionId, WebIDBDatabaseCallbacksImpl::cre
ate(m_databaseCallbacks).leakPtr(), objectStoreIds, mode); | 322 m_backend->createTransaction(transactionId, WebIDBDatabaseCallbacksImpl::cre
ate(m_databaseCallbacks).leakPtr(), objectStoreIds, mode); |
| 325 | 323 |
| 326 return IDBTransaction::create(scriptState, transactionId, scope, mode, this)
; | 324 return IDBTransaction::create(scriptState, transactionId, scope, mode, this)
; |
| 327 } | 325 } |
| 328 | 326 |
| 329 void IDBDatabase::forceClose() | 327 void IDBDatabase::forceClose() |
| 330 { | 328 { |
| 331 for (TransactionMap::const_iterator::Values it = m_transactions.begin().valu
es(), end = m_transactions.end().values(); it != end; ++it) | 329 for (const auto& it : m_transactions) |
| 332 (*it)->abort(IGNORE_EXCEPTION); | 330 it.value->abort(IGNORE_EXCEPTION); |
| 333 this->close(); | 331 this->close(); |
| 334 enqueueEvent(Event::create(EventTypeNames::close)); | 332 enqueueEvent(Event::create(EventTypeNames::close)); |
| 335 } | 333 } |
| 336 | 334 |
| 337 void IDBDatabase::close() | 335 void IDBDatabase::close() |
| 338 { | 336 { |
| 339 IDB_TRACE("IDBDatabase::close"); | 337 IDB_TRACE("IDBDatabase::close"); |
| 340 if (m_closePending) | 338 if (m_closePending) |
| 341 return; | 339 return; |
| 342 | 340 |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 410 } | 408 } |
| 411 | 409 |
| 412 bool result = EventTarget::dispatchEventInternal(event.get()); | 410 bool result = EventTarget::dispatchEventInternal(event.get()); |
| 413 if (event->type() == EventTypeNames::versionchange && !m_closePending && m_b
ackend) | 411 if (event->type() == EventTypeNames::versionchange && !m_closePending && m_b
ackend) |
| 414 m_backend->versionChangeIgnored(); | 412 m_backend->versionChangeIgnored(); |
| 415 return result; | 413 return result; |
| 416 } | 414 } |
| 417 | 415 |
| 418 int64_t IDBDatabase::findObjectStoreId(const String& name) const | 416 int64_t IDBDatabase::findObjectStoreId(const String& name) const |
| 419 { | 417 { |
| 420 for (IDBDatabaseMetadata::ObjectStoreMap::const_iterator it = m_metadata.obj
ectStores.begin(); it != m_metadata.objectStores.end(); ++it) { | 418 for (const auto& it : m_metadata.objectStores) { |
| 421 if (it->value.name == name) { | 419 if (it.value.name == name) { |
| 422 ASSERT(it->key != IDBObjectStoreMetadata::InvalidId); | 420 ASSERT(it.key != IDBObjectStoreMetadata::InvalidId); |
| 423 return it->key; | 421 return it.key; |
| 424 } | 422 } |
| 425 } | 423 } |
| 426 return IDBObjectStoreMetadata::InvalidId; | 424 return IDBObjectStoreMetadata::InvalidId; |
| 427 } | 425 } |
| 428 | 426 |
| 429 bool IDBDatabase::hasPendingActivity() const | 427 bool IDBDatabase::hasPendingActivity() const |
| 430 { | 428 { |
| 431 // The script wrapper must not be collected before the object is closed or | 429 // The script wrapper must not be collected before the object is closed or |
| 432 // we can't fire a "versionchange" event to let script manually close the co
nnection. | 430 // we can't fire a "versionchange" event to let script manually close the co
nnection. |
| 433 return !m_closePending && hasEventListeners() && !m_contextStopped; | 431 return !m_closePending && hasEventListeners() && !m_contextStopped; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 450 { | 448 { |
| 451 return EventTargetNames::IDBDatabase; | 449 return EventTargetNames::IDBDatabase; |
| 452 } | 450 } |
| 453 | 451 |
| 454 ExecutionContext* IDBDatabase::executionContext() const | 452 ExecutionContext* IDBDatabase::executionContext() const |
| 455 { | 453 { |
| 456 return ActiveDOMObject::executionContext(); | 454 return ActiveDOMObject::executionContext(); |
| 457 } | 455 } |
| 458 | 456 |
| 459 } // namespace blink | 457 } // namespace blink |
| OLD | NEW |