summaryrefslogtreecommitdiffstats
path: root/layout/reftests/css-submit-invalid
diff options
context:
space:
mode:
Diffstat (limited to 'layout/reftests/css-submit-invalid')
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/add-invalid-element.html21
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/add-submit-control.html21
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/change-type-not-submit-control.html21
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/change-type-submit-control.html21
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/dynamic-invalid-barred-2.html21
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/dynamic-invalid-barred.html21
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/dynamic-invalid-not-barred.html21
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/dynamic-invalid.html22
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/dynamic-valid.html21
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/invalid-barred-ref.html9
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/invalid-ref-2.html8
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/invalid-ref-3.html9
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/invalid-ref.html8
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/reftest-stylo.list17
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/reftest.list16
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/remove-form.html23
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/remove-invalid-element.html21
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/remove-submit-control.html21
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/self-invalid.html20
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/static-invalid-barred.html14
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/static-invalid.html14
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/static-valid.html14
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/valid-ref-2.html8
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/valid-ref-3.html9
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/valid-ref-4.html9
-rw-r--r--layout/reftests/css-submit-invalid/button-submit/valid-ref.html9
-rw-r--r--layout/reftests/css-submit-invalid/default-style/button-submit-ref.html9
-rw-r--r--layout/reftests/css-submit-invalid/default-style/button-submit.html21
-rw-r--r--layout/reftests/css-submit-invalid/default-style/input-image-ref.html9
-rw-r--r--layout/reftests/css-submit-invalid/default-style/input-image.html21
-rw-r--r--layout/reftests/css-submit-invalid/default-style/input-submit-ref.html9
-rw-r--r--layout/reftests/css-submit-invalid/default-style/input-submit.html21
-rw-r--r--layout/reftests/css-submit-invalid/default-style/reftest-stylo.list4
-rw-r--r--layout/reftests/css-submit-invalid/default-style/reftest.list3
-rw-r--r--layout/reftests/css-submit-invalid/default-style/style.css2
-rw-r--r--layout/reftests/css-submit-invalid/input-image/add-invalid-element.html21
-rw-r--r--layout/reftests/css-submit-invalid/input-image/add-submit-control.html21
-rw-r--r--layout/reftests/css-submit-invalid/input-image/change-type-not-submit-control.html21
-rw-r--r--layout/reftests/css-submit-invalid/input-image/change-type-submit-control.html21
-rw-r--r--layout/reftests/css-submit-invalid/input-image/dynamic-invalid-barred-2.html21
-rw-r--r--layout/reftests/css-submit-invalid/input-image/dynamic-invalid-barred.html21
-rw-r--r--layout/reftests/css-submit-invalid/input-image/dynamic-invalid-not-barred.html21
-rw-r--r--layout/reftests/css-submit-invalid/input-image/dynamic-invalid.html22
-rw-r--r--layout/reftests/css-submit-invalid/input-image/dynamic-valid.html21
-rw-r--r--layout/reftests/css-submit-invalid/input-image/invalid-barred-ref.html9
-rw-r--r--layout/reftests/css-submit-invalid/input-image/invalid-ref-2.html8
-rw-r--r--layout/reftests/css-submit-invalid/input-image/invalid-ref-3.html9
-rw-r--r--layout/reftests/css-submit-invalid/input-image/invalid-ref.html8
-rw-r--r--layout/reftests/css-submit-invalid/input-image/reftest-stylo.list18
-rw-r--r--layout/reftests/css-submit-invalid/input-image/reftest.list16
-rw-r--r--layout/reftests/css-submit-invalid/input-image/remove-form.html23
-rw-r--r--layout/reftests/css-submit-invalid/input-image/remove-invalid-element.html21
-rw-r--r--layout/reftests/css-submit-invalid/input-image/remove-submit-control.html21
-rw-r--r--layout/reftests/css-submit-invalid/input-image/self-invalid.html20
-rw-r--r--layout/reftests/css-submit-invalid/input-image/static-invalid-barred.html14
-rw-r--r--layout/reftests/css-submit-invalid/input-image/static-invalid.html14
-rw-r--r--layout/reftests/css-submit-invalid/input-image/static-valid.html14
-rw-r--r--layout/reftests/css-submit-invalid/input-image/valid-ref-2.html8
-rw-r--r--layout/reftests/css-submit-invalid/input-image/valid-ref-3.html9
-rw-r--r--layout/reftests/css-submit-invalid/input-image/valid-ref-4.html9
-rw-r--r--layout/reftests/css-submit-invalid/input-image/valid-ref.html9
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/add-invalid-element.html21
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/add-submit-control.html21
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/change-type-not-submit-control.html21
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/change-type-submit-control.html21
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/dynamic-invalid-barred-2.html21
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/dynamic-invalid-barred.html21
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/dynamic-invalid-not-barred.html21
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/dynamic-invalid.html22
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/dynamic-valid.html21
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/invalid-barred-ref.html9
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/invalid-ref-2.html8
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/invalid-ref-3.html9
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/invalid-ref.html8
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/reftest-stylo.list18
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/reftest.list16
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/remove-form.html23
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/remove-invalid-element.html21
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/remove-submit-control.html21
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/self-invalid.html20
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/static-invalid-barred.html14
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/static-invalid.html14
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/static-valid.html14
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/valid-ref-2.html8
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/valid-ref-3.html9
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/valid-ref-4.html9
-rw-r--r--layout/reftests/css-submit-invalid/input-submit/valid-ref.html9
-rw-r--r--layout/reftests/css-submit-invalid/reftest-stylo.list5
-rw-r--r--layout/reftests/css-submit-invalid/reftest.list4
89 files changed, 1367 insertions, 0 deletions
diff --git a/layout/reftests/css-submit-invalid/button-submit/add-invalid-element.html b/layout/reftests/css-submit-invalid/button-submit/add-invalid-element.html
new file mode 100644
index 000000000..90a1429b6
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/add-invalid-element.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.forms[0].appendChild(document.getElementById('i'));
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <input id='i' type='email' value='foo'>
+ <form>
+ <button type='submit'></button>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/add-submit-control.html b/layout/reftests/css-submit-invalid/button-submit/add-submit-control.html
new file mode 100644
index 000000000..a9d5c2c1c
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/add-submit-control.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.forms[0].appendChild(document.getElementById('b'));
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <button id='b' type='submit'></button>
+ <form>
+ <input required>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/change-type-not-submit-control.html b/layout/reftests/css-submit-invalid/button-submit/change-type-not-submit-control.html
new file mode 100644
index 000000000..9667e3a26
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/change-type-not-submit-control.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('b').type = 'button';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input required>
+ <button id='b' type='submit'></button>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/change-type-submit-control.html b/layout/reftests/css-submit-invalid/button-submit/change-type-submit-control.html
new file mode 100644
index 000000000..cc71e850b
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/change-type-submit-control.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('b').type = 'submit';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input required>
+ <button id='b'></button>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/dynamic-invalid-barred-2.html b/layout/reftests/css-submit-invalid/button-submit/dynamic-invalid-barred-2.html
new file mode 100644
index 000000000..6b8bd26c6
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/dynamic-invalid-barred-2.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('i').value = '';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input id='i' value='foo' required readonly>
+ <button type='submit'></button>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/dynamic-invalid-barred.html b/layout/reftests/css-submit-invalid/button-submit/dynamic-invalid-barred.html
new file mode 100644
index 000000000..cbe816212
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/dynamic-invalid-barred.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('i').readOnly = 'ro';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input id='i' required>
+ <button type='submit'></button>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/dynamic-invalid-not-barred.html b/layout/reftests/css-submit-invalid/button-submit/dynamic-invalid-not-barred.html
new file mode 100644
index 000000000..c396d6735
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/dynamic-invalid-not-barred.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('i').removeAttribute('readonly');
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input id='i' required readonly>
+ <button type='submit'></button>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/dynamic-invalid.html b/layout/reftests/css-submit-invalid/button-submit/dynamic-invalid.html
new file mode 100644
index 000000000..4301467e3
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/dynamic-invalid.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ :-moz-ui-invalid { box-shadow: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('i').value = '';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input id='i' value='foo' required>
+ <button type='submit'></button>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/dynamic-valid.html b/layout/reftests/css-submit-invalid/button-submit/dynamic-valid.html
new file mode 100644
index 000000000..59d2948ac
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/dynamic-valid.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('i').value = 'foo';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input id='i' required>
+ <button type='submit'></button>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/invalid-barred-ref.html b/layout/reftests/css-submit-invalid/button-submit/invalid-barred-ref.html
new file mode 100644
index 000000000..7c319e41b
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/invalid-barred-ref.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <form>
+ <input required readonly>
+ <button type='submit'></button>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/invalid-ref-2.html b/layout/reftests/css-submit-invalid/button-submit/invalid-ref-2.html
new file mode 100644
index 000000000..dd03dc812
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/invalid-ref-2.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <form>
+ <input type='email' value='foo'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/invalid-ref-3.html b/layout/reftests/css-submit-invalid/button-submit/invalid-ref-3.html
new file mode 100644
index 000000000..67305cc7b
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/invalid-ref-3.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <table id='t'>
+ <tr><td><input required></td></tr>
+ <tr><td><button type='submit'></button></td></tr>
+ </table>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/invalid-ref.html b/layout/reftests/css-submit-invalid/button-submit/invalid-ref.html
new file mode 100644
index 000000000..76d80f6fa
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/invalid-ref.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <form>
+ <input required>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/reftest-stylo.list b/layout/reftests/css-submit-invalid/button-submit/reftest-stylo.list
new file mode 100644
index 000000000..f7dbf6283
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/reftest-stylo.list
@@ -0,0 +1,17 @@
+# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
+== static-valid.html static-valid.html
+== dynamic-valid.html dynamic-valid.html
+== static-invalid.html static-invalid.html
+== dynamic-invalid.html dynamic-invalid.html
+== dynamic-invalid-barred.html dynamic-invalid-barred.html
+== dynamic-invalid-barred-2.html dynamic-invalid-barred-2.html
+== dynamic-invalid-not-barred.html dynamic-invalid-not-barred.html
+== static-invalid-barred.html static-invalid-barred.html
+== remove-invalid-element.html remove-invalid-element.html
+== add-invalid-element.html add-invalid-element.html
+== add-submit-control.html add-submit-control.html
+== remove-submit-control.html remove-submit-control.html
+== change-type-submit-control.html change-type-submit-control.html
+== change-type-not-submit-control.html change-type-not-submit-control.html
+== self-invalid.html self-invalid.html
+== remove-form.html remove-form.html
diff --git a/layout/reftests/css-submit-invalid/button-submit/reftest.list b/layout/reftests/css-submit-invalid/button-submit/reftest.list
new file mode 100644
index 000000000..cfb8df94e
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/reftest.list
@@ -0,0 +1,16 @@
+== static-valid.html valid-ref.html
+== dynamic-valid.html valid-ref.html
+== static-invalid.html invalid-ref.html
+== dynamic-invalid.html invalid-ref.html
+== dynamic-invalid-barred.html invalid-barred-ref.html
+== dynamic-invalid-barred-2.html invalid-barred-ref.html
+== dynamic-invalid-not-barred.html invalid-ref.html
+== static-invalid-barred.html invalid-barred-ref.html
+== remove-invalid-element.html valid-ref-2.html
+== add-invalid-element.html invalid-ref-2.html
+== add-submit-control.html invalid-ref.html
+== remove-submit-control.html valid-ref-3.html
+== change-type-submit-control.html invalid-ref.html
+== change-type-not-submit-control.html valid-ref-4.html
+== self-invalid.html about:blank
+== remove-form.html invalid-ref-3.html
diff --git a/layout/reftests/css-submit-invalid/button-submit/remove-form.html b/layout/reftests/css-submit-invalid/button-submit/remove-form.html
new file mode 100644
index 000000000..a54329714
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/remove-form.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('t').removeChild(document.forms[0]);
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <table id='t'>
+ <form>
+ <tr><td><input required></td></tr>
+ <tr><td><button type='submit'></button></td></tr>
+ </form>
+ </table>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/remove-invalid-element.html b/layout/reftests/css-submit-invalid/button-submit/remove-invalid-element.html
new file mode 100644
index 000000000..c92d134c4
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/remove-invalid-element.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.forms[0].removeChild(document.getElementById('i'));
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input id='i' type='email' value='foo'>
+ <button type='submit'></button>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/remove-submit-control.html b/layout/reftests/css-submit-invalid/button-submit/remove-submit-control.html
new file mode 100644
index 000000000..3acd342df
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/remove-submit-control.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.body.appendChild(document.getElementById('b'));
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input required>
+ <button id='b' type='submit'></button>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/self-invalid.html b/layout/reftests/css-submit-invalid/button-submit/self-invalid.html
new file mode 100644
index 000000000..d52f598d0
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/self-invalid.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('b').setCustomValidity('foo');
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <button id='b' type='submit'></button>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/static-invalid-barred.html b/layout/reftests/css-submit-invalid/button-submit/static-invalid-barred.html
new file mode 100644
index 000000000..57b06a04a
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/static-invalid-barred.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <body>
+ <form>
+ <input required readonly>
+ <button type='submit'></button>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/static-invalid.html b/layout/reftests/css-submit-invalid/button-submit/static-invalid.html
new file mode 100644
index 000000000..708c96728
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/static-invalid.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <body>
+ <form>
+ <input required>
+ <button type='submit'></button>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/static-valid.html b/layout/reftests/css-submit-invalid/button-submit/static-valid.html
new file mode 100644
index 000000000..953c55a18
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/static-valid.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <body>
+ <form>
+ <input value='foo' required>
+ <button type='submit'></button>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/valid-ref-2.html b/layout/reftests/css-submit-invalid/button-submit/valid-ref-2.html
new file mode 100644
index 000000000..d9f1786a7
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/valid-ref-2.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <form>
+ <button type='submit'></button>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/valid-ref-3.html b/layout/reftests/css-submit-invalid/button-submit/valid-ref-3.html
new file mode 100644
index 000000000..cd0ba4c93
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/valid-ref-3.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <form>
+ <input required>
+ </form>
+ <button type='submit'></button>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/valid-ref-4.html b/layout/reftests/css-submit-invalid/button-submit/valid-ref-4.html
new file mode 100644
index 000000000..7ff5aead1
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/valid-ref-4.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <form>
+ <input required>
+ <button type='button'></button>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/button-submit/valid-ref.html b/layout/reftests/css-submit-invalid/button-submit/valid-ref.html
new file mode 100644
index 000000000..12d113480
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/button-submit/valid-ref.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <form>
+ <input value='foo' required>
+ <button type='submit'></button>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/default-style/button-submit-ref.html b/layout/reftests/css-submit-invalid/default-style/button-submit-ref.html
new file mode 100644
index 000000000..80648da6f
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/default-style/button-submit-ref.html
@@ -0,0 +1,9 @@
+<!DOCTYPE>
+<html>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <body>
+ <form>
+ <button type='submit' class='submit-invalid-ref'>Submit!</button>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/default-style/button-submit.html b/layout/reftests/css-submit-invalid/default-style/button-submit.html
new file mode 100644
index 000000000..fdd5bce51
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/default-style/button-submit.html
@@ -0,0 +1,21 @@
+<!DOCTYPE>
+<html class="reftest-wait">
+ <style>
+ input:invalid {
+ display: none;
+ }
+ </style>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('e').setCustomValidity('foo');
+ document.documentElement.className='';
+ }
+ </script>
+ <body onload="onloadHandler();">
+ <form>
+ <input id='e'>
+ <button type='submit'>Submit!</button>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/default-style/input-image-ref.html b/layout/reftests/css-submit-invalid/default-style/input-image-ref.html
new file mode 100644
index 000000000..f7cadc13a
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/default-style/input-image-ref.html
@@ -0,0 +1,9 @@
+<!DOCTYPE>
+<html>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <body>
+ <form>
+ <input type='image' class='submit-invalid-ref'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/default-style/input-image.html b/layout/reftests/css-submit-invalid/default-style/input-image.html
new file mode 100644
index 000000000..1ab153bd2
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/default-style/input-image.html
@@ -0,0 +1,21 @@
+<!DOCTYPE>
+<html class="reftest-wait">
+ <style>
+ input:invalid {
+ display: none;
+ }
+ </style>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('e').setCustomValidity('foo');
+ document.documentElement.className='';
+ }
+ </script>
+ <body onload="onloadHandler();">
+ <form>
+ <input id='e'>
+ <input type='image'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/default-style/input-submit-ref.html b/layout/reftests/css-submit-invalid/default-style/input-submit-ref.html
new file mode 100644
index 000000000..77c3fbf70
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/default-style/input-submit-ref.html
@@ -0,0 +1,9 @@
+<!DOCTYPE>
+<html>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <body>
+ <form>
+ <input type='submit' class='submit-invalid-ref'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/default-style/input-submit.html b/layout/reftests/css-submit-invalid/default-style/input-submit.html
new file mode 100644
index 000000000..ccc37dff4
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/default-style/input-submit.html
@@ -0,0 +1,21 @@
+<!DOCTYPE>
+<html class="reftest-wait">
+ <style>
+ input:invalid {
+ display: none;
+ }
+ </style>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('e').setCustomValidity('foo');
+ document.documentElement.className='';
+ }
+ </script>
+ <body onload="onloadHandler();">
+ <form>
+ <input id='e'>
+ <input type='submit'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/default-style/reftest-stylo.list b/layout/reftests/css-submit-invalid/default-style/reftest-stylo.list
new file mode 100644
index 000000000..49b10e400
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/default-style/reftest-stylo.list
@@ -0,0 +1,4 @@
+# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
+== input-submit.html input-submit.html
+== input-image.html input-image.html
+== button-submit.html button-submit.html
diff --git a/layout/reftests/css-submit-invalid/default-style/reftest.list b/layout/reftests/css-submit-invalid/default-style/reftest.list
new file mode 100644
index 000000000..93065dd32
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/default-style/reftest.list
@@ -0,0 +1,3 @@
+== input-submit.html input-submit-ref.html
+== input-image.html input-image-ref.html
+== button-submit.html button-submit-ref.html
diff --git a/layout/reftests/css-submit-invalid/default-style/style.css b/layout/reftests/css-submit-invalid/default-style/style.css
new file mode 100644
index 000000000..93fd2e597
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/default-style/style.css
@@ -0,0 +1,2 @@
+.submit-invalid-ref {
+}
diff --git a/layout/reftests/css-submit-invalid/input-image/add-invalid-element.html b/layout/reftests/css-submit-invalid/input-image/add-invalid-element.html
new file mode 100644
index 000000000..6b697a7db
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/add-invalid-element.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.forms[0].appendChild(document.getElementById('i'));
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <input id='i' type='email' value='foo'>
+ <form>
+ <input type='image'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/add-submit-control.html b/layout/reftests/css-submit-invalid/input-image/add-submit-control.html
new file mode 100644
index 000000000..b6bbc9cc0
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/add-submit-control.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.forms[0].appendChild(document.getElementById('i'));
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <input id='i' type='image'>
+ <form>
+ <input required>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/change-type-not-submit-control.html b/layout/reftests/css-submit-invalid/input-image/change-type-not-submit-control.html
new file mode 100644
index 000000000..f9656f6c0
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/change-type-not-submit-control.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('i').type = 'text';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input required>
+ <input id='i' type='image'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/change-type-submit-control.html b/layout/reftests/css-submit-invalid/input-image/change-type-submit-control.html
new file mode 100644
index 000000000..370743bf8
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/change-type-submit-control.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('i').type = 'image';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input required>
+ <input id='i'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/dynamic-invalid-barred-2.html b/layout/reftests/css-submit-invalid/input-image/dynamic-invalid-barred-2.html
new file mode 100644
index 000000000..86782baf4
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/dynamic-invalid-barred-2.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('i').value = '';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input id='i' value='foo' required readonly>
+ <input type='image'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/dynamic-invalid-barred.html b/layout/reftests/css-submit-invalid/input-image/dynamic-invalid-barred.html
new file mode 100644
index 000000000..b54b8f123
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/dynamic-invalid-barred.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('i').readOnly = 'ro';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input id='i' required>
+ <input type='image'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/dynamic-invalid-not-barred.html b/layout/reftests/css-submit-invalid/input-image/dynamic-invalid-not-barred.html
new file mode 100644
index 000000000..77fd69526
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/dynamic-invalid-not-barred.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('i').removeAttribute('readonly');
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input id='i' required readonly>
+ <input type='image'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/dynamic-invalid.html b/layout/reftests/css-submit-invalid/input-image/dynamic-invalid.html
new file mode 100644
index 000000000..e13a3f1ec
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/dynamic-invalid.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ :-moz-ui-invalid { box-shadow: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('i').value = '';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input id='i' value='foo' required>
+ <input type='image'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/dynamic-valid.html b/layout/reftests/css-submit-invalid/input-image/dynamic-valid.html
new file mode 100644
index 000000000..342efb17d
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/dynamic-valid.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('i').value = 'foo';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input id='i' required>
+ <input type='image'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/invalid-barred-ref.html b/layout/reftests/css-submit-invalid/input-image/invalid-barred-ref.html
new file mode 100644
index 000000000..305b03698
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/invalid-barred-ref.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <form>
+ <input required readonly>
+ <input type='image'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/invalid-ref-2.html b/layout/reftests/css-submit-invalid/input-image/invalid-ref-2.html
new file mode 100644
index 000000000..dd03dc812
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/invalid-ref-2.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <form>
+ <input type='email' value='foo'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/invalid-ref-3.html b/layout/reftests/css-submit-invalid/input-image/invalid-ref-3.html
new file mode 100644
index 000000000..8a82bdafa
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/invalid-ref-3.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <table id='t'>
+ <tr><td><input required></td></tr>
+ <tr><td><input type='image'></td></tr>
+ </table>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/invalid-ref.html b/layout/reftests/css-submit-invalid/input-image/invalid-ref.html
new file mode 100644
index 000000000..76d80f6fa
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/invalid-ref.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <form>
+ <input required>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/reftest-stylo.list b/layout/reftests/css-submit-invalid/input-image/reftest-stylo.list
new file mode 100644
index 000000000..868f916c5
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/reftest-stylo.list
@@ -0,0 +1,18 @@
+# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
+== static-valid.html static-valid.html
+== dynamic-valid.html dynamic-valid.html
+== static-invalid.html static-invalid.html
+skip-if(B2G||Mulet) == dynamic-invalid.html dynamic-invalid.html
+# Initial mulet triage: parity with B2G/B2G Desktop
+== dynamic-invalid-barred.html dynamic-invalid-barred.html
+== dynamic-invalid-barred-2.html dynamic-invalid-barred-2.html
+== dynamic-invalid-not-barred.html dynamic-invalid-not-barred.html
+== static-invalid-barred.html static-invalid-barred.html
+== remove-invalid-element.html remove-invalid-element.html
+== add-invalid-element.html add-invalid-element.html
+== add-submit-control.html add-submit-control.html
+== remove-submit-control.html remove-submit-control.html
+== change-type-submit-control.html change-type-submit-control.html
+== change-type-not-submit-control.html change-type-not-submit-control.html
+== self-invalid.html self-invalid.html
+== remove-form.html remove-form.html
diff --git a/layout/reftests/css-submit-invalid/input-image/reftest.list b/layout/reftests/css-submit-invalid/input-image/reftest.list
new file mode 100644
index 000000000..cfb8df94e
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/reftest.list
@@ -0,0 +1,16 @@
+== static-valid.html valid-ref.html
+== dynamic-valid.html valid-ref.html
+== static-invalid.html invalid-ref.html
+== dynamic-invalid.html invalid-ref.html
+== dynamic-invalid-barred.html invalid-barred-ref.html
+== dynamic-invalid-barred-2.html invalid-barred-ref.html
+== dynamic-invalid-not-barred.html invalid-ref.html
+== static-invalid-barred.html invalid-barred-ref.html
+== remove-invalid-element.html valid-ref-2.html
+== add-invalid-element.html invalid-ref-2.html
+== add-submit-control.html invalid-ref.html
+== remove-submit-control.html valid-ref-3.html
+== change-type-submit-control.html invalid-ref.html
+== change-type-not-submit-control.html valid-ref-4.html
+== self-invalid.html about:blank
+== remove-form.html invalid-ref-3.html
diff --git a/layout/reftests/css-submit-invalid/input-image/remove-form.html b/layout/reftests/css-submit-invalid/input-image/remove-form.html
new file mode 100644
index 000000000..628694b8a
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/remove-form.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('t').removeChild(document.forms[0]);
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <table id='t'>
+ <form>
+ <tr><td><input required></td></tr>
+ <tr><td><input type='image'></td></tr>
+ </form>
+ </table>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/remove-invalid-element.html b/layout/reftests/css-submit-invalid/input-image/remove-invalid-element.html
new file mode 100644
index 000000000..643fd0da8
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/remove-invalid-element.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.forms[0].removeChild(document.getElementById('i'));
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input id='i' type='email' value='foo'>
+ <input type='image'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/remove-submit-control.html b/layout/reftests/css-submit-invalid/input-image/remove-submit-control.html
new file mode 100644
index 000000000..81e7f0cf0
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/remove-submit-control.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.body.appendChild(document.getElementById('i'));
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input required>
+ <input id='i' type='image'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/self-invalid.html b/layout/reftests/css-submit-invalid/input-image/self-invalid.html
new file mode 100644
index 000000000..76d7a4626
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/self-invalid.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('i').setCustomValidity('foo');
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input id='i' type='image'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/static-invalid-barred.html b/layout/reftests/css-submit-invalid/input-image/static-invalid-barred.html
new file mode 100644
index 000000000..b4d68cc26
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/static-invalid-barred.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <body>
+ <form>
+ <input required readonly>
+ <input type='image'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/static-invalid.html b/layout/reftests/css-submit-invalid/input-image/static-invalid.html
new file mode 100644
index 000000000..5bf007b74
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/static-invalid.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <body>
+ <form>
+ <input required>
+ <input type='image'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/static-valid.html b/layout/reftests/css-submit-invalid/input-image/static-valid.html
new file mode 100644
index 000000000..fea6dd8ae
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/static-valid.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <body>
+ <form>
+ <input value='foo' required>
+ <input type='image'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/valid-ref-2.html b/layout/reftests/css-submit-invalid/input-image/valid-ref-2.html
new file mode 100644
index 000000000..56c903dc4
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/valid-ref-2.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <form>
+ <input type='image'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/valid-ref-3.html b/layout/reftests/css-submit-invalid/input-image/valid-ref-3.html
new file mode 100644
index 000000000..91bf77cc8
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/valid-ref-3.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <form>
+ <input required>
+ </form>
+ <input type='image'>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/valid-ref-4.html b/layout/reftests/css-submit-invalid/input-image/valid-ref-4.html
new file mode 100644
index 000000000..df70b8f34
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/valid-ref-4.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <form>
+ <input required>
+ <input>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-image/valid-ref.html b/layout/reftests/css-submit-invalid/input-image/valid-ref.html
new file mode 100644
index 000000000..634a8c7ef
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-image/valid-ref.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <form>
+ <input value='foo' required>
+ <input type='image'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/add-invalid-element.html b/layout/reftests/css-submit-invalid/input-submit/add-invalid-element.html
new file mode 100644
index 000000000..2c1553914
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/add-invalid-element.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.forms[0].appendChild(document.getElementById('i'));
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <input id='i' type='email' value='foo'>
+ <form>
+ <input type='submit'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/add-submit-control.html b/layout/reftests/css-submit-invalid/input-submit/add-submit-control.html
new file mode 100644
index 000000000..ca50270db
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/add-submit-control.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.forms[0].appendChild(document.getElementById('i'));
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <input id='i' type='submit'>
+ <form>
+ <input required>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/change-type-not-submit-control.html b/layout/reftests/css-submit-invalid/input-submit/change-type-not-submit-control.html
new file mode 100644
index 000000000..d1a2f3438
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/change-type-not-submit-control.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('i').type = 'text';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input required>
+ <input id='i' type='submit'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/change-type-submit-control.html b/layout/reftests/css-submit-invalid/input-submit/change-type-submit-control.html
new file mode 100644
index 000000000..5ce8dd7f7
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/change-type-submit-control.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('i').type = 'submit';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input required>
+ <input id='i'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/dynamic-invalid-barred-2.html b/layout/reftests/css-submit-invalid/input-submit/dynamic-invalid-barred-2.html
new file mode 100644
index 000000000..6768e71d0
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/dynamic-invalid-barred-2.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('i').value = '';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input id='i' value='foo' required readonly>
+ <input type='submit'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/dynamic-invalid-barred.html b/layout/reftests/css-submit-invalid/input-submit/dynamic-invalid-barred.html
new file mode 100644
index 000000000..327bbb200
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/dynamic-invalid-barred.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('i').readOnly = 'ro';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input id='i' required>
+ <input type='submit'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/dynamic-invalid-not-barred.html b/layout/reftests/css-submit-invalid/input-submit/dynamic-invalid-not-barred.html
new file mode 100644
index 000000000..8c0eb9078
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/dynamic-invalid-not-barred.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('i').removeAttribute('readonly');
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input id='i' required readonly>
+ <input type='submit'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/dynamic-invalid.html b/layout/reftests/css-submit-invalid/input-submit/dynamic-invalid.html
new file mode 100644
index 000000000..53aa64a2b
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/dynamic-invalid.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ :-moz-ui-invalid { box-shadow: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('i').value = '';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input id='i' value='foo' required>
+ <input type='submit'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/dynamic-valid.html b/layout/reftests/css-submit-invalid/input-submit/dynamic-valid.html
new file mode 100644
index 000000000..1151e7bb7
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/dynamic-valid.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('i').value = 'foo';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input id='i' required>
+ <input type='submit'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/invalid-barred-ref.html b/layout/reftests/css-submit-invalid/input-submit/invalid-barred-ref.html
new file mode 100644
index 000000000..ff532c819
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/invalid-barred-ref.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <form>
+ <input required readonly>
+ <input type='submit'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/invalid-ref-2.html b/layout/reftests/css-submit-invalid/input-submit/invalid-ref-2.html
new file mode 100644
index 000000000..dd03dc812
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/invalid-ref-2.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <form>
+ <input type='email' value='foo'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/invalid-ref-3.html b/layout/reftests/css-submit-invalid/input-submit/invalid-ref-3.html
new file mode 100644
index 000000000..ec4cbc4e9
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/invalid-ref-3.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <table id='t'>
+ <tr><td><input required></td></tr>
+ <tr><td><input type='submit'></td></tr>
+ </table>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/invalid-ref.html b/layout/reftests/css-submit-invalid/input-submit/invalid-ref.html
new file mode 100644
index 000000000..76d80f6fa
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/invalid-ref.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <form>
+ <input required>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/reftest-stylo.list b/layout/reftests/css-submit-invalid/input-submit/reftest-stylo.list
new file mode 100644
index 000000000..868f916c5
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/reftest-stylo.list
@@ -0,0 +1,18 @@
+# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
+== static-valid.html static-valid.html
+== dynamic-valid.html dynamic-valid.html
+== static-invalid.html static-invalid.html
+skip-if(B2G||Mulet) == dynamic-invalid.html dynamic-invalid.html
+# Initial mulet triage: parity with B2G/B2G Desktop
+== dynamic-invalid-barred.html dynamic-invalid-barred.html
+== dynamic-invalid-barred-2.html dynamic-invalid-barred-2.html
+== dynamic-invalid-not-barred.html dynamic-invalid-not-barred.html
+== static-invalid-barred.html static-invalid-barred.html
+== remove-invalid-element.html remove-invalid-element.html
+== add-invalid-element.html add-invalid-element.html
+== add-submit-control.html add-submit-control.html
+== remove-submit-control.html remove-submit-control.html
+== change-type-submit-control.html change-type-submit-control.html
+== change-type-not-submit-control.html change-type-not-submit-control.html
+== self-invalid.html self-invalid.html
+== remove-form.html remove-form.html
diff --git a/layout/reftests/css-submit-invalid/input-submit/reftest.list b/layout/reftests/css-submit-invalid/input-submit/reftest.list
new file mode 100644
index 000000000..cfb8df94e
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/reftest.list
@@ -0,0 +1,16 @@
+== static-valid.html valid-ref.html
+== dynamic-valid.html valid-ref.html
+== static-invalid.html invalid-ref.html
+== dynamic-invalid.html invalid-ref.html
+== dynamic-invalid-barred.html invalid-barred-ref.html
+== dynamic-invalid-barred-2.html invalid-barred-ref.html
+== dynamic-invalid-not-barred.html invalid-ref.html
+== static-invalid-barred.html invalid-barred-ref.html
+== remove-invalid-element.html valid-ref-2.html
+== add-invalid-element.html invalid-ref-2.html
+== add-submit-control.html invalid-ref.html
+== remove-submit-control.html valid-ref-3.html
+== change-type-submit-control.html invalid-ref.html
+== change-type-not-submit-control.html valid-ref-4.html
+== self-invalid.html about:blank
+== remove-form.html invalid-ref-3.html
diff --git a/layout/reftests/css-submit-invalid/input-submit/remove-form.html b/layout/reftests/css-submit-invalid/input-submit/remove-form.html
new file mode 100644
index 000000000..e33e79c59
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/remove-form.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('t').removeChild(document.forms[0]);
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <table id='t'>
+ <form>
+ <tr><td><input required></td></tr>
+ <tr><td><input type='submit'></td></tr>
+ </form>
+ </table>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/remove-invalid-element.html b/layout/reftests/css-submit-invalid/input-submit/remove-invalid-element.html
new file mode 100644
index 000000000..0e40a76e0
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/remove-invalid-element.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.forms[0].removeChild(document.getElementById('i'));
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input id='i' type='email' value='foo'>
+ <input type='submit'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/remove-submit-control.html b/layout/reftests/css-submit-invalid/input-submit/remove-submit-control.html
new file mode 100644
index 000000000..7c7a0da05
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/remove-submit-control.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.body.appendChild(document.getElementById('i'));
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input required>
+ <input id='i' type='submit'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/self-invalid.html b/layout/reftests/css-submit-invalid/input-submit/self-invalid.html
new file mode 100644
index 000000000..94d45217b
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/self-invalid.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <head>
+ <style>
+ :invalid { display: none; }
+ </style>
+ </head>
+ <script>
+ function onloadHandler()
+ {
+ document.getElementById('i').setCustomValidity('foo');
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='onloadHandler();'>
+ <form>
+ <input id='i' type='submit'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/static-invalid-barred.html b/layout/reftests/css-submit-invalid/input-submit/static-invalid-barred.html
new file mode 100644
index 000000000..cc0b1c24a
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/static-invalid-barred.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <body>
+ <form>
+ <input required readonly>
+ <input type='submit'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/static-invalid.html b/layout/reftests/css-submit-invalid/input-submit/static-invalid.html
new file mode 100644
index 000000000..84c47cce6
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/static-invalid.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <body>
+ <form>
+ <input required>
+ <input type='submit'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/static-valid.html b/layout/reftests/css-submit-invalid/input-submit/static-valid.html
new file mode 100644
index 000000000..6401eb893
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/static-valid.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <style>
+ :-moz-submit-invalid { display: none; }
+ </style>
+ </head>
+ <body>
+ <form>
+ <input value='foo' required>
+ <input type='submit'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/valid-ref-2.html b/layout/reftests/css-submit-invalid/input-submit/valid-ref-2.html
new file mode 100644
index 000000000..81ccd0610
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/valid-ref-2.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <form>
+ <input type='submit'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/valid-ref-3.html b/layout/reftests/css-submit-invalid/input-submit/valid-ref-3.html
new file mode 100644
index 000000000..ac162eaa4
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/valid-ref-3.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <form>
+ <input required>
+ </form>
+ <input type='submit'>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/valid-ref-4.html b/layout/reftests/css-submit-invalid/input-submit/valid-ref-4.html
new file mode 100644
index 000000000..df70b8f34
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/valid-ref-4.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <form>
+ <input required>
+ <input>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/input-submit/valid-ref.html b/layout/reftests/css-submit-invalid/input-submit/valid-ref.html
new file mode 100644
index 000000000..b8b5466dd
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/input-submit/valid-ref.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <form>
+ <input value='foo' required>
+ <input type='submit'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-submit-invalid/reftest-stylo.list b/layout/reftests/css-submit-invalid/reftest-stylo.list
new file mode 100644
index 000000000..3ffd1e932
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/reftest-stylo.list
@@ -0,0 +1,5 @@
+# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
+include button-submit/reftest-stylo.list
+include input-image/reftest-stylo.list
+include input-submit/reftest-stylo.list
+include default-style/reftest-stylo.list
diff --git a/layout/reftests/css-submit-invalid/reftest.list b/layout/reftests/css-submit-invalid/reftest.list
new file mode 100644
index 000000000..5dd28ba91
--- /dev/null
+++ b/layout/reftests/css-submit-invalid/reftest.list
@@ -0,0 +1,4 @@
+include button-submit/reftest.list
+include input-image/reftest.list
+include input-submit/reftest.list
+include default-style/reftest.list