dom/indexedDB/test/unit/test_deleteDatabase.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /**
     2  * Any copyright is dedicated to the Public Domain.
     3  * http://creativecommons.org/publicdomain/zero/1.0/
     4  */
     6 var testGenerator = testSteps();
     8 function testSteps()
     9 {
    10   const name = this.window ? window.location.pathname : "Splendid Test";
    12   ok(indexedDB.deleteDatabase, "deleteDatabase function should exist!");
    14   let request = indexedDB.open(name, 10);
    15   request.onerror = errorHandler;
    16   request.onsuccess = unexpectedSuccessHandler;
    17   request.onupgradeneeded = grabEventAndContinueHandler;
    19   ok(request instanceof IDBOpenDBRequest, "Expect an IDBOpenDBRequest");
    21   let event = yield undefined;
    23   is(event.type, "upgradeneeded", "Expect an upgradeneeded event");
    24   ok(event instanceof IDBVersionChangeEvent, "Expect a versionchange event");
    26   let db = event.target.result;
    27   db.createObjectStore("stuff");
    29   request.onsuccess = grabEventAndContinueHandler;
    31   event = yield undefined;
    33   is(event.type, "success", "Expect a success event");
    34   is(event.target, request, "Event has right target");
    35   ok(event.target.result instanceof IDBDatabase, "Result should be a database");
    36   is(db.objectStoreNames.length, 1, "Expect an objectStore here");
    38   let request = indexedDB.open(name, 10);
    39   request.onerror = errorHandler;
    40   request.onsuccess = grabEventAndContinueHandler;
    42   event = yield undefined;
    43   is(event.type, "success", "Expect a success event");
    44   is(event.target, request, "Event has right target");
    45   ok(event.target.result instanceof IDBDatabase, "Result should be a database");
    46   let db2 = event.target.result;
    47   is(db2.objectStoreNames.length, 1, "Expect an objectStore here");
    49   var onversionchangecalled = false;
    51   function closeDBs(event) {
    52     onversionchangecalled = true;
    53     ok(event instanceof IDBVersionChangeEvent, "expect a versionchange event");
    54     is(event.oldVersion, 10, "oldVersion should be 10");
    55     ok(event.newVersion === null, "newVersion should be null");
    56     ok(!(event.newVersion === undefined), "newVersion should be null");
    57     ok(!(event.newVersion === 0), "newVersion should be null");
    58     db.close();
    59     db2.close();
    60     db.onversionchange = unexpectedSuccessHandler;
    61     db2.onversionchange = unexpectedSuccessHandler;
    62   };
    64   // The IDB spec doesn't guarantee the order that onversionchange will fire
    65   // on the dbs.
    66   db.onversionchange = closeDBs;
    67   db2.onversionchange = closeDBs;
    69   let request = indexedDB.deleteDatabase(name);
    70   request.onerror = errorHandler;
    71   request.onsuccess = grabEventAndContinueHandler;
    73   ok(request instanceof IDBOpenDBRequest, "Expect an IDBOpenDBRequest");
    75   event = yield undefined;
    76   ok(onversionchangecalled, "Expected versionchange events");
    77   is(event.type, "success", "expect a success event");
    78   is(event.target, request, "event has right target");
    79   ok(event.target.result === undefined, "event should have no result");
    81   let request = indexedDB.open(name, 1);
    82   request.onerror = errorHandler;
    83   request.onsuccess = grabEventAndContinueHandler;
    85   event = yield undefined;
    86   is(event.target.result.version, 1, "DB has proper version");
    87   is(event.target.result.objectStoreNames.length, 0, "DB should have no object stores");
    90   let request = indexedDB.deleteDatabase("thisDatabaseHadBetterNotExist");
    91   request.onerror = errorHandler;
    92   request.onsuccess = grabEventAndContinueHandler;
    94   event = yield undefined;
    95   ok(true, "deleteDatabase on a non-existent database succeeded");
    97   let request = indexedDB.open("thisDatabaseHadBetterNotExist");
    98   request.onerror = errorHandler;
    99   request.onsuccess = grabEventAndContinueHandler;
   101   event = yield undefined;
   102   ok(true, "after deleting a non-existent database, open should work");
   104   finishTest();
   105   yield undefined;
   106 }

mercurial