| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/indexed_db/webidbdatabase_impl.h" | 5 #include "content/browser/indexed_db/webidbdatabase_impl.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 void WebIDBDatabaseImpl::deleteObjectStore(long long transaction_id, | 46 void WebIDBDatabaseImpl::deleteObjectStore(long long transaction_id, |
| 47 long long object_store_id) { | 47 long long object_store_id) { |
| 48 database_backend_->DeleteObjectStore(transaction_id, object_store_id); | 48 database_backend_->DeleteObjectStore(transaction_id, object_store_id); |
| 49 } | 49 } |
| 50 | 50 |
| 51 void WebIDBDatabaseImpl::createTransaction( | 51 void WebIDBDatabaseImpl::createTransaction( |
| 52 long long id, | 52 long long id, |
| 53 IndexedDBDatabaseCallbacks* /*callbacks*/, | 53 IndexedDBDatabaseCallbacks* /*callbacks*/, |
| 54 const std::vector<int64>& object_store_ids, | 54 const std::vector<int64>& object_store_ids, |
| 55 unsigned short mode) { | 55 unsigned short mode) { |
| 56 if (!database_callbacks_) | 56 if (!database_callbacks_.get()) |
| 57 return; | 57 return; |
| 58 database_backend_->CreateTransaction( | 58 database_backend_->CreateTransaction( |
| 59 id, database_callbacks_.get(), object_store_ids, mode); | 59 id, database_callbacks_.get(), object_store_ids, mode); |
| 60 } | 60 } |
| 61 | 61 |
| 62 void WebIDBDatabaseImpl::close() { | 62 void WebIDBDatabaseImpl::close() { |
| 63 // Use the callbacks passed in to the constructor so that the backend in | 63 // Use the callbacks passed in to the constructor so that the backend in |
| 64 // multi-process chromium knows which database connection is closing. | 64 // multi-process chromium knows which database connection is closing. |
| 65 if (!database_callbacks_) | 65 if (!database_callbacks_.get()) |
| 66 return; | 66 return; |
| 67 database_backend_->Close(database_callbacks_); | 67 database_backend_->Close(database_callbacks_); |
| 68 database_callbacks_ = NULL; | 68 database_callbacks_ = NULL; |
| 69 } | 69 } |
| 70 | 70 |
| 71 void WebIDBDatabaseImpl::forceClose() { | 71 void WebIDBDatabaseImpl::forceClose() { |
| 72 if (!database_callbacks_) | 72 if (!database_callbacks_.get()) |
| 73 return; | 73 return; |
| 74 database_backend_->Close(database_callbacks_); | 74 database_backend_->Close(database_callbacks_); |
| 75 database_callbacks_->OnForcedClose(); | 75 database_callbacks_->OnForcedClose(); |
| 76 database_callbacks_ = NULL; | 76 database_callbacks_ = NULL; |
| 77 } | 77 } |
| 78 | 78 |
| 79 void WebIDBDatabaseImpl::abort(long long transaction_id) { | 79 void WebIDBDatabaseImpl::abort(long long transaction_id) { |
| 80 if (database_backend_) | 80 if (database_backend_.get()) |
| 81 database_backend_->Abort(transaction_id); | 81 database_backend_->Abort(transaction_id); |
| 82 } | 82 } |
| 83 | 83 |
| 84 void WebIDBDatabaseImpl::abort(long long transaction_id, | 84 void WebIDBDatabaseImpl::abort(long long transaction_id, |
| 85 const WebIDBDatabaseError& error) { | 85 const WebIDBDatabaseError& error) { |
| 86 if (database_backend_) | 86 if (database_backend_.get()) |
| 87 database_backend_->Abort(transaction_id, IndexedDBDatabaseError(error)); | 87 database_backend_->Abort(transaction_id, IndexedDBDatabaseError(error)); |
| 88 } | 88 } |
| 89 | 89 |
| 90 void WebIDBDatabaseImpl::commit(long long transaction_id) { | 90 void WebIDBDatabaseImpl::commit(long long transaction_id) { |
| 91 if (database_backend_) | 91 if (database_backend_.get()) |
| 92 database_backend_->Commit(transaction_id); | 92 database_backend_->Commit(transaction_id); |
| 93 } | 93 } |
| 94 | 94 |
| 95 void WebIDBDatabaseImpl::openCursor(long long transaction_id, | 95 void WebIDBDatabaseImpl::openCursor(long long transaction_id, |
| 96 long long object_store_id, | 96 long long object_store_id, |
| 97 long long index_id, | 97 long long index_id, |
| 98 const IndexedDBKeyRange& key_range, | 98 const IndexedDBKeyRange& key_range, |
| 99 unsigned short direction, | 99 unsigned short direction, |
| 100 bool key_only, | 100 bool key_only, |
| 101 WebKit::WebIDBDatabase::TaskType task_type, | 101 WebKit::WebIDBDatabase::TaskType task_type, |
| 102 IndexedDBCallbacksBase* callbacks) { | 102 IndexedDBCallbacksBase* callbacks) { |
| 103 if (database_backend_) | 103 if (database_backend_.get()) |
| 104 database_backend_->OpenCursor( | 104 database_backend_->OpenCursor( |
| 105 transaction_id, | 105 transaction_id, |
| 106 object_store_id, | 106 object_store_id, |
| 107 index_id, | 107 index_id, |
| 108 make_scoped_ptr(new IndexedDBKeyRange(key_range)), | 108 make_scoped_ptr(new IndexedDBKeyRange(key_range)), |
| 109 static_cast<indexed_db::CursorDirection>(direction), | 109 static_cast<indexed_db::CursorDirection>(direction), |
| 110 key_only, | 110 key_only, |
| 111 static_cast<IndexedDBDatabase::TaskType>(task_type), | 111 static_cast<IndexedDBDatabase::TaskType>(task_type), |
| 112 IndexedDBCallbacksWrapper::Create(callbacks)); | 112 IndexedDBCallbacksWrapper::Create(callbacks)); |
| 113 } | 113 } |
| 114 | 114 |
| 115 void WebIDBDatabaseImpl::count(long long transaction_id, | 115 void WebIDBDatabaseImpl::count(long long transaction_id, |
| 116 long long object_store_id, | 116 long long object_store_id, |
| 117 long long index_id, | 117 long long index_id, |
| 118 const IndexedDBKeyRange& key_range, | 118 const IndexedDBKeyRange& key_range, |
| 119 IndexedDBCallbacksBase* callbacks) { | 119 IndexedDBCallbacksBase* callbacks) { |
| 120 if (database_backend_) | 120 if (database_backend_.get()) |
| 121 database_backend_->Count(transaction_id, | 121 database_backend_->Count(transaction_id, |
| 122 object_store_id, | 122 object_store_id, |
| 123 index_id, | 123 index_id, |
| 124 make_scoped_ptr(new IndexedDBKeyRange(key_range)), | 124 make_scoped_ptr(new IndexedDBKeyRange(key_range)), |
| 125 IndexedDBCallbacksWrapper::Create(callbacks)); | 125 IndexedDBCallbacksWrapper::Create(callbacks)); |
| 126 } | 126 } |
| 127 | 127 |
| 128 void WebIDBDatabaseImpl::get(long long transaction_id, | 128 void WebIDBDatabaseImpl::get(long long transaction_id, |
| 129 long long object_store_id, | 129 long long object_store_id, |
| 130 long long index_id, | 130 long long index_id, |
| 131 const IndexedDBKeyRange& key_range, | 131 const IndexedDBKeyRange& key_range, |
| 132 bool key_only, | 132 bool key_only, |
| 133 IndexedDBCallbacksBase* callbacks) { | 133 IndexedDBCallbacksBase* callbacks) { |
| 134 if (database_backend_) | 134 if (database_backend_.get()) |
| 135 database_backend_->Get(transaction_id, | 135 database_backend_->Get(transaction_id, |
| 136 object_store_id, | 136 object_store_id, |
| 137 index_id, | 137 index_id, |
| 138 make_scoped_ptr(new IndexedDBKeyRange(key_range)), | 138 make_scoped_ptr(new IndexedDBKeyRange(key_range)), |
| 139 key_only, | 139 key_only, |
| 140 IndexedDBCallbacksWrapper::Create(callbacks)); | 140 IndexedDBCallbacksWrapper::Create(callbacks)); |
| 141 } | 141 } |
| 142 | 142 |
| 143 void WebIDBDatabaseImpl::put(long long transaction_id, | 143 void WebIDBDatabaseImpl::put(long long transaction_id, |
| 144 long long object_store_id, | 144 long long object_store_id, |
| 145 std::vector<char>* value, | 145 std::vector<char>* value, |
| 146 const IndexedDBKey& key, | 146 const IndexedDBKey& key, |
| 147 WebKit::WebIDBDatabase::PutMode put_mode, | 147 WebKit::WebIDBDatabase::PutMode put_mode, |
| 148 IndexedDBCallbacksBase* callbacks, | 148 IndexedDBCallbacksBase* callbacks, |
| 149 const std::vector<int64>& index_ids, | 149 const std::vector<int64>& index_ids, |
| 150 const std::vector<IndexKeys>& index_keys) { | 150 const std::vector<IndexKeys>& index_keys) { |
| 151 if (!database_backend_) | 151 if (!database_backend_.get()) |
| 152 return; | 152 return; |
| 153 | 153 |
| 154 DCHECK_EQ(index_ids.size(), index_keys.size()); | 154 DCHECK_EQ(index_ids.size(), index_keys.size()); |
| 155 | 155 |
| 156 database_backend_->Put(transaction_id, | 156 database_backend_->Put(transaction_id, |
| 157 object_store_id, | 157 object_store_id, |
| 158 value, | 158 value, |
| 159 make_scoped_ptr(new IndexedDBKey(key)), | 159 make_scoped_ptr(new IndexedDBKey(key)), |
| 160 static_cast<IndexedDBDatabase::PutMode>(put_mode), | 160 static_cast<IndexedDBDatabase::PutMode>(put_mode), |
| 161 IndexedDBCallbacksWrapper::Create(callbacks), | 161 IndexedDBCallbacksWrapper::Create(callbacks), |
| 162 index_ids, | 162 index_ids, |
| 163 index_keys); | 163 index_keys); |
| 164 } | 164 } |
| 165 | 165 |
| 166 void WebIDBDatabaseImpl::setIndexKeys( | 166 void WebIDBDatabaseImpl::setIndexKeys( |
| 167 long long transaction_id, | 167 long long transaction_id, |
| 168 long long object_store_id, | 168 long long object_store_id, |
| 169 const IndexedDBKey& primary_key, | 169 const IndexedDBKey& primary_key, |
| 170 const std::vector<int64>& index_ids, | 170 const std::vector<int64>& index_ids, |
| 171 const std::vector<IndexKeys>& index_keys) { | 171 const std::vector<IndexKeys>& index_keys) { |
| 172 if (!database_backend_) | 172 if (!database_backend_.get()) |
| 173 return; | 173 return; |
| 174 | 174 |
| 175 DCHECK_EQ(index_ids.size(), index_keys.size()); | 175 DCHECK_EQ(index_ids.size(), index_keys.size()); |
| 176 database_backend_->SetIndexKeys( | 176 database_backend_->SetIndexKeys( |
| 177 transaction_id, | 177 transaction_id, |
| 178 object_store_id, | 178 object_store_id, |
| 179 make_scoped_ptr(new IndexedDBKey(primary_key)), | 179 make_scoped_ptr(new IndexedDBKey(primary_key)), |
| 180 index_ids, | 180 index_ids, |
| 181 index_keys); | 181 index_keys); |
| 182 } | 182 } |
| 183 | 183 |
| 184 void WebIDBDatabaseImpl::setIndexesReady( | 184 void WebIDBDatabaseImpl::setIndexesReady( |
| 185 long long transaction_id, | 185 long long transaction_id, |
| 186 long long object_store_id, | 186 long long object_store_id, |
| 187 const std::vector<int64>& web_index_ids) { | 187 const std::vector<int64>& web_index_ids) { |
| 188 if (!database_backend_) | 188 if (!database_backend_.get()) |
| 189 return; | 189 return; |
| 190 | 190 |
| 191 std::vector<int64> index_ids(web_index_ids.size()); | 191 std::vector<int64> index_ids(web_index_ids.size()); |
| 192 for (size_t i = 0; i < web_index_ids.size(); ++i) | 192 for (size_t i = 0; i < web_index_ids.size(); ++i) |
| 193 index_ids[i] = web_index_ids[i]; | 193 index_ids[i] = web_index_ids[i]; |
| 194 database_backend_->SetIndexesReady( | 194 database_backend_->SetIndexesReady( |
| 195 transaction_id, object_store_id, index_ids); | 195 transaction_id, object_store_id, index_ids); |
| 196 } | 196 } |
| 197 | 197 |
| 198 void WebIDBDatabaseImpl::deleteRange(long long transaction_id, | 198 void WebIDBDatabaseImpl::deleteRange(long long transaction_id, |
| 199 long long object_store_id, | 199 long long object_store_id, |
| 200 const IndexedDBKeyRange& key_range, | 200 const IndexedDBKeyRange& key_range, |
| 201 IndexedDBCallbacksBase* callbacks) { | 201 IndexedDBCallbacksBase* callbacks) { |
| 202 if (database_backend_) | 202 if (database_backend_.get()) |
| 203 database_backend_->DeleteRange( | 203 database_backend_->DeleteRange( |
| 204 transaction_id, | 204 transaction_id, |
| 205 object_store_id, | 205 object_store_id, |
| 206 make_scoped_ptr(new IndexedDBKeyRange(key_range)), | 206 make_scoped_ptr(new IndexedDBKeyRange(key_range)), |
| 207 IndexedDBCallbacksWrapper::Create(callbacks)); | 207 IndexedDBCallbacksWrapper::Create(callbacks)); |
| 208 } | 208 } |
| 209 | 209 |
| 210 void WebIDBDatabaseImpl::clear(long long transaction_id, | 210 void WebIDBDatabaseImpl::clear(long long transaction_id, |
| 211 long long object_store_id, | 211 long long object_store_id, |
| 212 IndexedDBCallbacksBase* callbacks) { | 212 IndexedDBCallbacksBase* callbacks) { |
| 213 if (database_backend_) | 213 if (database_backend_.get()) |
| 214 database_backend_->Clear(transaction_id, | 214 database_backend_->Clear(transaction_id, |
| 215 object_store_id, | 215 object_store_id, |
| 216 IndexedDBCallbacksWrapper::Create(callbacks)); | 216 IndexedDBCallbacksWrapper::Create(callbacks)); |
| 217 } | 217 } |
| 218 | 218 |
| 219 void WebIDBDatabaseImpl::createIndex(long long transaction_id, | 219 void WebIDBDatabaseImpl::createIndex(long long transaction_id, |
| 220 long long object_store_id, | 220 long long object_store_id, |
| 221 long long index_id, | 221 long long index_id, |
| 222 const WebString& name, | 222 const WebString& name, |
| 223 const IndexedDBKeyPath& key_path, | 223 const IndexedDBKeyPath& key_path, |
| 224 bool unique, | 224 bool unique, |
| 225 bool multi_entry) { | 225 bool multi_entry) { |
| 226 if (database_backend_) | 226 if (database_backend_.get()) |
| 227 database_backend_->CreateIndex(transaction_id, | 227 database_backend_->CreateIndex(transaction_id, |
| 228 object_store_id, | 228 object_store_id, |
| 229 index_id, | 229 index_id, |
| 230 name, | 230 name, |
| 231 IndexedDBKeyPath(key_path), | 231 IndexedDBKeyPath(key_path), |
| 232 unique, | 232 unique, |
| 233 multi_entry); | 233 multi_entry); |
| 234 } | 234 } |
| 235 | 235 |
| 236 void WebIDBDatabaseImpl::deleteIndex(long long transaction_id, | 236 void WebIDBDatabaseImpl::deleteIndex(long long transaction_id, |
| 237 long long object_store_id, | 237 long long object_store_id, |
| 238 long long index_id) { | 238 long long index_id) { |
| 239 if (database_backend_) | 239 if (database_backend_.get()) |
| 240 database_backend_->DeleteIndex(transaction_id, object_store_id, index_id); | 240 database_backend_->DeleteIndex(transaction_id, object_store_id, index_id); |
| 241 } | 241 } |
| 242 | 242 |
| 243 } // namespace WebKit | 243 } // namespace WebKit |
| OLD | NEW |