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 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 exception_state.ThrowDOMException( | 70 exception_state.ThrowDOMException( |
71 kInvalidStateError, | 71 kInvalidStateError, |
72 IDBDatabase::kNotVersionChangeTransactionErrorMessage); | 72 IDBDatabase::kNotVersionChangeTransactionErrorMessage); |
73 return; | 73 return; |
74 } | 74 } |
75 if (IsDeleted()) { | 75 if (IsDeleted()) { |
76 exception_state.ThrowDOMException(kInvalidStateError, | 76 exception_state.ThrowDOMException(kInvalidStateError, |
77 IDBDatabase::kIndexDeletedErrorMessage); | 77 IDBDatabase::kIndexDeletedErrorMessage); |
78 return; | 78 return; |
79 } | 79 } |
80 if (transaction_->IsFinished() || transaction_->IsFinishing()) { | |
81 exception_state.ThrowDOMException( | |
82 kTransactionInactiveError, | |
83 IDBDatabase::kTransactionFinishedErrorMessage); | |
84 return; | |
85 } | |
86 if (!transaction_->IsActive()) { | 80 if (!transaction_->IsActive()) { |
87 exception_state.ThrowDOMException( | 81 exception_state.ThrowDOMException(kTransactionInactiveError, |
88 kTransactionInactiveError, | 82 transaction_->InactiveErrorMessage()); |
89 IDBDatabase::kTransactionInactiveErrorMessage); | |
90 return; | 83 return; |
91 } | 84 } |
92 | 85 |
93 if (this->name() == name) | 86 if (this->name() == name) |
94 return; | 87 return; |
95 if (object_store_->ContainsIndex(name)) { | 88 if (object_store_->ContainsIndex(name)) { |
96 exception_state.ThrowDOMException(kConstraintError, | 89 exception_state.ThrowDOMException(kConstraintError, |
97 IDBDatabase::kIndexNameTakenErrorMessage); | 90 IDBDatabase::kIndexNameTakenErrorMessage); |
98 return; | 91 return; |
99 } | 92 } |
(...skipping 21 matching lines...) Expand all Loading... |
121 IDBRequest* IDBIndex::openCursor(ScriptState* script_state, | 114 IDBRequest* IDBIndex::openCursor(ScriptState* script_state, |
122 const ScriptValue& range, | 115 const ScriptValue& range, |
123 const String& direction_string, | 116 const String& direction_string, |
124 ExceptionState& exception_state) { | 117 ExceptionState& exception_state) { |
125 IDB_TRACE("IDBIndex::openCursor"); | 118 IDB_TRACE("IDBIndex::openCursor"); |
126 if (IsDeleted()) { | 119 if (IsDeleted()) { |
127 exception_state.ThrowDOMException(kInvalidStateError, | 120 exception_state.ThrowDOMException(kInvalidStateError, |
128 IDBDatabase::kIndexDeletedErrorMessage); | 121 IDBDatabase::kIndexDeletedErrorMessage); |
129 return nullptr; | 122 return nullptr; |
130 } | 123 } |
131 if (transaction_->IsFinished() || transaction_->IsFinishing()) { | |
132 exception_state.ThrowDOMException( | |
133 kTransactionInactiveError, | |
134 IDBDatabase::kTransactionFinishedErrorMessage); | |
135 return nullptr; | |
136 } | |
137 if (!transaction_->IsActive()) { | 124 if (!transaction_->IsActive()) { |
138 exception_state.ThrowDOMException( | 125 exception_state.ThrowDOMException(kTransactionInactiveError, |
139 kTransactionInactiveError, | 126 transaction_->InactiveErrorMessage()); |
140 IDBDatabase::kTransactionInactiveErrorMessage); | |
141 return nullptr; | 127 return nullptr; |
142 } | 128 } |
143 WebIDBCursorDirection direction = | 129 WebIDBCursorDirection direction = |
144 IDBCursor::StringToDirection(direction_string); | 130 IDBCursor::StringToDirection(direction_string); |
145 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue( | 131 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue( |
146 ExecutionContext::From(script_state), range, exception_state); | 132 ExecutionContext::From(script_state), range, exception_state); |
147 if (exception_state.HadException()) | 133 if (exception_state.HadException()) |
148 return nullptr; | 134 return nullptr; |
149 | 135 |
150 if (!BackendDB()) { | 136 if (!BackendDB()) { |
(...skipping 19 matching lines...) Expand all Loading... |
170 | 156 |
171 IDBRequest* IDBIndex::count(ScriptState* script_state, | 157 IDBRequest* IDBIndex::count(ScriptState* script_state, |
172 const ScriptValue& range, | 158 const ScriptValue& range, |
173 ExceptionState& exception_state) { | 159 ExceptionState& exception_state) { |
174 IDB_TRACE("IDBIndex::count"); | 160 IDB_TRACE("IDBIndex::count"); |
175 if (IsDeleted()) { | 161 if (IsDeleted()) { |
176 exception_state.ThrowDOMException(kInvalidStateError, | 162 exception_state.ThrowDOMException(kInvalidStateError, |
177 IDBDatabase::kIndexDeletedErrorMessage); | 163 IDBDatabase::kIndexDeletedErrorMessage); |
178 return nullptr; | 164 return nullptr; |
179 } | 165 } |
180 if (transaction_->IsFinished() || transaction_->IsFinishing()) { | |
181 exception_state.ThrowDOMException( | |
182 kTransactionInactiveError, | |
183 IDBDatabase::kTransactionFinishedErrorMessage); | |
184 return nullptr; | |
185 } | |
186 if (!transaction_->IsActive()) { | 166 if (!transaction_->IsActive()) { |
187 exception_state.ThrowDOMException( | 167 exception_state.ThrowDOMException(kTransactionInactiveError, |
188 kTransactionInactiveError, | 168 transaction_->InactiveErrorMessage()); |
189 IDBDatabase::kTransactionInactiveErrorMessage); | |
190 return nullptr; | 169 return nullptr; |
191 } | 170 } |
192 | 171 |
193 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue( | 172 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue( |
194 ExecutionContext::From(script_state), range, exception_state); | 173 ExecutionContext::From(script_state), range, exception_state); |
195 if (exception_state.HadException()) | 174 if (exception_state.HadException()) |
196 return nullptr; | 175 return nullptr; |
197 | 176 |
198 if (!BackendDB()) { | 177 if (!BackendDB()) { |
199 exception_state.ThrowDOMException(kInvalidStateError, | 178 exception_state.ThrowDOMException(kInvalidStateError, |
(...skipping 11 matching lines...) Expand all Loading... |
211 IDBRequest* IDBIndex::openKeyCursor(ScriptState* script_state, | 190 IDBRequest* IDBIndex::openKeyCursor(ScriptState* script_state, |
212 const ScriptValue& range, | 191 const ScriptValue& range, |
213 const String& direction_string, | 192 const String& direction_string, |
214 ExceptionState& exception_state) { | 193 ExceptionState& exception_state) { |
215 IDB_TRACE("IDBIndex::openKeyCursor"); | 194 IDB_TRACE("IDBIndex::openKeyCursor"); |
216 if (IsDeleted()) { | 195 if (IsDeleted()) { |
217 exception_state.ThrowDOMException(kInvalidStateError, | 196 exception_state.ThrowDOMException(kInvalidStateError, |
218 IDBDatabase::kIndexDeletedErrorMessage); | 197 IDBDatabase::kIndexDeletedErrorMessage); |
219 return nullptr; | 198 return nullptr; |
220 } | 199 } |
221 if (transaction_->IsFinished() || transaction_->IsFinishing()) { | |
222 exception_state.ThrowDOMException( | |
223 kTransactionInactiveError, | |
224 IDBDatabase::kTransactionFinishedErrorMessage); | |
225 return nullptr; | |
226 } | |
227 if (!transaction_->IsActive()) { | 200 if (!transaction_->IsActive()) { |
228 exception_state.ThrowDOMException( | 201 exception_state.ThrowDOMException(kTransactionInactiveError, |
229 kTransactionInactiveError, | 202 transaction_->InactiveErrorMessage()); |
230 IDBDatabase::kTransactionInactiveErrorMessage); | |
231 return nullptr; | 203 return nullptr; |
232 } | 204 } |
233 WebIDBCursorDirection direction = | 205 WebIDBCursorDirection direction = |
234 IDBCursor::StringToDirection(direction_string); | 206 IDBCursor::StringToDirection(direction_string); |
235 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue( | 207 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue( |
236 ExecutionContext::From(script_state), range, exception_state); | 208 ExecutionContext::From(script_state), range, exception_state); |
237 if (exception_state.HadException()) | 209 if (exception_state.HadException()) |
238 return nullptr; | 210 return nullptr; |
239 if (!BackendDB()) { | 211 if (!BackendDB()) { |
240 exception_state.ThrowDOMException(kInvalidStateError, | 212 exception_state.ThrowDOMException(kInvalidStateError, |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 | 270 |
299 IDBRequest* IDBIndex::GetInternal(ScriptState* script_state, | 271 IDBRequest* IDBIndex::GetInternal(ScriptState* script_state, |
300 const ScriptValue& key, | 272 const ScriptValue& key, |
301 ExceptionState& exception_state, | 273 ExceptionState& exception_state, |
302 bool key_only) { | 274 bool key_only) { |
303 if (IsDeleted()) { | 275 if (IsDeleted()) { |
304 exception_state.ThrowDOMException(kInvalidStateError, | 276 exception_state.ThrowDOMException(kInvalidStateError, |
305 IDBDatabase::kIndexDeletedErrorMessage); | 277 IDBDatabase::kIndexDeletedErrorMessage); |
306 return nullptr; | 278 return nullptr; |
307 } | 279 } |
308 if (transaction_->IsFinished() || transaction_->IsFinishing()) { | |
309 exception_state.ThrowDOMException( | |
310 kTransactionInactiveError, | |
311 IDBDatabase::kTransactionFinishedErrorMessage); | |
312 return nullptr; | |
313 } | |
314 if (!transaction_->IsActive()) { | 280 if (!transaction_->IsActive()) { |
315 exception_state.ThrowDOMException( | 281 exception_state.ThrowDOMException(kTransactionInactiveError, |
316 kTransactionInactiveError, | 282 transaction_->InactiveErrorMessage()); |
317 IDBDatabase::kTransactionInactiveErrorMessage); | |
318 return nullptr; | 283 return nullptr; |
319 } | 284 } |
320 | 285 |
321 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue( | 286 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue( |
322 ExecutionContext::From(script_state), key, exception_state); | 287 ExecutionContext::From(script_state), key, exception_state); |
323 if (exception_state.HadException()) | 288 if (exception_state.HadException()) |
324 return nullptr; | 289 return nullptr; |
325 if (!key_range) { | 290 if (!key_range) { |
326 exception_state.ThrowDOMException( | 291 exception_state.ThrowDOMException( |
327 kDataError, IDBDatabase::kNoKeyOrKeyRangeErrorMessage); | 292 kDataError, IDBDatabase::kNoKeyOrKeyRangeErrorMessage); |
(...skipping 18 matching lines...) Expand all Loading... |
346 ExceptionState& exception_state, | 311 ExceptionState& exception_state, |
347 bool key_only) { | 312 bool key_only) { |
348 if (!max_count) | 313 if (!max_count) |
349 max_count = std::numeric_limits<uint32_t>::max(); | 314 max_count = std::numeric_limits<uint32_t>::max(); |
350 | 315 |
351 if (IsDeleted()) { | 316 if (IsDeleted()) { |
352 exception_state.ThrowDOMException(kInvalidStateError, | 317 exception_state.ThrowDOMException(kInvalidStateError, |
353 IDBDatabase::kIndexDeletedErrorMessage); | 318 IDBDatabase::kIndexDeletedErrorMessage); |
354 return nullptr; | 319 return nullptr; |
355 } | 320 } |
356 if (transaction_->IsFinished() || transaction_->IsFinishing()) { | |
357 exception_state.ThrowDOMException( | |
358 kTransactionInactiveError, | |
359 IDBDatabase::kTransactionFinishedErrorMessage); | |
360 return nullptr; | |
361 } | |
362 if (!transaction_->IsActive()) { | 321 if (!transaction_->IsActive()) { |
363 exception_state.ThrowDOMException( | 322 exception_state.ThrowDOMException(kTransactionInactiveError, |
364 kTransactionInactiveError, | 323 transaction_->InactiveErrorMessage()); |
365 IDBDatabase::kTransactionInactiveErrorMessage); | |
366 return nullptr; | 324 return nullptr; |
367 } | 325 } |
368 | 326 |
369 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue( | 327 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue( |
370 ExecutionContext::From(script_state), range, exception_state); | 328 ExecutionContext::From(script_state), range, exception_state); |
371 if (exception_state.HadException()) | 329 if (exception_state.HadException()) |
372 return nullptr; | 330 return nullptr; |
373 if (!BackendDB()) { | 331 if (!BackendDB()) { |
374 exception_state.ThrowDOMException(kInvalidStateError, | 332 exception_state.ThrowDOMException(kInvalidStateError, |
375 IDBDatabase::kDatabaseClosedErrorMessage); | 333 IDBDatabase::kDatabaseClosedErrorMessage); |
376 return nullptr; | 334 return nullptr; |
377 } | 335 } |
378 | 336 |
379 IDBRequest* request = IDBRequest::Create(script_state, IDBAny::Create(this), | 337 IDBRequest* request = IDBRequest::Create(script_state, IDBAny::Create(this), |
380 transaction_.Get()); | 338 transaction_.Get()); |
381 BackendDB()->GetAll(transaction_->Id(), object_store_->Id(), Id(), key_range, | 339 BackendDB()->GetAll(transaction_->Id(), object_store_->Id(), Id(), key_range, |
382 max_count, key_only, | 340 max_count, key_only, |
383 request->CreateWebCallbacks().release()); | 341 request->CreateWebCallbacks().release()); |
384 return request; | 342 return request; |
385 } | 343 } |
386 | 344 |
387 WebIDBDatabase* IDBIndex::BackendDB() const { | 345 WebIDBDatabase* IDBIndex::BackendDB() const { |
388 return transaction_->BackendDB(); | 346 return transaction_->BackendDB(); |
389 } | 347 } |
390 | 348 |
391 } // namespace blink | 349 } // namespace blink |
OLD | NEW |