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 });