summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/siteIdentity/browser_check_identity_state_pdf.js
blob: 9f4e593c3e67acba0d578fe5c0e2855e0b89f694 (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
77
78
79
80
81
82
/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */

/*
 * Tests that sites opened via the PDF viewer have the correct identity state.
 */

"use strict";

function testIdentityMode(uri, expectedState, message) {
  return BrowserTestUtils.withNewTab(uri, () => {
    is(getIdentityMode(), expectedState, message);
  });
}

/**
 * Test site identity state for PDFs served via file URI.
 */
add_task(async function test_pdf_fileURI() {
  let path = getTestFilePath("./file_pdf.pdf");
  info("path:" + path);

  await testIdentityMode(
    path,
    "localResource",
    "Identity should be localResource for a PDF served via file URI"
  );
});

/**
 * Test site identity state for PDFs served via blob URI.
 */
add_task(async function test_pdf_blobURI() {
  let uri =
    getRootDirectory(gTestPath).replace(
      "chrome://mochitests/content",
      "https://example.com"
    ) + "file_pdf_blob.html";

  await BrowserTestUtils.withNewTab(uri, async browser => {
    let newTabOpened = BrowserTestUtils.waitForNewTab(gBrowser, null, true);

    await BrowserTestUtils.synthesizeMouseAtCenter("a", {}, browser);
    await newTabOpened;

    is(
      getIdentityMode(),
      "localResource",
      "Identity should be localResource for a PDF served via blob URI"
    );

    BrowserTestUtils.removeTab(gBrowser.selectedTab);
  });
});

/**
 * Test site identity state for PDFs served via HTTP.
 */
add_task(async function test_pdf_http() {
  let expectedIdentity = Services.prefs.getBoolPref(
    "security.insecure_connection_text.enabled"
  )
    ? "notSecure notSecureText"
    : "notSecure";
  const PDF_URI_NOSCHEME =
    getRootDirectory(gTestPath).replace(
      "chrome://mochitests/content",
      "example.com"
    ) + "file_pdf.pdf";

  await testIdentityMode(
    // eslint-disable-next-line @microsoft/sdl/no-insecure-url
    "http://" + PDF_URI_NOSCHEME,
    expectedIdentity,
    `Identity should be ${expectedIdentity} for a PDF served via HTTP.`
  );
  await testIdentityMode(
    "https://" + PDF_URI_NOSCHEME,
    "verifiedDomain",
    "Identity should be verifiedDomain for a PDF served via HTTPS."
  );
});