Bug 1703630 - update mac reftests for proton and remove last proton media queries from toolkit, r=jaws

Differential Revision: https://phabricator.services.mozilla.com/D121204
This commit is contained in:
Gijs Kruitbosch 2021-08-02 15:03:14 +00:00
parent 86a6ba4bda
commit 51b740fe01
15 changed files with 10 additions and 687 deletions

View File

@ -148,7 +148,6 @@
flex-shrink: 0;
}
@media (-moz-proton) {
@media not (prefers-contrast) {
.container.infobar {
box-shadow: 0 1px 2px rgba(58, 57, 68, 0.1);
@ -276,4 +275,3 @@ strong {
color: rgb(255,154,162);
}
}
}

View File

@ -12,7 +12,6 @@
visibility: hidden;
}
@media (-moz-proton) {
dialog {
padding: 16px calc(16px - 4px);
}
@ -54,4 +53,3 @@ label, description {
/* Ensure we don't get sized to the smallest child when the checkbox text wraps. */
display: block;
}
}

View File

@ -10,10 +10,9 @@
%include ../../shared/checkbox.inc.css
@media (-moz-proton) {
/* ::::: checkbox ::::: */
checkbox[native] {
checkbox:where([native]) {
appearance: auto;
-moz-default-appearance: checkbox-container;
-moz-box-align: center;
@ -51,46 +50,3 @@ checkbox[native][disabled="true"] {
margin: 2px;
margin-inline-end: 4px;
}
} /** END Proton **/
@media not (-moz-proton) {
/* ::::: checkbox ::::: */
checkbox {
appearance: auto;
-moz-default-appearance: checkbox-container;
-moz-box-align: center;
margin: 2px 4px;
}
.checkbox-label-box {
appearance: auto;
-moz-default-appearance: checkbox-label;
}
.checkbox-label {
margin: 0;
}
/* ..... focused state ..... */
checkbox:-moz-focusring > .checkbox-label-box {
/* Native theming should take care of this but it appears to be broken with
some Gtk themes. Bug 1312169. */
outline: 1px dotted;
}
/* ..... disabled state ..... */
checkbox[disabled="true"] {
color: GrayText;
}
/* ::::: checkmark image ::::: */
.checkbox-check {
appearance: auto;
-moz-default-appearance: checkbox;
margin: 2px;
}
} /** END not Proton **/

View File

@ -6,7 +6,6 @@
%include ../../shared/menulist.inc.css
@media (-moz-proton) {
label {
margin: 1px 3px;
}
@ -48,55 +47,3 @@ label {
dropmarker[native] {
display: none;
}
} /** END Proton **/
@media not (-moz-proton) {
:host {
appearance: auto;
-moz-default-appearance: menulist;
margin: 2px 4px;
color: -moz-DialogText;
font: menu;
text-shadow: none;
}
:host(:not([disabled="true"]):hover) {
color: -moz-buttonhovertext;
}
:host(:not([disabled="true"]):hover:active),
:host(:not([disabled="true"])[open="true"]) {
color: -moz-gtk-buttonactivetext;
}
:host([disabled="true"]) {
color: GrayText;
}
/* Label box */
#label-box {
appearance: auto;
-moz-default-appearance: menulist-text;
-moz-box-align: center;
-moz-box-pack: center;
color: inherit;
}
/* Labels */
label {
margin: 1px 3px !important;
}
#highlightable-label:not([highlightable="true"]),
#label[highlightable="true"] {
display: none;
}
/* Dropmarker */
dropmarker {
display: none;
}
} /** END not Proton **/

View File

@ -6,12 +6,11 @@
%include ../../shared/checkbox.inc.css
@media (-moz-proton) {
checkbox:not([native]):-moz-focusring > .checkbox-check {
outline: 2px solid var(--focus-outline-color, -moz-mac-focusring);
}
checkbox[native] {
checkbox:where([native]) {
appearance: auto;
-moz-default-appearance: checkbox-container;
-moz-box-align: center;
@ -41,36 +40,3 @@ checkbox[native][disabled="true"] {
width: 1.3em;
height: 1.3em;
}
} /** END Proton **/
@media not (-moz-proton) {
checkbox {
appearance: auto;
-moz-default-appearance: checkbox-container;
-moz-box-align: center;
margin: 4px 2px;
}
.checkbox-label {
margin: 1px 0;
}
/* ..... disabled state ..... */
checkbox[disabled="true"] {
color: GrayText;
}
/* ::::: checkmark image ::::: */
.checkbox-check {
appearance: auto;
-moz-default-appearance: checkbox;
margin: 1px 1px 0;
/* vertical-align tells native theming where to snap to. However, this doesn't
* always work reliably because of bug 503833. */
vertical-align: top;
width: 1.3em;
height: 1.3em;
}
} /** END not Proton **/

View File

@ -6,7 +6,6 @@
%include ../../shared/menulist.inc.css
@media (-moz-proton) {
label:not([native]) {
margin: 0 3px;
}
@ -48,51 +47,3 @@ label[native] {
dropmarker[native] {
display: none;
}
} /** END Proton **/
@media not (-moz-proton) {
:host {
appearance: auto;
-moz-default-appearance: menulist;
margin: 5px 2px 3px;
min-height: 20px;
color: -moz-DialogText;
text-shadow: none;
}
:host([disabled="true"]) {
color: GrayText;
}
:host([disabled="true"]) > dropmarker {
padding-inline-start: 7px !important;
}
/* Label box */
#label-box {
appearance: auto;
-moz-default-appearance: menulist-text;
-moz-box-align: center;
-moz-box-pack: center;
margin-bottom: 1px;
}
/* Labels */
label {
margin: 1px 3px !important;
}
#highlightable-label:not([highlightable="true"]),
#label[highlightable="true"] {
display: none;
}
/* Dropmarker */
dropmarker {
display: none;
}
} /** END not Proton **/

View File

@ -1,161 +0,0 @@
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<!--
* This is a complicated test.
* XUL authors like to place several different widgets on the same line by
* putting them in a <hbox align="center">. In order for this to look good,
* the baselines of the text contained in the widgets should line up.
* This is what this test is testing.
* The test passes if it's completely white.
*
* It works like this:
* For every combination of two different widgets (where widget is one of
* label, radio, checkbox, button, menulist)
* there's a stack with two layers. The back layer in the stack is
* just a vertically centered label with a bunch of underscores. This is the
* baseline that the text on the widgets should hit.
* On the foreground layer in the stack we've placed the pair of widgets we're
* testing. They also have underscores in their labels.
*
* Now we want to test whether the underscores in the foreground layer are directly
* on top of those in the back layer. For that we use color-keying and a tricky
* SVG color transformation.
* The back layer of the stack has a red background; the underscores of the
* back label are in white (and have a white text-shadow in order to fill up the
* gaps between the individual letters).
* Now we want the foreground layer to be solid white, except for those pixels
* that make up the labels: These should be transparent.
* So if the baselines line up, everything is white, since at those pixels where
* the foreground is transparent, only the white pixels from the back layer shine
* through. If the baselines don't line up, red pixels from the background will
* shine through, and the comparison with about:blank (completely white) will fail.
*
* So how do we get the foreground white and transparent? That's the job of the
* SVG color transformation filter. It's a simple matrix that makes turns opaque
* yellow into transparent and all other colors into white.
* -->
<window title="Baseline test"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:svg="http://www.w3.org/2000/svg"
orient="vertical"
class="reftest-wait"
onload="loaded()">
<html:style><![CDATA[
:root {
-moz-appearance: none;
background-color: white;
}
.regular {
font: -moz-dialog;
}
.small {
font: message-box;
}
.spacer {
height: 40px;
}
stack > hbox:first-child {
background: red;
color: white;
text-shadow: 5px 0 white, -5px 0 white;
}
stack > .foreground {
filter: url(#yellow2transparent);
}
stack > hbox:last-child > * {
color: yellow;
}
]]>
</html:style>
<svg:svg style="visibility: collapse;">
<svg:filter id="yellow2transparent" color-interpolation-filters="sRGB">
<svg:feColorMatrix type="matrix"
values="0 0 0 0 1
0 0 0 0 1
0 0 0 0 1
-100 -100 100 -100 300"/>
</svg:filter>
</svg:svg>
<script type="application/javascript"><![CDATA[
function cE(elem) {
return document.createElementNS("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", elem);
}
function elWithValue(elem, val) {
let e = cE(elem);
e.setAttribute(elem == "label" ? "value" : "label", val);
return e;
}
function allPairs(set) {
let ps = [];
for(let i = 0; i < set.length; ++i) {
for (let j = i + 1; j < set.length; ++j) {
ps.push([set[i], set[j]]);
}
}
return ps;
}
function createLabel(v) {
return elWithValue("label", v);
}
function createRadio(v) {
return elWithValue("radio", v);
}
function createCheckbox(v) {
return elWithValue("checkbox", v);
}
function createButton(v) {
return elWithValue("button", v);
}
function createMenulist(v) {
let [list, popup, item] = [cE("menulist"), cE("menupopup"), elWithValue("menuitem", v)];
item.setAttribute("selected", "true");
popup.appendChild(item);
list.appendChild(popup);
return list;
}
function loaded() {
let template = document.getElementById("template");
["regular", "small"].forEach(function(size) {
let wrapper = document.querySelectorAll("#wrapper > ." + size)[0];
allPairs([
createLabel, createRadio, createCheckbox, createButton, createMenulist,
]).forEach(function(elemList) {
let newBox = template.cloneNode(true);
newBox.className = "spacer";
let foregroundRow = newBox.firstChild.lastChild;
elemList.forEach(function(creator) {
foregroundRow.appendChild(creator("______"));
});
wrapper.appendChild(newBox);
});
});
document.documentElement.className = "";
}
]]></script>
<vbox id="template">
<stack>
<hbox align="center">
<label value="______________________________________________"/>
</hbox>
<hbox align="center" class="foreground">
</hbox>
</stack>
</vbox>
<hbox id="wrapper">
<vbox class="regular" flex="1"/>
<vbox class="small" flex="1"/>
</hbox>
<spacer flex="1"/>
</window>

View File

@ -11,21 +11,21 @@ checkbox {
<window title="Checkboxes with mini, small and regular control font"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<vbox style="font-size: 9px">
<hbox><checkbox label="Mini"/></hbox>
<hbox><checkbox native="true" label="Mini"/></hbox>
</vbox>
<vbox style="font: message-box">
<hbox><checkbox label="Small"/></hbox>
<hbox><checkbox native="true" label="Small"/></hbox>
</vbox>
<vbox style="font: -moz-dialog">
<hbox><checkbox label="Regular"/></hbox>
<hbox><checkbox native="true" label="Regular"/></hbox>
</vbox>
<vbox style="font-size: 9px">
<hbox><checkbox label="Mini" checked="true"/></hbox>
<hbox><checkbox native="true" label="Mini" checked="true"/></hbox>
</vbox>
<vbox style="font: message-box">
<hbox><checkbox label="Small" checked="true"/></hbox>
<hbox><checkbox native="true" label="Small" checked="true"/></hbox>
</vbox>
<vbox style="font: -moz-dialog">
<hbox><checkbox label="Regular" checked="true"/></hbox>
<hbox><checkbox native="true" label="Regular" checked="true"/></hbox>
</vbox>
</window>

View File

@ -1,99 +0,0 @@
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<window title="Stretched controls test reference"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:svg="http://www.w3.org/2000/svg"
orient="vertical"
class="reftest-wait"
onload="loaded()">
<html:style><![CDATA[
.regular {
font: -moz-dialog;
}
.small {
font: message-box;
}
.spacer {
height: 40px;
}
.foreground > :nth-child(2) {
display: none; /* <----- This is the only difference from nostretch.xhtml */
}
]]>
</html:style>
<script type="application/javascript"><![CDATA[
function cE(elem) {
return document.createElementNS("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", elem);
}
function elWithValue(elem, val) {
let e = cE(elem);
e.setAttribute(elem == "label" ? "value" : "label", val);
return e;
}
function allPairs(set) {
let ps = [];
for(let i = 0; i < set.length; ++i) {
for (let j = 0; j < set.length; ++j) {
if (i != j)
ps.push([set[i], set[j]]);
}
}
return ps;
}
function createLabel(v) {
return elWithValue("label", v);
}
function createRadio(v) {
return elWithValue("radio", v);
}
function createCheckbox(v) {
return elWithValue("checkbox", v);
}
function createButton(v) {
return elWithValue("button", v);
}
function createMenulist(v) {
let [list, popup, item] = [cE("menulist"), cE("menupopup"), elWithValue("menuitem", v)];
item.setAttribute("selected", "true");
popup.appendChild(item);
list.appendChild(popup);
return list;
}
function loaded() {
let template = document.getElementById("template");
["regular", "small"].forEach(function(size) {
let wrapper = document.querySelectorAll("#wrapper > ." + size)[0];
allPairs([
createButton, createMenulist,
]).forEach(function(elemList) {
let newBox = template.cloneNode(true);
newBox.className = "spacer";
let foregroundRow = newBox.firstChild;
elemList.forEach(function(creator) {
foregroundRow.appendChild(creator("Label"));
});
wrapper.appendChild(newBox);
});
});
document.documentElement.className = "";
}
]]></script>
<vbox id="template">
<hbox class="foreground"/>
</vbox>
<hbox id="wrapper">
<vbox class="regular" width="500"/>
<vbox class="small" flex="1"/>
</hbox>
<spacer flex="1"/>
</window>

View File

@ -1,112 +0,0 @@
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<!--
* This test tests whether you can put different widgets in the same
* hbox without stretching them, even if you don't set align="center".
* I.e. prior to the fix that added this patch, having a button and a
* menulist in the same hbox next to each other would stretch the menulist
* vertically because the button had such a big vertical margin.
*
* The test works like this: Two widgets are placed in a hbox, and the second
* widget is visibility: hidden. In the reference (nostretch-ref.xhtml), the
* second widget is display: none. If test and reference look the same,
* adding the second widget hasn't affected the appearance of the first widget,
* and everything's fine.
* -->
<window title="Stretched controls test"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:svg="http://www.w3.org/2000/svg"
orient="vertical"
class="reftest-wait"
onload="loaded()">
<html:style><![CDATA[
.regular {
font: -moz-dialog;
}
.small {
font: message-box;
}
.spacer {
height: 40px;
}
.foreground > :nth-child(2) {
visibility: hidden;
}
]]>
</html:style>
<script type="application/javascript"><![CDATA[
function cE(elem) {
return document.createElementNS("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", elem);
}
function elWithValue(elem, val) {
let e = cE(elem);
e.setAttribute(elem == "label" ? "value" : "label", val);
return e;
}
function allPairs(set) {
let ps = [];
for(let i = 0; i < set.length; ++i) {
for (let j = 0; j < set.length; ++j) {
if (i != j)
ps.push([set[i], set[j]]);
}
}
return ps;
}
function createLabel(v) {
return elWithValue("label", v);
}
function createRadio(v) {
return elWithValue("radio", v);
}
function createCheckbox(v) {
return elWithValue("checkbox", v);
}
function createButton(v) {
return elWithValue("button", v);
}
function createMenulist(v) {
let [list, popup, item] = [cE("menulist"), cE("menupopup"), elWithValue("menuitem", v)];
item.setAttribute("selected", "true");
popup.appendChild(item);
list.appendChild(popup);
return list;
}
function loaded() {
let template = document.getElementById("template");
["regular", "small"].forEach(function(size) {
let wrapper = document.querySelectorAll("#wrapper > ." + size)[0];
allPairs([
createButton, createMenulist,
]).forEach(function(elemList) {
let newBox = template.cloneNode(true);
newBox.className = "spacer";
let foregroundRow = newBox.firstChild;
elemList.forEach(function(creator) {
foregroundRow.appendChild(creator("Label"));
});
wrapper.appendChild(newBox);
});
});
document.documentElement.className = "";
}
]]></script>
<vbox id="template">
<hbox class="foreground"/>
</vbox>
<hbox id="wrapper">
<vbox class="regular" width="500"/>
<vbox class="small" flex="1"/>
</hbox>
<spacer flex="1"/>
</window>

View File

@ -1,8 +1,5 @@
# This folder is registered in the chrome manifest at layout/tools/reftest/jar.mn.
defaults pref(widget.non-native-theme.enabled,false) pref(browser.proton.enabled,false) # These are tests for the native theme with Proton disabled (for now - see bug 1703630)
defaults pref(widget.non-native-theme.enabled,false) # These are tests for the native theme.
skip-if(!cocoaWidget) == chrome://reftest/content/osx-theme/radiosize.xhtml chrome://reftest/content/osx-theme/radiosize-ref.xhtml
skip-if(!cocoaWidget) == chrome://reftest/content/osx-theme/checkboxsize.xhtml chrome://reftest/content/osx-theme/checkboxsize-ref.xhtml
# This failure is caused by bug 1586055 in WebRender
skip-if(!cocoaWidget) fails-if(webrender) == chrome://reftest/content/osx-theme/baseline.xhtml about:blank
skip-if(!cocoaWidget) == chrome://reftest/content/osx-theme/nostretch.xhtml chrome://reftest/content/osx-theme/nostretch-ref.xhtml

View File

@ -5,19 +5,16 @@
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
@namespace html url("http://www.w3.org/1999/xhtml");
@media (-moz-proton) {
checkbox {
appearance: none;
-moz-box-align: center;
margin: 4px 2px;
}
} /*** END Proton ***/
.checkbox-icon[src] {
margin-inline-end: 2px;
}
@media (-moz-proton) {
.checkbox-label {
margin: 1px 0;
}
@ -95,4 +92,3 @@ checkbox:not([native]):-moz-focusring > .checkbox-check {
fill: var(--checkbox-checked-border-color-hover, -moz-accent-color-foreground);
}
}
} /** END Proton **/

View File

@ -4,7 +4,6 @@
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
@media (-moz-proton) {
:host(:not([native])) {
appearance: none;
background-color: var(--button-bgcolor, ButtonFace);
@ -61,4 +60,3 @@ dropmarker:not([native])::part(icon) {
#label[highlightable="true"] {
display: none;
}
} /** END Proton **/

View File

@ -10,10 +10,9 @@
%include ../../shared/checkbox.inc.css
@media (-moz-proton) {
/* ::::: checkbox ::::: */
checkbox[native] {
checkbox:where([native]) {
appearance: auto;
-moz-default-appearance: checkbox-container;
-moz-box-align: center;
@ -57,53 +56,3 @@ checkbox[native][disabled="true"] {
min-height: 13px;
margin-inline-end: 5px;
}
} /** END Proton **/
@media not (-moz-proton) {
/* ::::: checkbox ::::: */
checkbox {
appearance: auto;
-moz-default-appearance: checkbox-container;
-moz-box-align: center;
margin: 2px 4px;
padding-top: 1px;
padding-bottom: 1px;
padding-inline-start: 4px;
padding-inline-end: 2px;
}
.checkbox-label {
margin: 0;
}
/* ..... focused state ..... */
checkbox:-moz-focusring > .checkbox-label-box {
outline: 1px dotted;
}
/* ..... disabled state ..... */
checkbox[disabled="true"] {
color: GrayText;
}
@media (-moz-windows-classic) {
checkbox[disabled="true"] {
color: ThreeDShadow;
text-shadow: 1px 1px ThreeDHighlight;
}
}
/* ::::: checkmark image ::::: */
.checkbox-check {
appearance: auto;
-moz-default-appearance: checkbox;
-moz-box-align: center;
min-width: 13px;
min-height: 13px;
margin-inline-end: 3px;
}
} /** END not Proton **/

View File

@ -6,7 +6,6 @@
%include ../../shared/menulist.inc.css
@media (-moz-proton) {
label {
margin: 0 3px;
}
@ -57,63 +56,3 @@ label {
margin-inline: 3px -3px;
}
}
} /** END Proton **/
@media not (-moz-proton) {
:host {
appearance: auto;
-moz-default-appearance: menulist;
margin: 2px 4px;
color: FieldText;
text-shadow: none;
}
:host([disabled="true"]) {
background-color: -moz-Dialog;
color: GrayText;
}
/* Label box */
#label-box {
-moz-box-align: center;
-moz-box-pack: center;
}
:host(:not([open="true"]):focus) > #label-box {
background-color: Highlight;
color: HighlightText;
}
:host(:not([open="true"]):-moz-focusring) > #label-box {
outline: 1px dotted;
}
/* Labels */
label {
margin: 0 3px !important;
}
#highlightable-label:not([highlightable="true"]),
#label[highlightable="true"] {
display: none;
}
@media (-moz-windows-default-theme) {
#label-box {
background-color: transparent !important;
color: inherit !important;
}
image,
label {
margin-block: -1px !important;
}
dropmarker {
margin-top: -2px;
margin-inline: 3px -3px;
}
}
} /** END not Proton **/