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

content / test / data / indexeddb / version_change_blocked.js [blame]

// Copyright 2012 The Chromium Authors
// 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(function () { doSetVersion(2); });
  } else if (document.location.hash === '#tab2') {
    doSetVersion(3);
  } else {
    result('fail - unexpected hash');
  }
}

function prepareDatabase(callback)
{
  // Prepare the database, then exit normally
  var delreq = window.indexedDB.deleteDatabase('version-change-blocked');
  delreq.onerror = unexpectedErrorCallback;
  delreq.onsuccess = function() {
    reOpen(callback);
  };
}

function reOpen(callback)
{
  request = indexedDB.open('version-change-blocked');
  request.onerror = unexpectedErrorCallback;
  request.onblocked = unexpectedBlockedCallback;
  request.onupgradeneeded = function() {
    db = event.target.result;
    db.createObjectStore("someobjectstore");
  };
  request.onsuccess = function() {
    db.close();
    callback();
  };
}

function doSetVersion(version)
{
  // Open the database and try a setVersion
  var openreq = window.indexedDB.open('version-change-blocked', version);
  openreq.onerror = unexpectedErrorCallback;
  var upgradeneededComplete = false;
  openreq.onblocked = function(e) {
    result('setVersion(' + version + ') blocked');
  };
  openreq.onupgradeneeded = function(e) {
    openreq.transaction.oncomplete = function(e2) {
      db = openreq.result;
      result('setVersion(' + version + ') complete');
    };
  };
}