summaryrefslogtreecommitdiffstats
path: root/toolkit/components/thumbnails/test/browser_thumbnails_bg_queueing.js
blob: 92e87116373828b49509a0d0b9e34c1c63300717 (plain)
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
/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */

add_task(async function thumbnails_bg_queueing() {
  let urls = [
    "https://www.example.com/0",
    "https://www.example.com/1",
    // an item that will timeout to ensure timeouts work and we resume.
    bgTestPageURL({ wait: 2002 }),
    "https://www.example.com/2",
  ];
  dontExpireThumbnailURLs(urls);

  let promises = [];

  for (let url of urls) {
    ok(!thumbnailExists(url), "Thumbnail should not exist yet: " + url);
    let isTimeoutTest = url.includes("wait");

    let promise = bgCapture(url, {
      timeout: isTimeoutTest ? 100 : 30000,
      onDone: capturedURL => {
        ok(!!urls.length, "onDone called, so URLs should still remain");
        is(
          capturedURL,
          urls.shift(),
          "Captured URL should be currently expected URL (i.e., " +
            "capture() callbacks should be called in the correct order)"
        );
        if (isTimeoutTest) {
          ok(
            !thumbnailExists(capturedURL),
            "Thumbnail shouldn't exist for timed out capture"
          );
        } else {
          ok(
            thumbnailExists(capturedURL),
            "Thumbnail should be cached after capture"
          );
          removeThumbnail(url);
        }
      },
    });

    promises.push(promise);
  }

  await Promise.all(promises);
});