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
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67

content / test / data / browsing_data / storage_accessor.html [blame]

<html>
  <script>
    async function accessStorage() {
      // Set cookie which persists across restart.
      document.cookie = `persistent=persistent;max-age=3600;` +
          'path=/;SameSite=None;Secure';

      // Set a non-persistent cookie.
      document.cookie = 'session_only=session_only; path=/;' +
          'SameSite=None;Secure';

      // Set a previously unseen cookie which has already expired.
      document.cookie = 'expired=;expires=Thu, 01 Jan 1970 00:00:00 GMT;' +
          'SameSite=None; Secure';

      // Access local storage.
      localStorage.setItem('foo', 'bar');

      try {
        // Third-party context WebSQL is disabled as of M97.
        window.openDatabase('foo', '1.0', 'foo DB', 1024);
      } catch (e) {}

      // Access file system.
      await new Promise(resolve => {
        window.webkitRequestFileSystem(TEMPORARY, 1024, function (fs) {
          fs.root.getFile('foo.txt', { create : true }, fileEntry => {
            fileEntry.createWriter(function (fileWriter) {
              fileWriter.onwriteend = () => resolve();
              let blob = new Blob([1,2,3], { type: 'text/plain' });
              fileWriter.write(blob);
            });
          },
        );
        }, () => resolve());
      });

      // Access service worker.
      await navigator.serviceWorker.register("empty.js");

      // Access cache storage.
      await caches.open('test');

      // Access Indexed DB.
      await new Promise(resolve => {
        let open = indexedDB.open('test');
        open.onupgradeneeded = () => {
          open.result.createObjectStore('store', { keyPath: 'id' });
        }
        open.onsuccess = () => {
          let db = open.result;
          let tx = db.transaction('store', 'readwrite');
          let store = tx.objectStore('store');
          store.put({ id: 42, value: 43 });
          tx.oncomplete = () => {
            db.close();
            resolve();
          };
        }
      });

      return true;
     }
  </script>
  <body>
  </body>
</html>