Revision 92c857093784ffe21babd2d64564a9cba491c8b7 authored by Yuki Shiino on 26 December 2018, 13:48:42 UTC, committed by Chromium WPT Sync on 26 December 2018, 13:48:42 UTC
This is mostly a reland of Iee5c1d6917ad7770383e06a425f96000835a663a.

This patch implements setTimeout/setInterval Web APIs with IDL
callback function of type Function (i.e. V8Function in Blink).

Also ensure eager finalization of ScheduledAction in DOMTimer to
prevent a memory leak.

Bug: 866610
Change-Id: I3f460247f27069e4054a984efd3f98a2ce0ceac7
1 parent cd31531
Raw File
storage.https.html
<!DOCTYPE html>
<html>
  <head>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script src="support/test_utils.sub.js"></script>
  </head>

  <body>
    <script>
      /** @property{Datatype} The storage datatype. */
      var storage = TestUtils.DATATYPES.filter(function(datatype) {
        return datatype.name == "storage";
      })[0];

      // The tests are set up asynchronously.
      setup({"explicit_done": true});

      // There must be at least one test added synchronously, otherwise
      // testharness will complain.
      // TODO(@msramek): Find a way to avoid this dummy test.
      test(function() {}, "Populate backends.");

      TestUtils.populateStorage()
          .then(function() {
            // Navigate to a resource with a Clear-Site-Data header in
            // an iframe, then verify that all backends of the "storage"
            // datatype have been deleted.
            return new Promise(function(resolve, reject) {
              window.addEventListener("message", resolve);
              var iframe = document.createElement("iframe");
              iframe.src = TestUtils.getClearSiteDataUrl([storage]);
              document.body.appendChild(iframe);
            }).then(function() {
              TestUtils.STORAGE.forEach(function(backend) {
                var test_name =
                    "Clear backend when 'storage' is deleted: " + backend.name;

                promise_test(function() {
                  return backend.isEmpty().then(function(isEmpty) {
                    assert_true(
                      isEmpty,
                      backend.name + " should have been cleared.");
                  });
                }, test_name);
              });

              done();
            });
          });
    </script>
  </body>
</html>
back to top