dom/indexedDB/test/file_app_isolation.html

Wed, 31 Dec 2014 06:55:50 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:55:50 +0100
changeset 2
7e26c7da4463
permissions
-rw-r--r--

Added tag UPSTREAM_283F7C6 for changeset ca08bd8f51b2

     1 <!DOCTYPE html>
     2 <html>
     3   <body>
     4     foobar!
     5   </body>
     6   <script>
     7     var data = [
     8       { id: "0", name: "foo" },
     9     ];
    11     var action = window.location.search.substring(1);
    12     var finished = false;
    13     var created = false; // We use that for 'read-no' action.
    15     function finish(value) {
    16       value ? alert('success') : alert('failure');
    17       finished = true;
    18     }
    20     var request = window.indexedDB.open('AppIsolationTest');
    22     request.onupgradeneeded = function(event) {
    23       if (finished) {
    24         finish(false);
    25         return;
    26       }
    28       switch (action) {
    29         case 'read-no':
    30           created = true;
    31           break;
    32         case 'read-yes':
    33           finish(false);
    34           break;
    35         case 'write':
    36           created = true;
    38           var db = event.target.result;
    40           var objectStore = db.createObjectStore("test", { keyPath: "id" });
    41           for (var i in data) {
    42             objectStore.add(data[i]);
    43           }
    44           break;
    45       }
    46     }
    48     request.onsuccess = function(event) {
    49       if (finished) {
    50         finish(false);
    51         return;
    52       }
    54       var db = event.target.result;
    56       // Think about close the db!
    57       switch (action) {
    58         case 'read-no':
    59           db.close();
    61           if (created) { // That means we have created it.
    62             indexedDB.deleteDatabase('AppIsolationTest').onsuccess = function() {
    63               finish(true);
    64             };
    65           } else {
    66             finish(false);
    67           }
    68           break;
    69         case 'read-yes':
    70           db.transaction("test").objectStore("test").get("0").onsuccess = function(event) {
    71             var name = event.target.result.name;
    72             db.close();
    74             indexedDB.deleteDatabase('AppIsolationTest').onsuccess = function() {
    75               finish(name == 'foo');
    76             };
    77           };
    78           break;
    79         case 'write':
    80           db.close();
    82           // Success only if the db was actually created.
    83           finish(created);
    84           break;
    85       }
    86     };
    87   </script>
    88 </html>

mercurial