summaryrefslogtreecommitdiffstats
path: root/toolkit/components/thumbnails/test/browser_thumbnails_bg_topsites.js
blob: fac37aff4afbe14c8840f31fe89675d1664837a3 (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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */

const image1x1 =
  "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==";
const image96x96 =
  "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAJCAYAAADNYymqAAAAKklEQVR42u3RMQEAAAjDMFCO9CGDg1RC00lN6awGAACADQAACAAAAXjXApPGFm+IdJG9AAAAAElFTkSuQmCC";
const baseURL = "http://mozilla${i}.com/";

add_task(async function thumbnails_bg_topsites() {
  await SpecialPowers.pushPrefEnv({
    set: [
      [
        "browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts",
        false,
      ],
    ],
  });
  // Add 3 top sites - 2 visits each so it can pass frecency threshold of the top sites query
  for (let i = 1; i <= 3; i++) {
    await PlacesTestUtils.addVisits(baseURL.replace("${i}", i));
    await PlacesTestUtils.addVisits(baseURL.replace("${i}", i));
  }

  // Add favicon data for 2 of the top sites
  let faviconData = new Map();
  faviconData.set("http://mozilla1.com/", image1x1);
  faviconData.set("http://mozilla2.com/", image96x96);
  await PlacesTestUtils.addFavicons(faviconData);

  // Sanity check that we've successfully added all 3 urls to top sites
  let links = await NewTabUtils.activityStreamLinks.getTopSites();
  is(
    links[0].url,
    baseURL.replace("${i}", 3),
    "Top site has been successfully added"
  );
  is(
    links[1].url,
    baseURL.replace("${i}", 2),
    "Top site has been successfully added"
  );
  is(
    links[2].url,
    baseURL.replace("${i}", 1),
    "Top site has been successfully added"
  );

  // Now, add a pinned site so we can also fetch a screenshot for that
  const pinnedSite = { url: baseURL.replace("${i}", 4) };
  NewTabUtils.pinnedLinks.pin(pinnedSite, 0);

  // Check that the correct sites will capture screenshots
  gBrowserThumbnails.clearTopSiteURLCache();
  let topSites = await gBrowserThumbnails._topSiteURLs;
  ok(
    topSites.includes("http://mozilla1.com/"),
    "Top site did not have a rich icon - get a screenshot"
  );
  ok(
    topSites.includes("http://mozilla3.com/"),
    "Top site did not have an icon - get a screenshot"
  );
  ok(
    topSites.includes("http://mozilla4.com/"),
    "Site is pinned - get a screenshot"
  );
  ok(
    !topSites.includes("http://mozilla2.com/"),
    "Top site had a rich icon - do not get a screenshot"
  );

  // Clean up
  NewTabUtils.pinnedLinks.unpin(pinnedSite);
  await PlacesUtils.history.clear();
});