1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/browser/components/sessionstore/test/browser_pageStyle.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,88 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + * http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +"use strict"; 1.8 + 1.9 +const URL = getRootDirectory(gTestPath) + "browser_pageStyle_sample.html"; 1.10 +const URL_NESTED = getRootDirectory(gTestPath) + "browser_pageStyle_sample_nested.html"; 1.11 + 1.12 +/** 1.13 + * This test ensures that page style information is correctly persisted. 1.14 + */ 1.15 +add_task(function page_style() { 1.16 + let tab = gBrowser.addTab(URL); 1.17 + let browser = tab.linkedBrowser; 1.18 + yield promiseBrowserLoaded(browser); 1.19 + let sheets = yield getStyleSheets(browser); 1.20 + 1.21 + // Enable all style sheets one by one. 1.22 + for (let [title, disabled] of sheets) { 1.23 + yield enableStyleSheetsForSet(browser, title); 1.24 + 1.25 + let tab2 = gBrowser.duplicateTab(tab); 1.26 + yield promiseTabRestored(tab2); 1.27 + 1.28 + let sheets = yield getStyleSheets(tab2.linkedBrowser); 1.29 + let enabled = sheets.filter(([title, disabled]) => !disabled); 1.30 + 1.31 + if (title.startsWith("fail_")) { 1.32 + ok(!enabled.length, "didn't restore " + title); 1.33 + } else { 1.34 + ok(enabled.length == 1 && enabled[0][0] == title, "restored " + title); 1.35 + } 1.36 + 1.37 + gBrowser.removeTab(tab2); 1.38 + } 1.39 + 1.40 + // Disable all styles and verify that this is correctly persisted. 1.41 + yield setAuthorStyleDisabled(browser, true); 1.42 + 1.43 + let tab2 = gBrowser.duplicateTab(tab); 1.44 + yield promiseTabRestored(tab2); 1.45 + 1.46 + let authorStyleDisabled = yield getAuthorStyleDisabled(tab2.linkedBrowser); 1.47 + ok(authorStyleDisabled, "disabled all stylesheets"); 1.48 + 1.49 + // Clean up. 1.50 + gBrowser.removeTab(tab); 1.51 + gBrowser.removeTab(tab2); 1.52 +}); 1.53 + 1.54 +/** 1.55 + * This test ensures that page style notification from nested documents are 1.56 + * received and the page style is persisted correctly. 1.57 + */ 1.58 +add_task(function nested_page_style() { 1.59 + let tab = gBrowser.addTab(URL_NESTED); 1.60 + let browser = tab.linkedBrowser; 1.61 + yield promiseBrowserLoaded(browser); 1.62 + 1.63 + yield enableSubDocumentStyleSheetsForSet(browser, "alternate"); 1.64 + gBrowser.removeTab(tab); 1.65 + 1.66 + let [{state: {pageStyle}}] = JSON.parse(ss.getClosedTabData(window)); 1.67 + let expected = JSON.stringify({children: [{pageStyle: "alternate"}]}); 1.68 + is(JSON.stringify(pageStyle), expected, "correct pageStyle persisted"); 1.69 +}); 1.70 + 1.71 +function getStyleSheets(browser) { 1.72 + return sendMessage(browser, "ss-test:getStyleSheets"); 1.73 +} 1.74 + 1.75 +function enableStyleSheetsForSet(browser, name) { 1.76 + return sendMessage(browser, "ss-test:enableStyleSheetsForSet", name); 1.77 +} 1.78 + 1.79 +function enableSubDocumentStyleSheetsForSet(browser, name) { 1.80 + return sendMessage(browser, "ss-test:enableSubDocumentStyleSheetsForSet", { 1.81 + id: "iframe", set: name 1.82 + }); 1.83 +} 1.84 + 1.85 +function getAuthorStyleDisabled(browser) { 1.86 + return sendMessage(browser, "ss-test:getAuthorStyleDisabled"); 1.87 +} 1.88 + 1.89 +function setAuthorStyleDisabled(browser, val) { 1.90 + return sendMessage(browser, "ss-test:setAuthorStyleDisabled", val) 1.91 +}