12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)function test() 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var dbbase = "callback_accounting_"; 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var request1 = indexedDB.open(dbbase + 1); 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) request1.onupgradeneeded = function() { 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) debug("request1 open onupgradeneeded"); 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) request1.result.createObjectStore('store'); 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) request1.onsuccess = function() { 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) debug("request1 open onsuccess"); 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var db1 = request1.result; 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var transaction = db1.transaction('store'); 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) transaction.onabort = unexpectedAbortCallback; 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) debug("transaction created and looping"); 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) endTransaction = false; 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) transactionRunning = true; 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) function loop() { 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!endTransaction) { 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) transaction.objectStore('store').get(0).onsuccess = loop; 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) loop(); 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var request2 = indexedDB.open(dbbase + 2); 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) request2.onsuccess = function() { 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) debug("request2 open onsuccess"); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) shouldBeTrue("transactionRunning"); 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var db2 = request2.result; 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) db2.close(); 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) debug("db2 close2"); 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) endTransaction = true; 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) debug("ending transaction"); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) transaction.oncomplete = function() { 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) debug("transaction oncomplete"); 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) shouldBeTrue("endTransaction"); 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) done(); 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 53