зеркало из https://github.com/mozilla/pjs.git
Bug 703965 - View source prefs not obeyed in non-HTML documents - tests; r=hsivonen
--HG-- rename : toolkit/components/viewsource/test/browser/browser_viewsourceprefs.js => toolkit/components/viewsource/test/browser/browser_viewsourceprefs_nonhtml.js
This commit is contained in:
Родитель
d22fbf0a56
Коммит
ddfa42dd75
|
@ -47,6 +47,7 @@ include $(topsrcdir)/config/rules.mk
|
|||
_BROWSER_CHROME_FILES = \
|
||||
browser_bug699356.js \
|
||||
browser_viewsourceprefs.js \
|
||||
browser_viewsourceprefs_nonhtml.js \
|
||||
head.js \
|
||||
$(NULL)
|
||||
|
||||
|
|
|
@ -9,6 +9,12 @@ let mWindow, wrapMenuItem, syntaxMenuItem;
|
|||
function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
registerCleanupFunction(function() {
|
||||
SpecialPowers.clearUserPref("view_source.tab_size");
|
||||
SpecialPowers.clearUserPref("view_source.wrap_long_lines");
|
||||
SpecialPowers.clearUserPref("view_source.syntax_highlight");
|
||||
});
|
||||
|
||||
openViewSourceWindow(source, function(aWindow) {
|
||||
mWindow = aWindow;
|
||||
wrapMenuItem = aWindow.document.getElementById('menu_wrapLongLines');
|
||||
|
@ -77,11 +83,11 @@ function test4() {
|
|||
|
||||
// Open a new view-source window to check prefs are obeyed.
|
||||
function test5() {
|
||||
SpecialPowers.pushPrefEnv({'set': [
|
||||
["view_source.tab_size", 2],
|
||||
["view_source.wrap_long_lines", true],
|
||||
["view_source.syntax_highlight", false]
|
||||
]}, function() {
|
||||
SpecialPowers.setIntPref("view_source.tab_size", 2);
|
||||
SpecialPowers.setBoolPref("view_source.wrap_long_lines", true);
|
||||
SpecialPowers.setBoolPref("view_source.syntax_highlight", false);
|
||||
|
||||
executeSoon(function() {
|
||||
openViewSourceWindow(source, function(aWindow) {
|
||||
wrapMenuItem = aWindow.document.getElementById('menu_wrapLongLines');
|
||||
syntaxMenuItem = aWindow.document.getElementById('menu_highlightSyntax');
|
||||
|
|
|
@ -0,0 +1,135 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/
|
||||
*/
|
||||
|
||||
let source = "data:text/plain,hello+world";
|
||||
let mWindow, wrapMenuItem, syntaxMenuItem;
|
||||
|
||||
// Check the default values are set.
|
||||
function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
registerCleanupFunction(function() {
|
||||
SpecialPowers.clearUserPref("view_source.tab_size");
|
||||
SpecialPowers.clearUserPref("view_source.wrap_long_lines");
|
||||
SpecialPowers.clearUserPref("view_source.syntax_highlight");
|
||||
});
|
||||
|
||||
openViewSourceWindow(source, function(aWindow) {
|
||||
mWindow = aWindow;
|
||||
wrapMenuItem = aWindow.document.getElementById('menu_wrapLongLines');
|
||||
syntaxMenuItem = aWindow.document.getElementById('menu_highlightSyntax');
|
||||
|
||||
// Strip checked="false" attributes, since we're not interested in them.
|
||||
if (wrapMenuItem.getAttribute("checked") == "false")
|
||||
wrapMenuItem.removeAttribute("checked");
|
||||
if (syntaxMenuItem.getAttribute("checked") == "false")
|
||||
syntaxMenuItem.removeAttribute("checked");
|
||||
|
||||
is(wrapMenuItem.hasAttribute("checked"), false, "Wrap menu item not checked by default");
|
||||
is(syntaxMenuItem.hasAttribute("checked"), true, "Syntax menu item checked by default");
|
||||
checkStyle(aWindow, "-moz-tab-size", 4);
|
||||
checkStyle(aWindow, "white-space", "pre");
|
||||
|
||||
test1();
|
||||
});
|
||||
}
|
||||
|
||||
// Check that the Wrap Long Lines menu item works.
|
||||
function test1() {
|
||||
simulateClick(wrapMenuItem);
|
||||
|
||||
is(wrapMenuItem.hasAttribute("checked"), true, "Wrap menu item checked");
|
||||
is(SpecialPowers.getBoolPref("view_source.wrap_long_lines"), true, "Wrap pref set");
|
||||
checkStyle(mWindow, "white-space", "pre-wrap");
|
||||
test2();
|
||||
}
|
||||
|
||||
function test2() {
|
||||
simulateClick(wrapMenuItem);
|
||||
|
||||
is(wrapMenuItem.hasAttribute("checked"), false, "Wrap menu item unchecked");
|
||||
is(SpecialPowers.getBoolPref("view_source.wrap_long_lines"), false, "Wrap pref set");
|
||||
checkStyle(mWindow, "white-space", "pre");
|
||||
test3();
|
||||
}
|
||||
|
||||
// Check that the Syntax Highlighting menu item works.
|
||||
function test3() {
|
||||
mWindow.gBrowser.addEventListener("pageshow", function test3Handler() {
|
||||
mWindow.gBrowser.removeEventListener("pageshow", test3Handler, false);
|
||||
is(syntaxMenuItem.hasAttribute("checked"), false, "Syntax menu item unchecked");
|
||||
is(SpecialPowers.getBoolPref("view_source.syntax_highlight"), false, "Syntax highlighting pref set");
|
||||
|
||||
checkHighlight(mWindow, false);
|
||||
test4();
|
||||
}, false);
|
||||
|
||||
simulateClick(syntaxMenuItem);
|
||||
}
|
||||
|
||||
function test4() {
|
||||
mWindow.gBrowser.addEventListener("pageshow", function test4Handler() {
|
||||
mWindow.gBrowser.removeEventListener("pageshow", test4Handler, false);
|
||||
is(syntaxMenuItem.hasAttribute("checked"), true, "Syntax menu item checked");
|
||||
is(SpecialPowers.getBoolPref("view_source.syntax_highlight"), true, "Syntax highlighting pref set");
|
||||
|
||||
checkHighlight(mWindow, false);
|
||||
closeViewSourceWindow(mWindow, test5);
|
||||
}, false);
|
||||
|
||||
simulateClick(syntaxMenuItem);
|
||||
}
|
||||
|
||||
// Open a new view-source window to check prefs are obeyed.
|
||||
function test5() {
|
||||
SpecialPowers.setIntPref("view_source.tab_size", 2);
|
||||
SpecialPowers.setBoolPref("view_source.wrap_long_lines", true);
|
||||
SpecialPowers.setBoolPref("view_source.syntax_highlight", false);
|
||||
|
||||
executeSoon(function() {
|
||||
openViewSourceWindow(source, function(aWindow) {
|
||||
wrapMenuItem = aWindow.document.getElementById('menu_wrapLongLines');
|
||||
syntaxMenuItem = aWindow.document.getElementById('menu_highlightSyntax');
|
||||
|
||||
// Strip checked="false" attributes, since we're not interested in them.
|
||||
if (wrapMenuItem.getAttribute("checked") == "false")
|
||||
wrapMenuItem.removeAttribute("checked");
|
||||
if (syntaxMenuItem.getAttribute("checked") == "false")
|
||||
syntaxMenuItem.removeAttribute("checked");
|
||||
|
||||
is(wrapMenuItem.hasAttribute("checked"), true, "Wrap menu item checked");
|
||||
is(syntaxMenuItem.hasAttribute("checked"), false, "Syntax menu item unchecked");
|
||||
checkStyle(aWindow, "-moz-tab-size", 2);
|
||||
checkStyle(aWindow, "white-space", "pre-wrap");
|
||||
checkHighlight(aWindow, false);
|
||||
closeViewSourceWindow(aWindow, finish);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// Simulate a menu item click, including toggling the checked state.
|
||||
// This saves us from opening the menu and trying to click on the item,
|
||||
// which doesn't work on Mac OS X.
|
||||
function simulateClick(aMenuItem) {
|
||||
if (aMenuItem.hasAttribute("checked"))
|
||||
aMenuItem.removeAttribute("checked");
|
||||
else
|
||||
aMenuItem.setAttribute("checked", "true");
|
||||
|
||||
aMenuItem.click();
|
||||
}
|
||||
|
||||
function checkStyle(aWindow, aStyleProperty, aExpectedValue) {
|
||||
let gBrowser = aWindow.gBrowser;
|
||||
let computedStyle = gBrowser.contentWindow.getComputedStyle(gBrowser.contentDocument.body, null);
|
||||
|
||||
is(computedStyle.getPropertyValue(aStyleProperty), aExpectedValue, "Correct value of " + aStyleProperty);
|
||||
}
|
||||
|
||||
function checkHighlight(aWindow, aExpected) {
|
||||
let spans = aWindow.gBrowser.contentDocument.getElementsByTagName("span");
|
||||
is(Array.some(spans, function(aSpan) {
|
||||
return aSpan.className != "";
|
||||
}), aExpected, "Syntax highlighting " + (aExpected ? "on" : "off"));
|
||||
}
|
Загрузка…
Ссылка в новой задаче