summaryrefslogtreecommitdiffstats
path: root/browser/components/extensions/test/browser/browser_ext_history_redirect.js
blob: bbce498887721ed1057977ac861ca8b521aaea2d (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
"use strict";

const BASE =
  "http://mochi.test:8888/browser/browser/components/extensions/test/browser";
const REDIRECT_URL = BASE + "/redirection.sjs";
const REDIRECTED_URL = BASE + "/dummy_page.html";

add_task(async function history_redirect() {
  function background() {
    browser.test.onMessage.addListener(async (msg, url) => {
      switch (msg) {
        case "delete-all": {
          let results = await browser.history.deleteAll();
          browser.test.sendMessage("delete-all-result", results);
          break;
        }
        case "search": {
          let results = await browser.history.search({
            text: url,
            startTime: new Date(0),
          });
          browser.test.sendMessage("search-result", results);
          break;
        }
        case "get-visits": {
          let results = await browser.history.getVisits({ url });
          browser.test.sendMessage("get-visits-result", results);
          break;
        }
      }
    });

    browser.test.sendMessage("ready");
  }

  let extensionData = {
    manifest: {
      permissions: ["history"],
    },
    background,
  };

  let extension = ExtensionTestUtils.loadExtension(extensionData);

  await Promise.all([extension.startup(), extension.awaitMessage("ready")]);
  info("extension loaded");

  extension.sendMessage("delete-all");
  await extension.awaitMessage("delete-all-result");

  await BrowserTestUtils.withNewTab(
    { gBrowser, url: REDIRECT_URL },
    async browser => {
      is(
        browser.currentURI.spec,
        REDIRECTED_URL,
        "redirected to the expected location"
      );

      extension.sendMessage("search", REDIRECT_URL);
      let results = await extension.awaitMessage("search-result");
      is(results.length, 1, "search returned expected length of results");

      extension.sendMessage("get-visits", REDIRECT_URL);
      let visits = await extension.awaitMessage("get-visits-result");
      is(visits.length, 1, "getVisits returned expected length of visits");
    }
  );

  await extension.unload();
  info("extension unloaded");
});