summaryrefslogtreecommitdiffstats
path: root/docshell/test/browser/browser_title_in_session_history.js
blob: bdcbbb7dfe0b58aa93c124616a6f0845efb95ba9 (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
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

add_task(async function test() {
  const TEST_PAGE =
    getRootDirectory(gTestPath).replace(
      "chrome://mochitests/content",
      "https://example.com"
    ) + "dummy_page.html";
  await BrowserTestUtils.withNewTab(TEST_PAGE, async browser => {
    let titles = await ContentTask.spawn(browser, null, () => {
      return new Promise(resolve => {
        let titles = [];
        content.document.body.innerHTML = "<div id='foo'>foo</div>";
        content.document.title = "Initial";
        content.history.pushState("1", "1", "1");
        content.document.title = "1";
        content.history.pushState("2", "2", "2");
        content.document.title = "2";
        content.location.hash = "hash";
        content.document.title = "3-hash";
        content.addEventListener(
          "popstate",
          () => {
            content.addEventListener(
              "popstate",
              () => {
                titles.push(content.document.title);
                resolve(titles);
              },
              { once: true }
            );

            titles.push(content.document.title);
            // Test going forward a few steps.
            content.history.go(2);
          },
          { once: true }
        );
        // Test going back a few steps.
        content.history.go(-3);
      });
    });
    is(
      titles[0],
      "3-hash",
      "Document.title should have the value to which it was last time set."
    );
    is(
      titles[1],
      "3-hash",
      "Document.title should have the value to which it was last time set."
    );
    let sh = browser.browsingContext.sessionHistory;
    let count = sh.count;
    is(sh.getEntryAtIndex(count - 1).title, "3-hash");
    is(sh.getEntryAtIndex(count - 2).title, "2");
    is(sh.getEntryAtIndex(count - 3).title, "1");
    is(sh.getEntryAtIndex(count - 4).title, "Initial");
  });
});