Bug 1408839: Hide some moz-scrollbar media features in content docs. r?xidorn
MozReview-Commit-ID: 4I1697PAIy0
--- a/layout/style/nsMediaFeatures.cpp
+++ b/layout/style/nsMediaFeatures.cpp
@@ -632,49 +632,49 @@ nsMediaFeatures::features[] = {
nsMediaFeature::eNoRequirements,
{ nullptr },
GetIsResourceDocument
},
{
&nsGkAtoms::_moz_scrollbar_start_backward,
nsMediaFeature::eMinMaxNotAllowed,
nsMediaFeature::eBoolInteger,
- nsMediaFeature::eNoRequirements,
+ nsMediaFeature::eUserAgentAndChromeOnly,
{ &nsGkAtoms::scrollbar_start_backward },
GetSystemMetric
},
{
&nsGkAtoms::_moz_scrollbar_start_forward,
nsMediaFeature::eMinMaxNotAllowed,
nsMediaFeature::eBoolInteger,
- nsMediaFeature::eNoRequirements,
+ nsMediaFeature::eUserAgentAndChromeOnly,
{ &nsGkAtoms::scrollbar_start_forward },
GetSystemMetric
},
{
&nsGkAtoms::_moz_scrollbar_end_backward,
nsMediaFeature::eMinMaxNotAllowed,
nsMediaFeature::eBoolInteger,
- nsMediaFeature::eNoRequirements,
+ nsMediaFeature::eUserAgentAndChromeOnly,
{ &nsGkAtoms::scrollbar_end_backward },
GetSystemMetric
},
{
&nsGkAtoms::_moz_scrollbar_end_forward,
nsMediaFeature::eMinMaxNotAllowed,
nsMediaFeature::eBoolInteger,
- nsMediaFeature::eNoRequirements,
+ nsMediaFeature::eUserAgentAndChromeOnly,
{ &nsGkAtoms::scrollbar_end_forward },
GetSystemMetric
},
{
&nsGkAtoms::_moz_scrollbar_thumb_proportional,
nsMediaFeature::eMinMaxNotAllowed,
nsMediaFeature::eBoolInteger,
- nsMediaFeature::eNoRequirements,
+ nsMediaFeature::eUserAgentAndChromeOnly,
{ &nsGkAtoms::scrollbar_thumb_proportional },
GetSystemMetric
},
{
&nsGkAtoms::_moz_overlay_scrollbars,
nsMediaFeature::eMinMaxNotAllowed,
nsMediaFeature::eBoolInteger,
nsMediaFeature::eNoRequirements,
--- a/layout/style/test/chrome/bug418986-2.js
+++ b/layout/style/test/chrome/bug418986-2.js
@@ -46,16 +46,24 @@ var suppressed_toggles = [
"-moz-scrollbar-start-forward",
"-moz-scrollbar-thumb-proportional",
"-moz-touch-enabled",
"-moz-windows-compositor",
"-moz-windows-default-theme",
"-moz-windows-glass",
];
+var toggles_enabled_in_content = [
+ "-moz-mac-graphite-theme",
+ "-moz-touch-enabled",
+ "-moz-windows-compositor",
+ "-moz-windows-default-theme",
+ "-moz-windows-glass",
+];
+
// Possible values for '-moz-os-version'
var windows_versions = [
"windows-win7",
"windows-win8",
"windows-win10",
];
// Possible values for '-moz-windows-theme'
@@ -72,16 +80,17 @@ var windows_themes = [
// Read the current OS.
var OS = SpecialPowers.Services.appinfo.OS;
// If we are using Windows, add an extra toggle only
// available on that OS.
if (OS === "WINNT") {
suppressed_toggles.push("-moz-windows-classic");
+ toggles_enabled_in_content.push("-moz-windows-classic");
}
// __keyValMatches(key, val)__.
// Runs a media query and returns true if key matches to val.
var keyValMatches = (key, val) => matchMedia("(" + key + ":" + val +")").matches;
// __testMatch(key, val)__.
// Attempts to run a media query match for the given key and value.
@@ -99,17 +108,17 @@ var testMatch = function (key, val) {
};
// __testToggles(resisting)__.
// Test whether we are able to match the "toggle" media queries.
var testToggles = function (resisting) {
suppressed_toggles.forEach(
function (key) {
var exists = keyValMatches(key, 0) || keyValMatches(key, 1);
- if (resisting) {
+ if (resisting || toggles_enabled_in_content.indexOf(key) === -1) {
ok(!exists, key + " should not exist.");
} else {
ok(exists, key + " should exist.");
}
});
};
// __testWindowsSpecific__.
@@ -188,24 +197,29 @@ var suppressedMediaQueryCSSLine = functi
};
// __generateCSSLines(resisting)__.
// Creates a series of lines of CSS, each of which corresponds to
// a different media query. If the query produces a match to the
// expected value, then the element will be colored green.
var generateCSSLines = function (resisting) {
let lines = ".spoof { background-color: red;}\n";
+ let is_chrome_window = window.location.protocol === "chrome:";
expected_values.forEach(
function ([key, offVal, onVal]) {
lines += mediaQueryCSSLine(key, resisting ? onVal : offVal, "green");
});
lines += ".suppress { background-color: " + (resisting ? "green" : "red") + ";}\n";
suppressed_toggles.forEach(
function (key) {
- lines += suppressedMediaQueryCSSLine(key, resisting ? "red" : "green");
+ if (toggles_enabled_in_content.indexOf(key) === -1 && !resisting && !is_chrome_window) {
+ lines += "#" + key + " { background-color: green; }\n";
+ } else {
+ lines += suppressedMediaQueryCSSLine(key, resisting ? "red" : "green");
+ }
});
if (OS === "WINNT") {
lines += ".windows { background-color: " + (resisting ? "green" : "red") + ";}\n";
lines += windows_versions.map(val => "(-moz-os-version: " + val + ")").join(", ") +
" { #-moz-os-version { background-color: " + (resisting ? "red" : "green") + ";} }\n";
lines += windows_themes.map(val => "(-moz-windows-theme: " + val + ")").join(",") +
" { #-moz-windows-theme { background-color: " + (resisting ? "red" : "green") + ";} }\n";
}
--- a/layout/style/test/test_media_queries.html
+++ b/layout/style/test/test_media_queries.html
@@ -628,53 +628,53 @@ function run() {
// Assume we don't support grid devices
should_not_apply("(grid)");
should_apply("(grid: 0)");
should_not_apply("(grid: 1)");
should_not_apply("(grid: 2)");
should_not_apply("(grid: -1)");
// System metrics
- expression_should_be_parseable("-moz-scrollbar-start-backward");
- expression_should_be_parseable("-moz-scrollbar-start-forward");
- expression_should_be_parseable("-moz-scrollbar-end-backward");
- expression_should_be_parseable("-moz-scrollbar-end-forward");
- expression_should_be_parseable("-moz-scrollbar-thumb-proportional");
+ expression_should_not_be_parseable("-moz-scrollbar-start-backward");
+ expression_should_not_be_parseable("-moz-scrollbar-start-forward");
+ expression_should_not_be_parseable("-moz-scrollbar-end-backward");
+ expression_should_not_be_parseable("-moz-scrollbar-end-forward");
+ expression_should_not_be_parseable("-moz-scrollbar-thumb-proportional");
expression_should_be_parseable("-moz-overlay-scrollbars");
expression_should_be_parseable("-moz-windows-default-theme");
expression_should_be_parseable("-moz-mac-graphite-theme");
expression_should_be_parseable("-moz-mac-yosemite-theme");
expression_should_be_parseable("-moz-windows-accent-color-in-titlebar");
expression_should_be_parseable("-moz-windows-compositor");
expression_should_be_parseable("-moz-windows-classic");
expression_should_be_parseable("-moz-windows-glass");
expression_should_be_parseable("-moz-touch-enabled");
expression_should_be_parseable("-moz-swipe-animation-enabled");
- expression_should_be_parseable("-moz-scrollbar-start-backward: 0");
- expression_should_be_parseable("-moz-scrollbar-start-forward: 0");
- expression_should_be_parseable("-moz-scrollbar-end-backward: 0");
- expression_should_be_parseable("-moz-scrollbar-end-forward: 0");
- expression_should_be_parseable("-moz-scrollbar-thumb-proportional: 0");
+ expression_should_not_be_parseable("-moz-scrollbar-start-backward: 0");
+ expression_should_not_be_parseable("-moz-scrollbar-start-forward: 0");
+ expression_should_not_be_parseable("-moz-scrollbar-end-backward: 0");
+ expression_should_not_be_parseable("-moz-scrollbar-end-forward: 0");
+ expression_should_not_be_parseable("-moz-scrollbar-thumb-proportional: 0");
expression_should_be_parseable("-moz-overlay-scrollbars: 0");
expression_should_be_parseable("-moz-windows-default-theme: 0");
expression_should_be_parseable("-moz-mac-graphite-theme: 0");
expression_should_be_parseable("-moz-mac-yosemite-theme: 0");
expression_should_be_parseable("-moz-windows-accent-color-in-titlebar: 0");
expression_should_be_parseable("-moz-windows-compositor: 0");
expression_should_be_parseable("-moz-windows-classic: 0");
expression_should_be_parseable("-moz-windows-glass: 0");
expression_should_be_parseable("-moz-touch-enabled: 0");
expression_should_be_parseable("-moz-swipe-animation-enabled: 0");
- expression_should_be_parseable("-moz-scrollbar-start-backward: 1");
- expression_should_be_parseable("-moz-scrollbar-start-forward: 1");
- expression_should_be_parseable("-moz-scrollbar-end-backward: 1");
- expression_should_be_parseable("-moz-scrollbar-end-forward: 1");
- expression_should_be_parseable("-moz-scrollbar-thumb-proportional: 1");
+ expression_should_not_be_parseable("-moz-scrollbar-start-backward: 1");
+ expression_should_not_be_parseable("-moz-scrollbar-start-forward: 1");
+ expression_should_not_be_parseable("-moz-scrollbar-end-backward: 1");
+ expression_should_not_be_parseable("-moz-scrollbar-end-forward: 1");
+ expression_should_not_be_parseable("-moz-scrollbar-thumb-proportional: 1");
expression_should_be_parseable("-moz-overlay-scrollbars: 1");
expression_should_be_parseable("-moz-windows-default-theme: 1");
expression_should_be_parseable("-moz-mac-graphite-theme: 1");
expression_should_be_parseable("-moz-mac-yosemite-theme: 1");
expression_should_be_parseable("-moz-windows-accent-color-in-titlebar: 1");
expression_should_be_parseable("-moz-windows-compositor: 1");
expression_should_be_parseable("-moz-windows-classic: 1");
expression_should_be_parseable("-moz-windows-glass: 1");