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