- add sources.
[platform/framework/web/crosswalk.git] / src / content / test / data / indexeddb / transaction_run_forever.js
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 function test()
6 {
7   // Do not use indexedDBTest() - need to specify the database name
8   var dbname = "doesnt-hang-test";
9
10   var request = indexedDB.deleteDatabase(dbname);
11   request.onerror = unexpectedErrorCallback;
12   request.onblocked = unexpectedBlockedCallback;
13   request.onsuccess = function() {
14     var request = indexedDB.open(dbname, 1);
15     request.onerror = unexpectedErrorCallback;
16     request.onblocked = unexpectedBlockedCallback;
17     request.onupgradeneeded = onUpgradeNeeded;
18     request.onsuccess = onOpenSuccess;
19   };
20 }
21
22 function onUpgradeNeeded()
23 {
24   // We are now in a set version transaction.
25   debug('Creating object store.');
26   var db = event.target.result;
27   db.createObjectStore('store');
28 }
29
30
31 var objectStore;
32 function onOpenSuccess()
33 {
34   var db = event.target.result;
35
36   debug('Creating new transaction.');
37   var transaction = db.transaction('store', 'readwrite');
38   transaction.oncomplete = unexpectedCompleteCallback;
39   transaction.onabort = unexpectedAbortCallback;
40   objectStore = transaction.objectStore('store');
41
42   debug('Starting endless loop...');
43   endlessLoop();
44 }
45
46 var loopCount = 0;
47 function endlessLoop()
48 {
49   var request = objectStore.get(0);
50   request.onsuccess = endlessLoop;
51   request.onerror = unexpectedErrorCallback;
52
53   loopCount += 1;
54   if (loopCount == 7) {
55     // If we've already looped 7 times, it's pretty safe to assume
56     // we'll continue looping for some time...
57     debug("Looping infinitely within a transaction.");
58     done();
59   }
60 }