summaryrefslogtreecommitdiffstats
path: root/content/test/data/indexeddb/version_change_blocked.js
blob: 17048b333cff6190334d9af2c83b9ee1414680a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

function test()
{
  if (document.location.hash === '#tab1') {
    prepareDatabase(0, function () { doSetVersion(1); });
  } else if (document.location.hash === '#tab2') {
    doSetVersion(2);
  } else {
    result('fail - unexpected hash');
  }
}

function prepareDatabase(version, callback)
{
  // Prepare the database, then exit normally
  var delreq = window.indexedDB.deleteDatabase('version-change-blocked');
  delreq.onerror = unexpectedErrorCallback;
  delreq.onsuccess = function() {
    var openreq = window.indexedDB.open('version-change-blocked');
    openreq.onerror = unexpectedErrorCallback;
    openreq.onsuccess = function(e) {
      var db = openreq.result;
      var setverreq = db.setVersion(String(version));
      setverreq.onerror = unexpectedErrorCallback;
      setverreq.onsuccess = function(e) {
        var transaction = setverreq.result;
        transaction.onabort = unexpectedAbortCallback;
        transaction.oncomplete = function (e) {
          db.close();
          callback();
        };
      };
    };
  };
}

function doSetVersion(version)
{
  // Open the database and try a setVersion
  var openreq = window.indexedDB.open('version-change-blocked');
  openreq.onerror = unexpectedErrorCallback;
  openreq.onsuccess = function(e) {
    window.db = openreq.result;
    var setverreq = window.db.setVersion(String(version));
    setverreq.onerror = unexpectedErrorCallback;
    setverreq.onblocked = function(e) {
      result('setVersion(' + version + ') blocked');
    };
    setverreq.onsuccess = function(e) {
      result('setVersion(' + version + ') complete');
    };
  };
}