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 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 if (!backendDB()) { | 112 if (!backendDB()) { |
113 exceptionState.throwDOMException(InvalidStateError, | 113 exceptionState.throwDOMException(InvalidStateError, |
114 IDBDatabase::databaseClosedErrorMessage); | 114 IDBDatabase::databaseClosedErrorMessage); |
115 return; | 115 return; |
116 } | 116 } |
117 | 117 |
118 backendDB()->renameObjectStore(m_transaction->id(), id(), name); | 118 backendDB()->renameObjectStore(m_transaction->id(), id(), name); |
119 m_transaction->objectStoreRenamed(m_metadata.name, name); | 119 m_transaction->objectStoreRenamed(m_metadata.name, name); |
120 m_metadata.name = name; | 120 m_metadata.name = name; |
121 | 121 |
122 // The name inside the database's version of the object store metadata is used
by IDBDatabase.objectStoreNames(). | 122 // The name inside the database's version of the object store metadata is used |
123 // If the transaction is aborted, this name will be reverted when the metadata
is overwritten with the previousMetadata in IDBTransaction. | 123 // by IDBDatabase.objectStoreNames(). If the transaction is aborted, this |
| 124 // name will be reverted when the metadata is overwritten with the |
| 125 // previousMetadata in IDBTransaction. |
124 m_transaction->db()->objectStoreRenamed(id(), name); | 126 m_transaction->db()->objectStoreRenamed(id(), name); |
125 } | 127 } |
126 | 128 |
127 ScriptValue IDBObjectStore::keyPath(ScriptState* scriptState) const { | 129 ScriptValue IDBObjectStore::keyPath(ScriptState* scriptState) const { |
128 return ScriptValue::from(scriptState, metadata().keyPath); | 130 return ScriptValue::from(scriptState, metadata().keyPath); |
129 } | 131 } |
130 | 132 |
131 DOMStringList* IDBObjectStore::indexNames() const { | 133 DOMStringList* IDBObjectStore::indexNames() const { |
132 IDB_TRACE("IDBObjectStore::indexNames"); | 134 IDB_TRACE("IDBObjectStore::indexNames"); |
133 DOMStringList* indexNames = DOMStringList::create(DOMStringList::IndexedDB); | 135 DOMStringList* indexNames = DOMStringList::create(DOMStringList::IndexedDB); |
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
422 const bool usesInLineKeys = !keyPath.isNull(); | 424 const bool usesInLineKeys = !keyPath.isNull(); |
423 const bool hasKeyGenerator = autoIncrement(); | 425 const bool hasKeyGenerator = autoIncrement(); |
424 | 426 |
425 if (putMode != WebIDBPutModeCursorUpdate && usesInLineKeys && key) { | 427 if (putMode != WebIDBPutModeCursorUpdate && usesInLineKeys && key) { |
426 exceptionState.throwDOMException(DataError, | 428 exceptionState.throwDOMException(DataError, |
427 "The object store uses in-line keys and " | 429 "The object store uses in-line keys and " |
428 "the key parameter was provided."); | 430 "the key parameter was provided."); |
429 return nullptr; | 431 return nullptr; |
430 } | 432 } |
431 | 433 |
432 // This test logically belongs in IDBCursor, but must operate on the cloned va
lue. | 434 // This test logically belongs in IDBCursor, but must operate on the cloned |
| 435 // value. |
433 if (putMode == WebIDBPutModeCursorUpdate && usesInLineKeys) { | 436 if (putMode == WebIDBPutModeCursorUpdate && usesInLineKeys) { |
434 DCHECK(key); | 437 DCHECK(key); |
435 if (clone.isEmpty()) | 438 if (clone.isEmpty()) |
436 clone = | 439 clone = |
437 deserializeScriptValue(scriptState, serializedValue.get(), &blobInfo); | 440 deserializeScriptValue(scriptState, serializedValue.get(), &blobInfo); |
438 IDBKey* keyPathKey = ScriptValue::to<IDBKey*>(scriptState->isolate(), clone, | 441 IDBKey* keyPathKey = ScriptValue::to<IDBKey*>(scriptState->isolate(), clone, |
439 exceptionState, keyPath); | 442 exceptionState, keyPath); |
440 if (exceptionState.hadException()) | 443 if (exceptionState.hadException()) |
441 return nullptr; | 444 return nullptr; |
442 if (!keyPathKey || !keyPathKey->isEqual(key)) { | 445 if (!keyPathKey || !keyPathKey->isEqual(key)) { |
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
763 | 766 |
764 DCHECK(!exceptionState.hadException()); | 767 DCHECK(!exceptionState.hadException()); |
765 if (exceptionState.hadException()) | 768 if (exceptionState.hadException()) |
766 return nullptr; | 769 return nullptr; |
767 | 770 |
768 IDBRequest* indexRequest = | 771 IDBRequest* indexRequest = |
769 openCursor(scriptState, nullptr, WebIDBCursorDirectionNext, | 772 openCursor(scriptState, nullptr, WebIDBCursorDirectionNext, |
770 WebIDBTaskTypePreemptive); | 773 WebIDBTaskTypePreemptive); |
771 indexRequest->preventPropagation(); | 774 indexRequest->preventPropagation(); |
772 | 775 |
773 // This is kept alive by being the success handler of the request, which is in
turn kept alive by the owning transaction. | 776 // This is kept alive by being the success handler of the request, which is in |
| 777 // turn kept alive by the owning transaction. |
774 IndexPopulator* indexPopulator = | 778 IndexPopulator* indexPopulator = |
775 IndexPopulator::create(scriptState, transaction()->db(), | 779 IndexPopulator::create(scriptState, transaction()->db(), |
776 m_transaction->id(), id(), indexMetadata); | 780 m_transaction->id(), id(), indexMetadata); |
777 indexRequest->setOnsuccess(indexPopulator); | 781 indexRequest->setOnsuccess(indexPopulator); |
778 return index; | 782 return index; |
779 } | 783 } |
780 | 784 |
781 IDBIndex* IDBObjectStore::index(const String& name, | 785 IDBIndex* IDBObjectStore::index(const String& name, |
782 ExceptionState& exceptionState) { | 786 ExceptionState& exceptionState) { |
783 IDB_TRACE("IDBObjectStore::index"); | 787 IDB_TRACE("IDBObjectStore::index"); |
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1035 } | 1039 } |
1036 } | 1040 } |
1037 return IDBIndexMetadata::InvalidId; | 1041 return IDBIndexMetadata::InvalidId; |
1038 } | 1042 } |
1039 | 1043 |
1040 WebIDBDatabase* IDBObjectStore::backendDB() const { | 1044 WebIDBDatabase* IDBObjectStore::backendDB() const { |
1041 return m_transaction->backendDB(); | 1045 return m_transaction->backendDB(); |
1042 } | 1046 } |
1043 | 1047 |
1044 } // namespace blink | 1048 } // namespace blink |
OLD | NEW |