Revision 6ff8cb60aab43a83cc52b509b2eede8c474db652 authored by Eric Willigers on 05 September 2018, 09:19:05 UTC, committed by Eric Willigers on 05 September 2018, 09:37:23 UTC
Test the parsing and serialization of the longhand properties from
CSS Animations and CSS Transitions.

Relevant browser bugs:

Edge animation-duration should reject negatives
https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/18347049/

Edge and Safari incorrectly accept unitless 0 on <time> values
https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/18348525/
https://bugs.webkit.org/show_bug.cgi?id=113230
1 parent beeef72
Raw File
idbcursor-advance-exception-order.html
<!doctype html>
<meta charset=utf-8>
<title>IndexedDB: IDBCursor advance() Exception Ordering</title>
<link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbcursor-advance">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support.js"></script>
<script>

indexeddb_test(
  (t, db) => {
    const store = db.createObjectStore('s');
    store.put('value', 'key');
  },
  (t, db) => {
    const tx = db.transaction('s');
    const store = tx.objectStore('s');

    const r = store.openKeyCursor();
    r.onsuccess = t.step_func(() => {
      r.onsuccess = null;

      const cursor = r.result;

      setTimeout(t.step_func(() => {
        assert_throws(new TypeError, () => { cursor.advance(0); },
                      '"zero" check (TypeError) should precede ' +
                      '"not active" check (TransactionInactiveError)');
        t.done();
      }), 0);
    });
  },
  'IDBCursor.advance exception order: TypeError vs. TransactionInactiveError'
);

indexeddb_test(
  (t, db) => {
    const store = db.createObjectStore('s');

    const s = db.createObjectStore('s2');
    s.put('value', 'key');

    const r = s.openKeyCursor();
    r.onsuccess = t.step_func(() => {
      r.onsuccess = null;

      const cursor = r.result;
      db.deleteObjectStore('s2');

      setTimeout(t.step_func(() => {
        assert_throws('TransactionInactiveError', () => { cursor.advance(1); },
                      '"not active" check (TransactionInactiveError) ' +
                      'should precede "deleted" check (InvalidStateError)');
        t.done();
      }), 0);
    });
  },
  (t, db) => {},
  'IDBCursor.advance exception order: ' +
  'TransactionInactiveError vs. InvalidStateError #1'
);

indexeddb_test(
  (t, db) => {
    const store = db.createObjectStore('s');
    store.put('value', 'key');
  },
  (t, db) => {
    const tx = db.transaction('s');
    const store = tx.objectStore('s');

    const r = store.openKeyCursor();
    r.onsuccess = t.step_func(() => {
      r.onsuccess = null;

      const cursor = r.result;
      cursor.advance(1);

      setTimeout(t.step_func(() => {
        assert_throws('TransactionInactiveError', () => { cursor.advance(1); },
                      '"not active" check (TransactionInactiveError) ' +
                      'should precede "got value" check (InvalidStateError)');
        t.done();
      }), 0);
    });
  },
  'IDBCursor.advance exception order: ' +
  'TransactionInactiveError vs. InvalidStateError #2'
);

</script>
back to top