tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_PUIU_setCharsetForPage.js (4370B)


      1 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
      2 /* vim:set ts=2 sw=2 sts=2 et: */
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this
      5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 const { PrivateBrowsingUtils } = ChromeUtils.importESModule(
      8  "resource://gre/modules/PrivateBrowsingUtils.sys.mjs"
      9 );
     10 
     11 const UTF8 = "UTF-8";
     12 const UTF16 = "UTF-16";
     13 
     14 const TEST_URI = "http://foo.com";
     15 const TEST_BOOKMARKED_URI = "http://bar.com";
     16 
     17 add_task(function setup() {
     18  let savedIsWindowPrivateFunc = PrivateBrowsingUtils.isWindowPrivate;
     19  PrivateBrowsingUtils.isWindowPrivate = () => false;
     20 
     21  registerCleanupFunction(() => {
     22    PrivateBrowsingUtils.isWindowPrivate = savedIsWindowPrivateFunc;
     23  });
     24 });
     25 
     26 add_task(async function test_simple_add() {
     27  // add pages to history
     28  await PlacesTestUtils.addVisits(TEST_URI);
     29  await PlacesTestUtils.addVisits(TEST_BOOKMARKED_URI);
     30 
     31  // create bookmarks on TEST_BOOKMARKED_URI
     32  await PlacesUtils.bookmarks.insert({
     33    parentGuid: PlacesUtils.bookmarks.unfiledGuid,
     34    url: TEST_BOOKMARKED_URI,
     35    title: TEST_BOOKMARKED_URI.spec,
     36  });
     37  await PlacesUtils.bookmarks.insert({
     38    parentGuid: PlacesUtils.bookmarks.toolbarGuid,
     39    url: TEST_BOOKMARKED_URI,
     40    title: TEST_BOOKMARKED_URI.spec,
     41  });
     42 
     43  // set charset on not-bookmarked page
     44  await PlacesUIUtils.setCharsetForPage(TEST_URI, UTF16, {});
     45  // set charset on bookmarked page
     46  await PlacesUIUtils.setCharsetForPage(TEST_BOOKMARKED_URI, UTF16, {});
     47 
     48  let pageInfo = await PlacesUtils.history.fetch(TEST_URI, {
     49    includeAnnotations: true,
     50  });
     51  Assert.equal(
     52    pageInfo.annotations.get(PlacesUtils.CHARSET_ANNO),
     53    UTF16,
     54    "Should return correct charset for a not-bookmarked page"
     55  );
     56 
     57  pageInfo = await PlacesUtils.history.fetch(TEST_BOOKMARKED_URI, {
     58    includeAnnotations: true,
     59  });
     60  Assert.equal(
     61    pageInfo.annotations.get(PlacesUtils.CHARSET_ANNO),
     62    UTF16,
     63    "Should return correct charset for a bookmarked page"
     64  );
     65 
     66  await PlacesUtils.history.clear();
     67 
     68  pageInfo = await PlacesUtils.history.fetch(TEST_URI, {
     69    includeAnnotations: true,
     70  });
     71  Assert.ok(
     72    !pageInfo,
     73    "Should not return pageInfo for a page after history cleared"
     74  );
     75 
     76  pageInfo = await PlacesUtils.history.fetch(TEST_BOOKMARKED_URI, {
     77    includeAnnotations: true,
     78  });
     79  Assert.equal(
     80    pageInfo.annotations.get(PlacesUtils.CHARSET_ANNO),
     81    UTF16,
     82    "Charset should still be set for a bookmarked page after history clear"
     83  );
     84 
     85  await PlacesUIUtils.setCharsetForPage(TEST_BOOKMARKED_URI, "");
     86  pageInfo = await PlacesUtils.history.fetch(TEST_BOOKMARKED_URI, {
     87    includeAnnotations: true,
     88  });
     89  Assert.strictEqual(
     90    pageInfo.annotations.get(PlacesUtils.CHARSET_ANNO),
     91    undefined,
     92    "Should not have a charset after it has been removed from the page"
     93  );
     94 });
     95 
     96 add_task(async function test_utf8_clears_saved_anno() {
     97  await PlacesUtils.history.clear();
     98  await PlacesTestUtils.addVisits(TEST_URI);
     99 
    100  // set charset on bookmarked page
    101  await PlacesUIUtils.setCharsetForPage(TEST_URI, UTF16, {});
    102 
    103  let pageInfo = await PlacesUtils.history.fetch(TEST_URI, {
    104    includeAnnotations: true,
    105  });
    106  Assert.equal(
    107    pageInfo.annotations.get(PlacesUtils.CHARSET_ANNO),
    108    UTF16,
    109    "Should return correct charset for a not-bookmarked page"
    110  );
    111 
    112  // Now set the bookmark to a UTF-8 charset.
    113  await PlacesUIUtils.setCharsetForPage(TEST_URI, UTF8, {});
    114 
    115  pageInfo = await PlacesUtils.history.fetch(TEST_URI, {
    116    includeAnnotations: true,
    117  });
    118  Assert.strictEqual(
    119    pageInfo.annotations.get(PlacesUtils.CHARSET_ANNO),
    120    undefined,
    121    "Should have removed the charset for a UTF-8 page."
    122  );
    123 });
    124 
    125 add_task(async function test_private_browsing_not_saved() {
    126  await PlacesUtils.history.clear();
    127  await PlacesTestUtils.addVisits(TEST_URI);
    128 
    129  // set charset on bookmarked page, but pretend this is a private browsing window.
    130  PrivateBrowsingUtils.isWindowPrivate = () => true;
    131  await PlacesUIUtils.setCharsetForPage(TEST_URI, UTF16, {});
    132 
    133  let pageInfo = await PlacesUtils.history.fetch(TEST_URI, {
    134    includeAnnotations: true,
    135  });
    136  Assert.strictEqual(
    137    pageInfo.annotations.get(PlacesUtils.CHARSET_ANNO),
    138    undefined,
    139    "Should not have set the charset in a private browsing window."
    140  );
    141 });