summaryrefslogtreecommitdiffstats
path: root/layout/reftests/native-theme
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:44:51 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:44:51 +0000
commit9e3c08db40b8916968b9f30096c7be3f00ce9647 (patch)
treea68f146d7fa01f0134297619fbe7e33db084e0aa /layout/reftests/native-theme
parentInitial commit. (diff)
downloadthunderbird-upstream.tar.xz
thunderbird-upstream.zip
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'layout/reftests/native-theme')
-rw-r--r--layout/reftests/native-theme/427122-1-ref.html17
-rw-r--r--layout/reftests/native-theme/427122-1.html18
-rw-r--r--layout/reftests/native-theme/470711-1-ref.xhtml16
-rw-r--r--layout/reftests/native-theme/470711-1.xhtml18
-rw-r--r--layout/reftests/native-theme/482955-1-ref.xhtml8
-rw-r--r--layout/reftests/native-theme/482955-1.xhtml9
-rw-r--r--layout/reftests/native-theme/492155-1.html7
-rw-r--r--layout/reftests/native-theme/492155-2.html7
-rw-r--r--layout/reftests/native-theme/492155-3.html7
-rw-r--r--layout/reftests/native-theme/492155-4.html10
-rw-r--r--layout/reftests/native-theme/676387-1-ref.xhtml6
-rw-r--r--layout/reftests/native-theme/676387-1.xhtml12
-rw-r--r--layout/reftests/native-theme/blank-window.xhtml5
-rw-r--r--layout/reftests/native-theme/border-radius-ref.html9
-rw-r--r--layout/reftests/native-theme/border-radius.html9
-rw-r--r--layout/reftests/native-theme/box-shadow-button-ref.html1
-rw-r--r--layout/reftests/native-theme/box-shadow-button.html1
-rw-r--r--layout/reftests/native-theme/box-shadow-combobox-ref.html4
-rw-r--r--layout/reftests/native-theme/box-shadow-combobox.html4
-rw-r--r--layout/reftests/native-theme/box-shadow-input-ref.html1
-rw-r--r--layout/reftests/native-theme/box-shadow-input.html1
-rw-r--r--layout/reftests/native-theme/box-shadow-listbox-ref.html4
-rw-r--r--layout/reftests/native-theme/box-shadow-listbox.html4
-rw-r--r--layout/reftests/native-theme/button-html-not-blank.html1
-rw-r--r--layout/reftests/native-theme/button-native.html2
-rw-r--r--layout/reftests/native-theme/button-nonnative-when-styled-ref.html17
-rw-r--r--layout/reftests/native-theme/button-nonnative-when-styled.html17
-rw-r--r--layout/reftests/native-theme/button-nonnative.html2
-rw-r--r--layout/reftests/native-theme/button-not-blank.html1
-rw-r--r--layout/reftests/native-theme/checkbox-dynamic-1-ref.html18
-rw-r--r--layout/reftests/native-theme/checkbox-dynamic-1.html39
-rw-r--r--layout/reftests/native-theme/checkbox-native.html2
-rw-r--r--layout/reftests/native-theme/checkbox-nonnative.html2
-rw-r--r--layout/reftests/native-theme/checkbox-not-blank.html1
-rw-r--r--layout/reftests/native-theme/checkbox-not-mirrored-when-rtl-ref.html2
-rw-r--r--layout/reftests/native-theme/checkbox-not-mirrored-when-rtl.html2
-rw-r--r--layout/reftests/native-theme/checkbox-still-native-when-styled-ref.html14
-rw-r--r--layout/reftests/native-theme/checkbox-still-native-when-styled.html14
-rw-r--r--layout/reftests/native-theme/combobox-native.html2
-rw-r--r--layout/reftests/native-theme/combobox-nonnative-when-styled-ref.html24
-rw-r--r--layout/reftests/native-theme/combobox-nonnative-when-styled.html24
-rw-r--r--layout/reftests/native-theme/combobox-nonnative.html2
-rw-r--r--layout/reftests/native-theme/combobox-not-blank.html1
-rw-r--r--layout/reftests/native-theme/fieldset-not-blank.html1
-rw-r--r--layout/reftests/native-theme/file-not-blank.html1
-rw-r--r--layout/reftests/native-theme/listbox-native.html2
-rw-r--r--layout/reftests/native-theme/listbox-nonnative-when-styled-ref.html19
-rw-r--r--layout/reftests/native-theme/listbox-nonnative-when-styled.html19
-rw-r--r--layout/reftests/native-theme/listbox-nonnative.html2
-rw-r--r--layout/reftests/native-theme/listbox-not-blank.html1
-rw-r--r--layout/reftests/native-theme/native-theme-disabled-cascade-levels-ref.html6
-rw-r--r--layout/reftests/native-theme/native-theme-disabled-cascade-levels.html10
-rw-r--r--layout/reftests/native-theme/progress-nobar.html7
-rw-r--r--layout/reftests/native-theme/progress-overflow-ref.html10
-rw-r--r--layout/reftests/native-theme/progress-overflow-small.html9
-rw-r--r--layout/reftests/native-theme/progress-overflow.html9
-rw-r--r--layout/reftests/native-theme/radio-native.html2
-rw-r--r--layout/reftests/native-theme/radio-nonnative.html2
-rw-r--r--layout/reftests/native-theme/radio-not-blank.html1
-rw-r--r--layout/reftests/native-theme/radio-still-native-when-styled-ref.html14
-rw-r--r--layout/reftests/native-theme/radio-still-native-when-styled.html14
-rw-r--r--layout/reftests/native-theme/reftest.list68
-rw-r--r--layout/reftests/native-theme/resizer-bottomleft-rtl.xhtml10
-rw-r--r--layout/reftests/native-theme/resizer-bottomleft.xhtml10
-rw-r--r--layout/reftests/native-theme/resizer-bottomright-rtl.xhtml10
-rw-r--r--layout/reftests/native-theme/resizer-bottomright.xhtml10
-rw-r--r--layout/reftests/native-theme/resizer-left.xhtml10
-rw-r--r--layout/reftests/native-theme/scroll-thumb-minimum-size-notheme-ref.html4
-rw-r--r--layout/reftests/native-theme/scroll-thumb-minimum-size-notheme.html31
-rw-r--r--layout/reftests/native-theme/scroll-thumb-minimum-size-theme-ref.html4
-rw-r--r--layout/reftests/native-theme/scroll-thumb-minimum-size-theme.html14
-rw-r--r--layout/reftests/native-theme/text-control-not-blank.html1
-rw-r--r--layout/reftests/native-theme/text-input-native.html2
-rw-r--r--layout/reftests/native-theme/text-input-nonnative-when-styled-ref.html23
-rw-r--r--layout/reftests/native-theme/text-input-nonnative-when-styled.html23
-rw-r--r--layout/reftests/native-theme/text-input-nonnative.html2
-rw-r--r--layout/reftests/native-theme/textarea-native.html2
-rw-r--r--layout/reftests/native-theme/textarea-nonnative-when-styled-ref.html17
-rw-r--r--layout/reftests/native-theme/textarea-nonnative-when-styled.html18
-rw-r--r--layout/reftests/native-theme/textarea-nonnative.html2
-rw-r--r--layout/reftests/native-theme/textarea-not-blank.html1
81 files changed, 756 insertions, 0 deletions
diff --git a/layout/reftests/native-theme/427122-1-ref.html b/layout/reftests/native-theme/427122-1-ref.html
new file mode 100644
index 0000000000..0aa35f7167
--- /dev/null
+++ b/layout/reftests/native-theme/427122-1-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML>
+<html>
+<style>
+div {
+ border: 1px solid black;
+}
+
+select {
+}
+</style>
+<body>
+
+<div><select><option>Hello</option></select></div>
+
+</body>
+
+</html>
diff --git a/layout/reftests/native-theme/427122-1.html b/layout/reftests/native-theme/427122-1.html
new file mode 100644
index 0000000000..8e1f547506
--- /dev/null
+++ b/layout/reftests/native-theme/427122-1.html
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML>
+<html>
+<style>
+div {
+ border: 1px solid black;
+}
+
+select {
+ padding: 10px;
+}
+</style>
+<body>
+
+<div><select><option>Hello</option></select></div>
+
+</body>
+
+</html>
diff --git a/layout/reftests/native-theme/470711-1-ref.xhtml b/layout/reftests/native-theme/470711-1-ref.xhtml
new file mode 100644
index 0000000000..a13bfda39a
--- /dev/null
+++ b/layout/reftests/native-theme/470711-1-ref.xhtml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
+
+<window id="window470711"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <tabbox>
+ <tabs>
+ <tab label="One"/>
+ <tab label="Two" style="padding: 0"/>
+ </tabs>
+ <tabpanels>
+ <label value="One"/>
+ <label value="Two"/>
+ </tabpanels>
+ </tabbox>
+</window>
diff --git a/layout/reftests/native-theme/470711-1.xhtml b/layout/reftests/native-theme/470711-1.xhtml
new file mode 100644
index 0000000000..4060e89c4f
--- /dev/null
+++ b/layout/reftests/native-theme/470711-1.xhtml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
+
+<window id="window470711"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <tabbox>
+ <tabs>
+ <tab label="One"/>
+ <tab label="Two" style="padding: 0"/>
+ <tab label="Three" style="display: none"/>
+ </tabs>
+ <tabpanels>
+ <label value="One"/>
+ <label value="Two"/>
+ <label value="Three"/>
+ </tabpanels>
+ </tabbox>
+</window>
diff --git a/layout/reftests/native-theme/482955-1-ref.xhtml b/layout/reftests/native-theme/482955-1-ref.xhtml
new file mode 100644
index 0000000000..38404e1985
--- /dev/null
+++ b/layout/reftests/native-theme/482955-1-ref.xhtml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <hbox>
+ <hbox style="-moz-appearance: textfield;">
+ <spacer style="padding: 50px;"/>
+ </hbox>
+ </hbox>
+</window>
diff --git a/layout/reftests/native-theme/482955-1.xhtml b/layout/reftests/native-theme/482955-1.xhtml
new file mode 100644
index 0000000000..5235172e31
--- /dev/null
+++ b/layout/reftests/native-theme/482955-1.xhtml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <hbox>
+ <hbox flex="1" style="-moz-appearance: textfield;">
+ <spacer style="padding: 50px;"/>
+ </hbox>
+ <spacer width="10000" flex="1"/>
+ </hbox>
+</window>
diff --git a/layout/reftests/native-theme/492155-1.html b/layout/reftests/native-theme/492155-1.html
new file mode 100644
index 0000000000..161a27ce88
--- /dev/null
+++ b/layout/reftests/native-theme/492155-1.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<div style="width: 200px; height: 200px; margin: 50px; -moz-transform: rotate(90deg); position: relative;">
+ <div style="height: 200px; overflow: auto;">
+ <div style="height: 400px;"></div>
+ </div>
+ <div style="position: absolute; top: -2px; right: -2px; bottom: -2px; width: 50px; background: white;"></div>
+</div>
diff --git a/layout/reftests/native-theme/492155-2.html b/layout/reftests/native-theme/492155-2.html
new file mode 100644
index 0000000000..692f90b192
--- /dev/null
+++ b/layout/reftests/native-theme/492155-2.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<div style="width: 200px; height: 200px; margin: 50px; -moz-transform: scale(0.5); position: relative;">
+ <div style="height: 200px; overflow: auto;">
+ <div style="height: 400px;"></div>
+ </div>
+ <div style="position: absolute; top: -2px; right: -2px; bottom: -2px; width: 50px; background: white;"></div>
+</div>
diff --git a/layout/reftests/native-theme/492155-3.html b/layout/reftests/native-theme/492155-3.html
new file mode 100644
index 0000000000..7424e7a744
--- /dev/null
+++ b/layout/reftests/native-theme/492155-3.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<div style="width: 200px; height: 200px; margin: 50px; -moz-transform: skewY(30deg); position: relative;">
+ <div style="height: 200px; overflow: auto;">
+ <div style="height: 400px;"></div>
+ </div>
+ <div style="position: absolute; top: -2px; right: -2px; bottom: -2px; width: 50px; background: white;"></div>
+</div>
diff --git a/layout/reftests/native-theme/492155-4.html b/layout/reftests/native-theme/492155-4.html
new file mode 100644
index 0000000000..491eb62fc0
--- /dev/null
+++ b/layout/reftests/native-theme/492155-4.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html style="height: 100%;"><body style="height: 100%; margin: 0;">
+<div style="height: 50%"></div>
+
+<div style="width: 200px; height: 200px; -moz-transform: scale(-1); position: relative;">
+ <div style="height: 200px; overflow: auto;">
+ <div style="height: 400px;"></div>
+ </div>
+</div>
+</div>
diff --git a/layout/reftests/native-theme/676387-1-ref.xhtml b/layout/reftests/native-theme/676387-1-ref.xhtml
new file mode 100644
index 0000000000..46c4d8f05a
--- /dev/null
+++ b/layout/reftests/native-theme/676387-1-ref.xhtml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
+<window id="window676387-1-ref"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <hbox><button id="button" label="SUCCESS"/></hbox>
+</window>
diff --git a/layout/reftests/native-theme/676387-1.xhtml b/layout/reftests/native-theme/676387-1.xhtml
new file mode 100644
index 0000000000..208345ed68
--- /dev/null
+++ b/layout/reftests/native-theme/676387-1.xhtml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
+<window id="window676387-1"
+ class="reftest-wait"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ onload="var button = document.getElementById('button');
+ var r = button.getBoundingClientRect();
+ if (document.elementFromPoint(r.right, r.top) == button.parentNode)
+ button.label = 'SUCCESS';
+ document.documentElement.className = '';">
+ <hbox><button id="button" label="FAIL"/></hbox>
+</window>
diff --git a/layout/reftests/native-theme/blank-window.xhtml b/layout/reftests/native-theme/blank-window.xhtml
new file mode 100644
index 0000000000..ad5e963b79
--- /dev/null
+++ b/layout/reftests/native-theme/blank-window.xhtml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
+
+<window title="Blank window"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"/>
diff --git a/layout/reftests/native-theme/border-radius-ref.html b/layout/reftests/native-theme/border-radius-ref.html
new file mode 100644
index 0000000000..908f9515d8
--- /dev/null
+++ b/layout/reftests/native-theme/border-radius-ref.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML>
+<html>
+<body>
+<div style="padding:50px; border-radius:50px; width:400px; height:400px;">
+ <input type="radio">
+ <input type="checkbox">
+</div>
+</body>
+</html>
diff --git a/layout/reftests/native-theme/border-radius.html b/layout/reftests/native-theme/border-radius.html
new file mode 100644
index 0000000000..43ed396459
--- /dev/null
+++ b/layout/reftests/native-theme/border-radius.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML>
+<html>
+<body>
+<div style="padding:50px; border-radius:50px; width:400px; height:400px; overflow:hidden;">
+ <input type="radio">
+ <input type="checkbox">
+</div>
+</body>
+</html>
diff --git a/layout/reftests/native-theme/box-shadow-button-ref.html b/layout/reftests/native-theme/box-shadow-button-ref.html
new file mode 100644
index 0000000000..87957a974f
--- /dev/null
+++ b/layout/reftests/native-theme/box-shadow-button-ref.html
@@ -0,0 +1 @@
+<button>Hello</button>
diff --git a/layout/reftests/native-theme/box-shadow-button.html b/layout/reftests/native-theme/box-shadow-button.html
new file mode 100644
index 0000000000..f87dbb5f22
--- /dev/null
+++ b/layout/reftests/native-theme/box-shadow-button.html
@@ -0,0 +1 @@
+<button style="box-shadow: 10px 10px gold;">Hello</button>
diff --git a/layout/reftests/native-theme/box-shadow-combobox-ref.html b/layout/reftests/native-theme/box-shadow-combobox-ref.html
new file mode 100644
index 0000000000..8f93c10fba
--- /dev/null
+++ b/layout/reftests/native-theme/box-shadow-combobox-ref.html
@@ -0,0 +1,4 @@
+<select size="1">
+ <option>Hello</option>
+ <option>Kitty</option>
+</select>
diff --git a/layout/reftests/native-theme/box-shadow-combobox.html b/layout/reftests/native-theme/box-shadow-combobox.html
new file mode 100644
index 0000000000..009099af42
--- /dev/null
+++ b/layout/reftests/native-theme/box-shadow-combobox.html
@@ -0,0 +1,4 @@
+<select size="1" style="box-shadow: 10px 10px gold;">
+ <option>Hello</option>
+ <option>Kitty</option>
+</select>
diff --git a/layout/reftests/native-theme/box-shadow-input-ref.html b/layout/reftests/native-theme/box-shadow-input-ref.html
new file mode 100644
index 0000000000..347c7681ae
--- /dev/null
+++ b/layout/reftests/native-theme/box-shadow-input-ref.html
@@ -0,0 +1 @@
+<input>
diff --git a/layout/reftests/native-theme/box-shadow-input.html b/layout/reftests/native-theme/box-shadow-input.html
new file mode 100644
index 0000000000..fbdd76003f
--- /dev/null
+++ b/layout/reftests/native-theme/box-shadow-input.html
@@ -0,0 +1 @@
+<input style="box-shadow: 10px 10px gold;">
diff --git a/layout/reftests/native-theme/box-shadow-listbox-ref.html b/layout/reftests/native-theme/box-shadow-listbox-ref.html
new file mode 100644
index 0000000000..437cbd1c1e
--- /dev/null
+++ b/layout/reftests/native-theme/box-shadow-listbox-ref.html
@@ -0,0 +1,4 @@
+<select size="2">
+ <option>Hello</option>
+ <option>Kitty</option>
+</select>
diff --git a/layout/reftests/native-theme/box-shadow-listbox.html b/layout/reftests/native-theme/box-shadow-listbox.html
new file mode 100644
index 0000000000..d70fa5eeba
--- /dev/null
+++ b/layout/reftests/native-theme/box-shadow-listbox.html
@@ -0,0 +1,4 @@
+<select size="2" style="box-shadow: 10px 10px gold;">
+ <option>Hello</option>
+ <option>Kitty</option>
+</select>
diff --git a/layout/reftests/native-theme/button-html-not-blank.html b/layout/reftests/native-theme/button-html-not-blank.html
new file mode 100644
index 0000000000..e6c324fc68
--- /dev/null
+++ b/layout/reftests/native-theme/button-html-not-blank.html
@@ -0,0 +1 @@
+<button></button>
diff --git a/layout/reftests/native-theme/button-native.html b/layout/reftests/native-theme/button-native.html
new file mode 100644
index 0000000000..852ede890b
--- /dev/null
+++ b/layout/reftests/native-theme/button-native.html
@@ -0,0 +1,2 @@
+<!DOCTYPE HTML>
+<input type="button" value="Button">
diff --git a/layout/reftests/native-theme/button-nonnative-when-styled-ref.html b/layout/reftests/native-theme/button-nonnative-when-styled-ref.html
new file mode 100644
index 0000000000..a3d4271c04
--- /dev/null
+++ b/layout/reftests/native-theme/button-nonnative-when-styled-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML>
+<!-- these should make the input non-native -->
+<input type="button" value="Button" style="-moz-appearance: none; border-width: 0">
+<input type="button" value="Button" style="-moz-appearance: none; border-width: 1px">
+<input type="button" value="Button" style="-moz-appearance: none; border-width: 2px">
+<input type="button" value="Button" style="-moz-appearance: none; border-width: 3px">
+<input type="button" value="Button" style="-moz-appearance: none; border-width: 4px">
+<input type="button" value="Button" style="-moz-appearance: none; border-width: 5px">
+<input type="button" value="Button" style="-moz-appearance: none; border-width: 6px">
+<input type="button" value="Button" style="-moz-appearance: none; border-style: dotted">
+<input type="button" value="Button" style="-moz-appearance: none; border-color: green">
+<input type="button" value="Button" style="-moz-appearance: none; background-color: transparent">
+<input type="button" value="Button" style="-moz-appearance: none; background-color: white">
+
+<!-- these should let it stay native -->
+<input type="button" value="">
+<input type="button" value="">
diff --git a/layout/reftests/native-theme/button-nonnative-when-styled.html b/layout/reftests/native-theme/button-nonnative-when-styled.html
new file mode 100644
index 0000000000..311a43daad
--- /dev/null
+++ b/layout/reftests/native-theme/button-nonnative-when-styled.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML>
+<!-- these should make the input non-native -->
+<input type="button" value="Button" style="border-width: 0">
+<input type="button" value="Button" style="border-width: 1px">
+<input type="button" value="Button" style="border-width: 2px">
+<input type="button" value="Button" style="border-width: 3px">
+<input type="button" value="Button" style="border-width: 4px">
+<input type="button" value="Button" style="border-width: 5px">
+<input type="button" value="Button" style="border-width: 6px">
+<input type="button" value="Button" style="border-style: dotted">
+<input type="button" value="Button" style="border-color: green">
+<input type="button" value="Button" style="background-color: transparent">
+<input type="button" value="Button" style="background-color: white">
+
+<!-- these should let it stay native -->
+<input type="button" value="" style="color: black">
+<input type="button" value="" style="font-weight: normal">
diff --git a/layout/reftests/native-theme/button-nonnative.html b/layout/reftests/native-theme/button-nonnative.html
new file mode 100644
index 0000000000..fde9523b4b
--- /dev/null
+++ b/layout/reftests/native-theme/button-nonnative.html
@@ -0,0 +1,2 @@
+<!DOCTYPE HTML>
+<input type="button" value="Button" style="-moz-appearance: none">
diff --git a/layout/reftests/native-theme/button-not-blank.html b/layout/reftests/native-theme/button-not-blank.html
new file mode 100644
index 0000000000..95baf49c6f
--- /dev/null
+++ b/layout/reftests/native-theme/button-not-blank.html
@@ -0,0 +1 @@
+<input type="button">
diff --git a/layout/reftests/native-theme/checkbox-dynamic-1-ref.html b/layout/reftests/native-theme/checkbox-dynamic-1-ref.html
new file mode 100644
index 0000000000..57ca0ff68c
--- /dev/null
+++ b/layout/reftests/native-theme/checkbox-dynamic-1-ref.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <style>
+ #checkbox {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ background: linear-gradient(to right, white, brown);
+ }
+ </style>
+</head>
+<body>
+ <div id="checkbox">
+ <input type="checkbox">
+ </div>
+</body>
+</html>
diff --git a/layout/reftests/native-theme/checkbox-dynamic-1.html b/layout/reftests/native-theme/checkbox-dynamic-1.html
new file mode 100644
index 0000000000..582c6cc1c3
--- /dev/null
+++ b/layout/reftests/native-theme/checkbox-dynamic-1.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<head>
+ <style>
+ #checkbox {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ background: linear-gradient(to right, white, brown);
+ }
+ #toremove {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ width: 100px;
+ height: 0px;
+ background: black;
+ }
+ </style>
+</head>
+<body>
+ <div id="checkbox">
+ <input type="checkbox">
+ </div>
+ <div id="toremove">
+ </div>
+</body>
+<script type="text/javascript">
+ var checkBox = document.getElementById("checkbox");
+ var toRemove = document.getElementById("toremove");
+ toRemove.style.height = checkBox.offsetHeight / 2 + 0.2 + "px";
+ function boom()
+ {
+ toRemove.remove();
+ document.documentElement.className = "";
+ }
+ window.addEventListener("MozReftestInvalidate", boom);
+</script>
+</html>
diff --git a/layout/reftests/native-theme/checkbox-native.html b/layout/reftests/native-theme/checkbox-native.html
new file mode 100644
index 0000000000..e067ca405b
--- /dev/null
+++ b/layout/reftests/native-theme/checkbox-native.html
@@ -0,0 +1,2 @@
+<!DOCTYPE HTML>
+<input type="checkbox">
diff --git a/layout/reftests/native-theme/checkbox-nonnative.html b/layout/reftests/native-theme/checkbox-nonnative.html
new file mode 100644
index 0000000000..3c0c11455a
--- /dev/null
+++ b/layout/reftests/native-theme/checkbox-nonnative.html
@@ -0,0 +1,2 @@
+<!DOCTYPE HTML>
+<input type="checkbox" style="-moz-appearance: none">
diff --git a/layout/reftests/native-theme/checkbox-not-blank.html b/layout/reftests/native-theme/checkbox-not-blank.html
new file mode 100644
index 0000000000..74c06d2536
--- /dev/null
+++ b/layout/reftests/native-theme/checkbox-not-blank.html
@@ -0,0 +1 @@
+<input type="checkbox">
diff --git a/layout/reftests/native-theme/checkbox-not-mirrored-when-rtl-ref.html b/layout/reftests/native-theme/checkbox-not-mirrored-when-rtl-ref.html
new file mode 100644
index 0000000000..801569d37d
--- /dev/null
+++ b/layout/reftests/native-theme/checkbox-not-mirrored-when-rtl-ref.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html>
+<input type="checkbox" checked="checked" style="margin:3px">
diff --git a/layout/reftests/native-theme/checkbox-not-mirrored-when-rtl.html b/layout/reftests/native-theme/checkbox-not-mirrored-when-rtl.html
new file mode 100644
index 0000000000..9221953df2
--- /dev/null
+++ b/layout/reftests/native-theme/checkbox-not-mirrored-when-rtl.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html>
+<input type="checkbox" checked="checked" dir="rtl" style="margin:3px">
diff --git a/layout/reftests/native-theme/checkbox-still-native-when-styled-ref.html b/layout/reftests/native-theme/checkbox-still-native-when-styled-ref.html
new file mode 100644
index 0000000000..064888b295
--- /dev/null
+++ b/layout/reftests/native-theme/checkbox-still-native-when-styled-ref.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML>
+<input type="checkbox">
+<input type="checkbox">
+<input type="checkbox">
+<input type="checkbox">
+<input type="checkbox">
+<input type="checkbox">
+<input type="checkbox">
+<input type="checkbox">
+<input type="checkbox">
+<input type="checkbox">
+<input type="checkbox">
+<input type="checkbox">
+<input type="checkbox">
diff --git a/layout/reftests/native-theme/checkbox-still-native-when-styled.html b/layout/reftests/native-theme/checkbox-still-native-when-styled.html
new file mode 100644
index 0000000000..84a49f48e9
--- /dev/null
+++ b/layout/reftests/native-theme/checkbox-still-native-when-styled.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML>
+<input type="checkbox" style="border-width: 0">
+<input type="checkbox" style="border-width: 1px">
+<input type="checkbox" style="border-width: 2px">
+<input type="checkbox" style="border-width: 3px">
+<input type="checkbox" style="border-width: 4px">
+<input type="checkbox" style="border-width: 5px">
+<input type="checkbox" style="border-width: 6px">
+<input type="checkbox" style="border-style: dotted">
+<input type="checkbox" style="border-color: green">
+<input type="checkbox" style="background-color: transparent">
+<input type="checkbox" style="background-color: white">
+<input type="checkbox" style="color: black">
+<input type="checkbox" style="font-weight: normal">
diff --git a/layout/reftests/native-theme/combobox-native.html b/layout/reftests/native-theme/combobox-native.html
new file mode 100644
index 0000000000..2aa54c8855
--- /dev/null
+++ b/layout/reftests/native-theme/combobox-native.html
@@ -0,0 +1,2 @@
+<!DOCTYPE HTML>
+<select size="1"></select>
diff --git a/layout/reftests/native-theme/combobox-nonnative-when-styled-ref.html b/layout/reftests/native-theme/combobox-nonnative-when-styled-ref.html
new file mode 100644
index 0000000000..b374af4fa9
--- /dev/null
+++ b/layout/reftests/native-theme/combobox-nonnative-when-styled-ref.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML>
+<style>
+ select { inline-size: 2.5em }
+</style>
+<div style="position:relative">
+<!-- mask the dropdown button -->
+<div style="position:absolute; width:50px; left:7px; top:0; bottom:0; background:black;"></div>
+<!-- these should make the select non-native -->
+<select size="1" style="-moz-appearance: none; border-width: 0"></select><br>
+<select size="1" style="-moz-appearance: none; border-width: 1px"></select><br>
+<select size="1" style="-moz-appearance: none; border-width: 2px"></select><br>
+<select size="1" style="-moz-appearance: none; border-width: 3px"></select><br>
+<select size="1" style="-moz-appearance: none; border-width: 4px"></select><br>
+<select size="1" style="-moz-appearance: none; border-width: 5px"></select><br>
+<select size="1" style="-moz-appearance: none; border-width: 6px"></select><br>
+<select size="1" style="-moz-appearance: none; border-style: dotted"></select><br>
+<select size="1" style="-moz-appearance: none; border-color: green"></select><br>
+<select size="1" style="-moz-appearance: none; background-color: transparent"></select><br>
+<select size="1" style="-moz-appearance: none; background-color: white"></select><br>
+</div>
+
+<!-- these should let it stay native -->
+<select size="1"></select>
+<select size="1"></select>
diff --git a/layout/reftests/native-theme/combobox-nonnative-when-styled.html b/layout/reftests/native-theme/combobox-nonnative-when-styled.html
new file mode 100644
index 0000000000..d111075616
--- /dev/null
+++ b/layout/reftests/native-theme/combobox-nonnative-when-styled.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML>
+<style>
+ select { inline-size: 2.5em }
+</style>
+<div style="position:relative">
+<!-- mask the dropdown button -->
+<div style="position:absolute; width:50px; left:7px; top:0; bottom:0; background:black;"></div>
+<!-- these should make the select non-native -->
+<select size="1" style="border-width: 0"></select><br>
+<select size="1" style="border-width: 1px"></select><br>
+<select size="1" style="border-width: 2px"></select><br>
+<select size="1" style="border-width: 3px"></select><br>
+<select size="1" style="border-width: 4px"></select><br>
+<select size="1" style="border-width: 5px"></select><br>
+<select size="1" style="border-width: 6px"></select><br>
+<select size="1" style="border-style: dotted"></select><br>
+<select size="1" style="border-color: green"></select><br>
+<select size="1" style="background-color: transparent"></select><br>
+<select size="1" style="background-color: white"></select><br>
+</div>
+
+<!-- these should let it stay native -->
+<select size="1" style="color: black"></select>
+<select size="1" style="font-weight: normal"></select>
diff --git a/layout/reftests/native-theme/combobox-nonnative.html b/layout/reftests/native-theme/combobox-nonnative.html
new file mode 100644
index 0000000000..6683cdbe07
--- /dev/null
+++ b/layout/reftests/native-theme/combobox-nonnative.html
@@ -0,0 +1,2 @@
+<!DOCTYPE HTML>
+<select size="1" style="-moz-appearance: none"></select>
diff --git a/layout/reftests/native-theme/combobox-not-blank.html b/layout/reftests/native-theme/combobox-not-blank.html
new file mode 100644
index 0000000000..19c00bb60d
--- /dev/null
+++ b/layout/reftests/native-theme/combobox-not-blank.html
@@ -0,0 +1 @@
+<select size="1"></select>
diff --git a/layout/reftests/native-theme/fieldset-not-blank.html b/layout/reftests/native-theme/fieldset-not-blank.html
new file mode 100644
index 0000000000..8c2da9831f
--- /dev/null
+++ b/layout/reftests/native-theme/fieldset-not-blank.html
@@ -0,0 +1 @@
+<fieldset></fieldset>
diff --git a/layout/reftests/native-theme/file-not-blank.html b/layout/reftests/native-theme/file-not-blank.html
new file mode 100644
index 0000000000..c8bc13153e
--- /dev/null
+++ b/layout/reftests/native-theme/file-not-blank.html
@@ -0,0 +1 @@
+<input type="file">
diff --git a/layout/reftests/native-theme/listbox-native.html b/layout/reftests/native-theme/listbox-native.html
new file mode 100644
index 0000000000..d5b29a4f6c
--- /dev/null
+++ b/layout/reftests/native-theme/listbox-native.html
@@ -0,0 +1,2 @@
+<!DOCTYPE HTML>
+<select size="3"></select>
diff --git a/layout/reftests/native-theme/listbox-nonnative-when-styled-ref.html b/layout/reftests/native-theme/listbox-nonnative-when-styled-ref.html
new file mode 100644
index 0000000000..b70a260731
--- /dev/null
+++ b/layout/reftests/native-theme/listbox-nonnative-when-styled-ref.html
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML>
+<!-- these should make the select non-native -->
+<body onload="dump('\nDEBUG-bug660226: ' + document.activeElement + '\n\n');">
+<select size="3" style="-moz-appearance: none; border-width: 0"></select>
+<select size="3" style="-moz-appearance: none; border-width: 1px"></select>
+<select size="3" style="-moz-appearance: none; border-width: 2px"></select>
+<select size="3" style="-moz-appearance: none; border-width: 3px"></select>
+<select size="3" style="-moz-appearance: none; border-width: 4px"></select>
+<select size="3" style="-moz-appearance: none; border-width: 5px"></select>
+<select size="3" style="-moz-appearance: none; border-width: 6px"></select>
+<select size="3" style="-moz-appearance: none; border-style: dotted"></select>
+<select size="3" style="-moz-appearance: none; border-color: green"></select>
+<select size="3" style="-moz-appearance: none; background-color: transparent"></select>
+<select size="3" style="-moz-appearance: none; background-color: white"></select>
+
+<!-- these should let it stay native -->
+<select size="3" style="color: black"></select>
+<select size="3" style="font-weight: normal"></select>
+</body>
diff --git a/layout/reftests/native-theme/listbox-nonnative-when-styled.html b/layout/reftests/native-theme/listbox-nonnative-when-styled.html
new file mode 100644
index 0000000000..26024bfd6b
--- /dev/null
+++ b/layout/reftests/native-theme/listbox-nonnative-when-styled.html
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML>
+<body onload="dump('\nDEBUG-bug660226: ' + document.activeElement + '\n\n');">
+<!-- these should make the select non-native -->
+<select size="3" style="border-width: 0"></select>
+<select size="3" style="border-width: 1px"></select>
+<select size="3" style="border-width: 2px"></select>
+<select size="3" style="border-width: 3px"></select>
+<select size="3" style="border-width: 4px"></select>
+<select size="3" style="border-width: 5px"></select>
+<select size="3" style="border-width: 6px"></select>
+<select size="3" style="border-style: dotted"></select>
+<select size="3" style="border-color: green"></select>
+<select size="3" style="background-color: transparent"></select>
+<select size="3" style="background-color: white"></select>
+
+<!-- these should let it stay native -->
+<select size="3" style="color: black"></select>
+<select size="3" style="font-weight: normal"></select>
+</body>
diff --git a/layout/reftests/native-theme/listbox-nonnative.html b/layout/reftests/native-theme/listbox-nonnative.html
new file mode 100644
index 0000000000..a3f0efc59d
--- /dev/null
+++ b/layout/reftests/native-theme/listbox-nonnative.html
@@ -0,0 +1,2 @@
+<!DOCTYPE HTML>
+<select size="3" style="-moz-appearance: none"></select>
diff --git a/layout/reftests/native-theme/listbox-not-blank.html b/layout/reftests/native-theme/listbox-not-blank.html
new file mode 100644
index 0000000000..05dbce8670
--- /dev/null
+++ b/layout/reftests/native-theme/listbox-not-blank.html
@@ -0,0 +1 @@
+<select size="3"></select>
diff --git a/layout/reftests/native-theme/native-theme-disabled-cascade-levels-ref.html b/layout/reftests/native-theme/native-theme-disabled-cascade-levels-ref.html
new file mode 100644
index 0000000000..d6b2efccf5
--- /dev/null
+++ b/layout/reftests/native-theme/native-theme-disabled-cascade-levels-ref.html
@@ -0,0 +1,6 @@
+<!DOCTYPE HTML>
+<input type="text" value="Themed">
+<input type="text" value="Not Themed" style="-moz-appearance: none">
+<input type="text" value="Not Themed" style="-moz-appearance: none">
+<input type="text" value="Not Themed" style="-moz-appearance: none">
+<input type="text" value="Not Themed" style="-moz-appearance: none">
diff --git a/layout/reftests/native-theme/native-theme-disabled-cascade-levels.html b/layout/reftests/native-theme/native-theme-disabled-cascade-levels.html
new file mode 100644
index 0000000000..283bd7ff34
--- /dev/null
+++ b/layout/reftests/native-theme/native-theme-disabled-cascade-levels.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML>
+<style type="text/css">
+#four { background-image: none; }
+#five { background-image: none ! important; }
+</style>
+<input type="text" value="Themed">
+<input type="text" value="Not Themed" style="background-image: none">
+<input type="text" value="Not Themed" style="background-image: none ! important">
+<input type="text" value="Not Themed" id="four">
+<input type="text" value="Not Themed" id="five">
diff --git a/layout/reftests/native-theme/progress-nobar.html b/layout/reftests/native-theme/progress-nobar.html
new file mode 100644
index 0000000000..a485d38c9f
--- /dev/null
+++ b/layout/reftests/native-theme/progress-nobar.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <div style="-moz-appearance: progressbar; width:180px; height:6px;">
+ </div>
+ </body>
+</html>
diff --git a/layout/reftests/native-theme/progress-overflow-ref.html b/layout/reftests/native-theme/progress-overflow-ref.html
new file mode 100644
index 0000000000..22b3dbeddc
--- /dev/null
+++ b/layout/reftests/native-theme/progress-overflow-ref.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <div style="overflow: hidden; -moz-appearance: progressbar; width:180px; height:40px;">
+ <div style="-moz-appearance: progresschunk; width:50%; height:100%;">
+ </div>
+ </div>
+ </body>
+</html>
+
diff --git a/layout/reftests/native-theme/progress-overflow-small.html b/layout/reftests/native-theme/progress-overflow-small.html
new file mode 100644
index 0000000000..96bccb29a6
--- /dev/null
+++ b/layout/reftests/native-theme/progress-overflow-small.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <div style="-moz-appearance: progressbar; width:180px; height:6px;">
+ <div style="-moz-appearance: progresschunk; width:50%; height:100%;">
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/layout/reftests/native-theme/progress-overflow.html b/layout/reftests/native-theme/progress-overflow.html
new file mode 100644
index 0000000000..d5611c473b
--- /dev/null
+++ b/layout/reftests/native-theme/progress-overflow.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <div style="-moz-appearance: progressbar; width:180px; height:40px;">
+ <div style="-moz-appearance: progresschunk; width:50%; height:100%;">
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/layout/reftests/native-theme/radio-native.html b/layout/reftests/native-theme/radio-native.html
new file mode 100644
index 0000000000..af2d497fea
--- /dev/null
+++ b/layout/reftests/native-theme/radio-native.html
@@ -0,0 +1,2 @@
+<!DOCTYPE HTML>
+<input type="radio">
diff --git a/layout/reftests/native-theme/radio-nonnative.html b/layout/reftests/native-theme/radio-nonnative.html
new file mode 100644
index 0000000000..4c2a74b4ed
--- /dev/null
+++ b/layout/reftests/native-theme/radio-nonnative.html
@@ -0,0 +1,2 @@
+<!DOCTYPE HTML>
+<input type="radio" style="-moz-appearance: none">
diff --git a/layout/reftests/native-theme/radio-not-blank.html b/layout/reftests/native-theme/radio-not-blank.html
new file mode 100644
index 0000000000..1fcf43ef44
--- /dev/null
+++ b/layout/reftests/native-theme/radio-not-blank.html
@@ -0,0 +1 @@
+<input type="radio">
diff --git a/layout/reftests/native-theme/radio-still-native-when-styled-ref.html b/layout/reftests/native-theme/radio-still-native-when-styled-ref.html
new file mode 100644
index 0000000000..b8c940bdda
--- /dev/null
+++ b/layout/reftests/native-theme/radio-still-native-when-styled-ref.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML>
+<input type="radio">
+<input type="radio">
+<input type="radio">
+<input type="radio">
+<input type="radio">
+<input type="radio">
+<input type="radio">
+<input type="radio">
+<input type="radio">
+<input type="radio">
+<input type="radio">
+<input type="radio">
+<input type="radio">
diff --git a/layout/reftests/native-theme/radio-still-native-when-styled.html b/layout/reftests/native-theme/radio-still-native-when-styled.html
new file mode 100644
index 0000000000..a98fafcd7b
--- /dev/null
+++ b/layout/reftests/native-theme/radio-still-native-when-styled.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML>
+<input type="radio" style="border-width: 0">
+<input type="radio" style="border-width: 1px">
+<input type="radio" style="border-width: 2px">
+<input type="radio" style="border-width: 3px">
+<input type="radio" style="border-width: 4px">
+<input type="radio" style="border-width: 5px">
+<input type="radio" style="border-width: 6px">
+<input type="radio" style="border-style: dotted">
+<input type="radio" style="border-color: green">
+<input type="radio" style="background-color: transparent">
+<input type="radio" style="background-color: white">
+<input type="radio" style="color: black">
+<input type="radio" style="font-weight: normal">
diff --git a/layout/reftests/native-theme/reftest.list b/layout/reftests/native-theme/reftest.list
new file mode 100644
index 0000000000..50ad52be0f
--- /dev/null
+++ b/layout/reftests/native-theme/reftest.list
@@ -0,0 +1,68 @@
+!= button-html-not-blank.html about:blank
+!= button-not-blank.html about:blank
+!= checkbox-not-blank.html about:blank
+!= combobox-not-blank.html about:blank
+!= fieldset-not-blank.html about:blank
+!= file-not-blank.html about:blank
+!= listbox-not-blank.html about:blank
+!= radio-not-blank.html about:blank
+!= text-control-not-blank.html about:blank
+!= textarea-not-blank.html about:blank
+
+!= text-input-native.html text-input-nonnative.html
+fuzzy(0-2,0-88) == text-input-nonnative-when-styled.html text-input-nonnative-when-styled-ref.html
+!= textarea-native.html textarea-nonnative.html
+fuzzy(0-2,0-53) == textarea-nonnative-when-styled.html textarea-nonnative-when-styled-ref.html
+!= button-native.html button-nonnative.html
+== button-nonnative-when-styled.html button-nonnative-when-styled-ref.html
+!= combobox-native.html combobox-nonnative.html
+== combobox-nonnative-when-styled.html combobox-nonnative-when-styled-ref.html
+needs-focus != listbox-native.html listbox-nonnative.html
+needs-focus == listbox-nonnative-when-styled.html listbox-nonnative-when-styled-ref.html
+!= radio-native.html radio-nonnative.html
+== radio-still-native-when-styled.html radio-still-native-when-styled-ref.html
+!= checkbox-native.html checkbox-nonnative.html
+== checkbox-still-native-when-styled.html checkbox-still-native-when-styled-ref.html
+== native-theme-disabled-cascade-levels.html native-theme-disabled-cascade-levels-ref.html
+
+!= 427122-1.html 427122-1-ref.html
+
+== chrome://reftest/content/native-theme/470711-1.xhtml chrome://reftest/content/native-theme/470711-1-ref.xhtml
+
+== chrome://reftest/content/native-theme/482955-1.xhtml chrome://reftest/content/native-theme/482955-1-ref.xhtml
+
+== 492155-1.html about:blank
+== 492155-2.html about:blank
+== 492155-3.html about:blank
+fails-if(Android&&!asyncPan) != 492155-4.html about:blank
+
+!= box-shadow-input.html box-shadow-input-ref.html
+!= box-shadow-button.html box-shadow-button-ref.html
+!= box-shadow-listbox.html box-shadow-listbox-ref.html
+!= box-shadow-combobox.html box-shadow-combobox-ref.html
+
+# RTL mirroring tests
+== checkbox-not-mirrored-when-rtl.html checkbox-not-mirrored-when-rtl-ref.html
+
+!= chrome://reftest/content/native-theme/resizer-bottomleft.xhtml chrome://reftest/content/native-theme/blank-window.xhtml
+== chrome://reftest/content/native-theme/resizer-bottomleft-rtl.xhtml chrome://reftest/content/native-theme/resizer-bottomleft.xhtml
+!= chrome://reftest/content/native-theme/resizer-bottomright.xhtml chrome://reftest/content/native-theme/blank-window.xhtml
+== chrome://reftest/content/native-theme/resizer-bottomright-rtl.xhtml chrome://reftest/content/native-theme/resizer-bottomright.xhtml
+
+# Windows-only, depends on native scrollbar metrics
+skip-if(!winWidget) == scroll-thumb-minimum-size-notheme.html scroll-thumb-minimum-size-notheme-ref.html
+# skip-if(!winWidget) == scroll-thumb-minimum-size-theme.html scroll-thumb-minimum-size-theme-ref.html # Bug 512206
+
+== border-radius.html border-radius-ref.html
+
+== checkbox-dynamic-1.html checkbox-dynamic-1-ref.html
+
+# These tests have been written to test the overflow of the window widget
+# (bug 568825) but we can't test it on Windows and Cocoa because they have
+# animated progress bars.
+# Nothing shows up on Android, presumably because that appearance type is
+# not implemented.
+skip-if(cocoaWidget) skip-if(winWidget) == progress-overflow.html progress-overflow-ref.html
+fails-if(Android) skip-if(cocoaWidget) skip-if(winWidget) == progress-overflow-small.html progress-nobar.html
+
+== chrome://reftest/content/native-theme/676387-1.xhtml chrome://reftest/content/native-theme/676387-1-ref.xhtml
diff --git a/layout/reftests/native-theme/resizer-bottomleft-rtl.xhtml b/layout/reftests/native-theme/resizer-bottomleft-rtl.xhtml
new file mode 100644
index 0000000000..a369b50a5f
--- /dev/null
+++ b/layout/reftests/native-theme/resizer-bottomleft-rtl.xhtml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
+
+<window title="Resizer"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" localedir="rtl">
+ <hbox>
+ <spacer flex="1"/>
+ <resizer dir="bottomleft"/>
+ </hbox>
+</window>
diff --git a/layout/reftests/native-theme/resizer-bottomleft.xhtml b/layout/reftests/native-theme/resizer-bottomleft.xhtml
new file mode 100644
index 0000000000..3bbf13020f
--- /dev/null
+++ b/layout/reftests/native-theme/resizer-bottomleft.xhtml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
+
+<window title="Resizer"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <hbox>
+ <resizer dir="bottomleft"/>
+ <spacer flex="1"/>
+ </hbox>
+</window>
diff --git a/layout/reftests/native-theme/resizer-bottomright-rtl.xhtml b/layout/reftests/native-theme/resizer-bottomright-rtl.xhtml
new file mode 100644
index 0000000000..c2b5ba5642
--- /dev/null
+++ b/layout/reftests/native-theme/resizer-bottomright-rtl.xhtml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
+
+<window title="Resizer"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" localedir="rtl">
+ <hbox>
+ <spacer flex="1"/>
+ <resizer dir="bottomright"/>
+ </hbox>
+</window>
diff --git a/layout/reftests/native-theme/resizer-bottomright.xhtml b/layout/reftests/native-theme/resizer-bottomright.xhtml
new file mode 100644
index 0000000000..d00935a204
--- /dev/null
+++ b/layout/reftests/native-theme/resizer-bottomright.xhtml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
+
+<window title="Resizer"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <hbox>
+ <resizer dir="bottomright"/>
+ <spacer flex="1"/>
+ </hbox>
+</window>
diff --git a/layout/reftests/native-theme/resizer-left.xhtml b/layout/reftests/native-theme/resizer-left.xhtml
new file mode 100644
index 0000000000..8dc6cf9f7c
--- /dev/null
+++ b/layout/reftests/native-theme/resizer-left.xhtml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
+
+<window title="Resizer"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <hbox>
+ <resizer dir="left"/>
+ <spacer flex="1"/>
+ </hbox>
+</window>
diff --git a/layout/reftests/native-theme/scroll-thumb-minimum-size-notheme-ref.html b/layout/reftests/native-theme/scroll-thumb-minimum-size-notheme-ref.html
new file mode 100644
index 0000000000..e6aade6617
--- /dev/null
+++ b/layout/reftests/native-theme/scroll-thumb-minimum-size-notheme-ref.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html>
+<div style="width: 200px; height: 200px; overflow: scroll; -moz-appearance:none">
+ <div style="width: 100000px; height: 1000000px"></div>
+</div>
diff --git a/layout/reftests/native-theme/scroll-thumb-minimum-size-notheme.html b/layout/reftests/native-theme/scroll-thumb-minimum-size-notheme.html
new file mode 100644
index 0000000000..c46abf5da0
--- /dev/null
+++ b/layout/reftests/native-theme/scroll-thumb-minimum-size-notheme.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<div style="width: 200px; height: 200px; overflow: scroll;; -moz-appearance:none">
+ <div style="width: 3725px; height: 3725px"></div>
+</div>
+<!--
+The size of the inner div is computed as follow:
+
+Input:
+ outer_div_size: size of the div containing the scrollbar
+ button_size: size of the scrollbar arrow buttons
+ scrollbar_thickness: width/height of a vertical/horizontal scrollbar respectively
+ thumb_size: height/width of the thumb of a vertical/horizontal scrollbar respectively
+Output:
+ inner_div_size: size of the div to be scrolled
+
+Formula:
+ slider_size = outer_div_size - 2 * button_size - scrollbar_thickness
+ thumb_size = slider_size * (outer_div_size / inner_div_size)
+ which gives:
+ inner_div_size = (outer_div_size - 2 * button_size - scrollbar_thickness) * (outer_div_size / thumb_size)
+
+Testcase constants:
+ outer_div_size = 200
+
+On XP/Vista at 96 dpi with theme disabled:
+ thumb_size = 8 (minimum size)
+ button_size = 17
+ scrollbar_thickness = 17
+
+ inner_div_size = (200 - 2 * 17 - 17) * (200 / 8) = 3725
+-->
diff --git a/layout/reftests/native-theme/scroll-thumb-minimum-size-theme-ref.html b/layout/reftests/native-theme/scroll-thumb-minimum-size-theme-ref.html
new file mode 100644
index 0000000000..d592e44849
--- /dev/null
+++ b/layout/reftests/native-theme/scroll-thumb-minimum-size-theme-ref.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html>
+<div style="width: 200px; height: 200px; overflow: scroll;">
+ <div style="width: 100000px; height: 1000000px"></div>
+</div>
diff --git a/layout/reftests/native-theme/scroll-thumb-minimum-size-theme.html b/layout/reftests/native-theme/scroll-thumb-minimum-size-theme.html
new file mode 100644
index 0000000000..03a539c3cc
--- /dev/null
+++ b/layout/reftests/native-theme/scroll-thumb-minimum-size-theme.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<div style="width: 200px; height: 200px; overflow: scroll;">
+ <div style="width: 1753px; height: 1753px"></div>
+</div>
+<!--
+See scroll-thumb-minimum-size-notheme.html for the formula.
+
+On XP/Vista at 96 dpi with theme enabled:
+ thumb_size = 17 (minimum size)
+ button_size = 17
+ scrollbar_thickness = 17
+
+ inner_div_size = (200 - 2 * 17 - 17) * (200 / 17) = 1753
+-->
diff --git a/layout/reftests/native-theme/text-control-not-blank.html b/layout/reftests/native-theme/text-control-not-blank.html
new file mode 100644
index 0000000000..4856de5179
--- /dev/null
+++ b/layout/reftests/native-theme/text-control-not-blank.html
@@ -0,0 +1 @@
+<input type="text">
diff --git a/layout/reftests/native-theme/text-input-native.html b/layout/reftests/native-theme/text-input-native.html
new file mode 100644
index 0000000000..8f5eec6b13
--- /dev/null
+++ b/layout/reftests/native-theme/text-input-native.html
@@ -0,0 +1,2 @@
+<!DOCTYPE HTML>
+<input type="text" value="">
diff --git a/layout/reftests/native-theme/text-input-nonnative-when-styled-ref.html b/layout/reftests/native-theme/text-input-nonnative-when-styled-ref.html
new file mode 100644
index 0000000000..b8786e0ac3
--- /dev/null
+++ b/layout/reftests/native-theme/text-input-nonnative-when-styled-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML>
+<!-- these should make the input non-native -->
+<input type="text" value="Text Input" style="-moz-appearance: none; border-width: 0">
+<input type="text" value="Text Input" style="-moz-appearance: none; border-width: 1px">
+<input type="text" value="Text Input" style="-moz-appearance: none; border-width: 2px">
+<input type="text" value="Text Input" style="-moz-appearance: none; border-width: 3px">
+<input type="text" value="Text Input" style="-moz-appearance: none; border-width: 4px">
+<input type="text" value="Text Input" style="-moz-appearance: none; border-width: 5px">
+<input type="text" value="Text Input" style="-moz-appearance: none; border-width: 6px">
+<input type="text" value="Text Input" style="-moz-appearance: none; border-style: dotted">
+<input type="text" value="Text Input" style="-moz-appearance: none; border-color: green">
+<input type="text" value="Text Input" style="-moz-appearance: none; background-color: transparent">
+<input type="text" value="Text Input" style="-moz-appearance: none; background-color: white">
+<input type="text" value="Text Input" style="-moz-appearance: none; border-top-left-radius: 0px">
+<input type="text" value="Text Input" style="-moz-appearance: none; border-top-right-radius: 1px">
+<input type="text" value="Text Input" style="-moz-appearance: none; border-bottom-right-radius: 2px">
+<input type="text" value="Text Input" style="-moz-appearance: none; border-bottom-left-radius: 3px">
+<input type="text" value="Text Input" style="-moz-appearance: none; border-inline-start-width: 3px">
+<input type="text" value="Text Input" style="-moz-appearance: none; border-inline-end-width: 3px">
+
+<!-- these should let it stay native -->
+<input type="text" value="">
+<input type="text" value="">
diff --git a/layout/reftests/native-theme/text-input-nonnative-when-styled.html b/layout/reftests/native-theme/text-input-nonnative-when-styled.html
new file mode 100644
index 0000000000..327e22034f
--- /dev/null
+++ b/layout/reftests/native-theme/text-input-nonnative-when-styled.html
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML>
+<!-- these should make the input non-native -->
+<input type="text" value="Text Input" style="border-width: 0">
+<input type="text" value="Text Input" style="border-width: 1px">
+<input type="text" value="Text Input" style="border-width: 2px">
+<input type="text" value="Text Input" style="border-width: 3px">
+<input type="text" value="Text Input" style="border-width: 4px">
+<input type="text" value="Text Input" style="border-width: 5px">
+<input type="text" value="Text Input" style="border-width: 6px">
+<input type="text" value="Text Input" style="border-style: dotted">
+<input type="text" value="Text Input" style="border-color: green">
+<input type="text" value="Text Input" style="background-color: transparent">
+<input type="text" value="Text Input" style="background-color: white">
+<input type="text" value="Text Input" style="border-top-left-radius: 0px">
+<input type="text" value="Text Input" style="border-top-right-radius: 1px">
+<input type="text" value="Text Input" style="border-bottom-right-radius: 2px">
+<input type="text" value="Text Input" style="border-bottom-left-radius: 3px">
+<input type="text" value="Text Input" style="border-inline-start-width: 3px">
+<input type="text" value="Text Input" style="border-inline-end-width: 3px">
+
+<!-- these should let it stay native -->
+<input type="text" value="" style="color: black">
+<input type="text" value="" style="font-weight: normal">
diff --git a/layout/reftests/native-theme/text-input-nonnative.html b/layout/reftests/native-theme/text-input-nonnative.html
new file mode 100644
index 0000000000..a3e4335b1c
--- /dev/null
+++ b/layout/reftests/native-theme/text-input-nonnative.html
@@ -0,0 +1,2 @@
+<!DOCTYPE HTML>
+<input type="text" value="" style="-moz-appearance: none">
diff --git a/layout/reftests/native-theme/textarea-native.html b/layout/reftests/native-theme/textarea-native.html
new file mode 100644
index 0000000000..03e7dcdb13
--- /dev/null
+++ b/layout/reftests/native-theme/textarea-native.html
@@ -0,0 +1,2 @@
+<!DOCTYPE HTML>
+<textarea></textarea>
diff --git a/layout/reftests/native-theme/textarea-nonnative-when-styled-ref.html b/layout/reftests/native-theme/textarea-nonnative-when-styled-ref.html
new file mode 100644
index 0000000000..1679479152
--- /dev/null
+++ b/layout/reftests/native-theme/textarea-nonnative-when-styled-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML>
+<!-- these should make the textarea non-native -->
+<textarea style="-moz-appearance: none; border-width: 0; resize: none;">Textarea</textarea>
+<textarea style="-moz-appearance: none; border-width: 1px; resize: none;">Textarea</textarea>
+<textarea style="-moz-appearance: none; border-width: 2px; resize: none;">Textarea</textarea>
+<textarea style="-moz-appearance: none; border-width: 3px; resize: none;">Textarea</textarea>
+<textarea style="-moz-appearance: none; border-width: 4px; resize: none;">Textarea</textarea>
+<textarea style="-moz-appearance: none; border-width: 5px; resize: none;">Textarea</textarea>
+<textarea style="-moz-appearance: none; border-width: 6px; resize: none;">Textarea</textarea>
+<textarea style="-moz-appearance: none; border-style: dotted; resize: none;">Textarea</textarea>
+<textarea style="-moz-appearance: none; border-color: green; resize: none;">Textarea</textarea>
+<textarea style="-moz-appearance: none; background-color: transparent; resize: none;">Textarea</textarea>
+<textarea style="-moz-appearance: none; background-color: white; resize: none;">Textarea</textarea>
+
+<!-- these should let it stay native -->
+<textarea></textarea>
+<textarea></textarea>
diff --git a/layout/reftests/native-theme/textarea-nonnative-when-styled.html b/layout/reftests/native-theme/textarea-nonnative-when-styled.html
new file mode 100644
index 0000000000..dff21453db
--- /dev/null
+++ b/layout/reftests/native-theme/textarea-nonnative-when-styled.html
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML>
+<!-- these should make the textarea non-native and hide resizers since we can't control
+ their native vs. non-native appearance -->
+<textarea style="border-width: 0; resize: none;">Textarea</textarea>
+<textarea style="border-width: 1px; resize: none;">Textarea</textarea>
+<textarea style="border-width: 2px; resize: none;">Textarea</textarea>
+<textarea style="border-width: 3px; resize: none;">Textarea</textarea>
+<textarea style="border-width: 4px; resize: none;">Textarea</textarea>
+<textarea style="border-width: 5px; resize: none;">Textarea</textarea>
+<textarea style="border-width: 6px; resize: none;">Textarea</textarea>
+<textarea style="border-style: dotted; resize: none;">Textarea</textarea>
+<textarea style="border-color: green; resize: none;">Textarea</textarea>
+<textarea style="background-color: transparent; resize: none;">Textarea</textarea>
+<textarea style="background-color: white; resize: none;">Textarea</textarea>
+
+<!-- these should let it stay native -->
+<textarea style="color: black"></textarea>
+<textarea style="font-weight: normal"></textarea>
diff --git a/layout/reftests/native-theme/textarea-nonnative.html b/layout/reftests/native-theme/textarea-nonnative.html
new file mode 100644
index 0000000000..87f3b4cdd6
--- /dev/null
+++ b/layout/reftests/native-theme/textarea-nonnative.html
@@ -0,0 +1,2 @@
+<!DOCTYPE HTML>
+<textarea style="-moz-appearance: none"></textarea>
diff --git a/layout/reftests/native-theme/textarea-not-blank.html b/layout/reftests/native-theme/textarea-not-blank.html
new file mode 100644
index 0000000000..d017476088
--- /dev/null
+++ b/layout/reftests/native-theme/textarea-not-blank.html
@@ -0,0 +1 @@
+<textarea rows="5" cols="40"></textarea>