summaryrefslogtreecommitdiffstats
path: root/layout/reftests/css-placeholder
diff options
context:
space:
mode:
Diffstat (limited to 'layout/reftests/css-placeholder')
-rw-r--r--layout/reftests/css-placeholder/css-background-ref.html9
-rw-r--r--layout/reftests/css-placeholder/css-background.html23
-rw-r--r--layout/reftests/css-placeholder/css-restrictions-ref.html9
-rw-r--r--layout/reftests/css-placeholder/css-restrictions.html24
-rw-r--r--layout/reftests/css-placeholder/css-simple-styling-ref.html19
-rw-r--r--layout/reftests/css-placeholder/css-simple-styling.html35
-rw-r--r--layout/reftests/css-placeholder/ignore-pseudo-class-ref.html7
-rw-r--r--layout/reftests/css-placeholder/ignore-pseudo-class.html15
-rw-r--r--layout/reftests/css-placeholder/input/css-display.html14
-rw-r--r--layout/reftests/css-placeholder/input/css-opacity.html14
-rw-r--r--layout/reftests/css-placeholder/input/css-text-align.html14
-rw-r--r--layout/reftests/css-placeholder/input/input-ref.html7
-rw-r--r--layout/reftests/css-placeholder/input/placeholder-add.html16
-rw-r--r--layout/reftests/css-placeholder/input/placeholder-blur.html30
-rw-r--r--layout/reftests/css-placeholder/input/placeholder-button-ref.html9
-rw-r--r--layout/reftests/css-placeholder/input/placeholder-empty-string-ref.html7
-rw-r--r--layout/reftests/css-placeholder/input/placeholder-empty-string.html7
-rw-r--r--layout/reftests/css-placeholder/input/placeholder-focus-ref.html22
-rw-r--r--layout/reftests/css-placeholder/input/placeholder-focus.html22
-rw-r--r--layout/reftests/css-placeholder/input/placeholder-removal.html16
-rw-r--r--layout/reftests/css-placeholder/input/placeholder-simple-ref.html8
-rw-r--r--layout/reftests/css-placeholder/input/placeholder-simple.html8
-rw-r--r--layout/reftests/css-placeholder/input/placeholder-type-change-1.html16
-rw-r--r--layout/reftests/css-placeholder/input/placeholder-type-change-2.html16
-rw-r--r--layout/reftests/css-placeholder/input/placeholder-value-ref.html7
-rw-r--r--layout/reftests/css-placeholder/input/placeholder-value-reset.html19
-rw-r--r--layout/reftests/css-placeholder/input/placeholder-value-set.html16
-rw-r--r--layout/reftests/css-placeholder/input/placeholder-value-unset.html16
-rw-r--r--layout/reftests/css-placeholder/input/placeholder-value.html8
-rw-r--r--layout/reftests/css-placeholder/input/placeholdershown-ref.html7
-rw-r--r--layout/reftests/css-placeholder/input/placeholdershown.html7
-rw-r--r--layout/reftests/css-placeholder/input/reftest-stylo.list28
-rw-r--r--layout/reftests/css-placeholder/input/reftest.list28
-rw-r--r--layout/reftests/css-placeholder/input/style-shown.css21
-rw-r--r--layout/reftests/css-placeholder/input/style.css6
-rw-r--r--layout/reftests/css-placeholder/reftest-stylo.list8
-rw-r--r--layout/reftests/css-placeholder/reftest.list7
-rw-r--r--layout/reftests/css-placeholder/textarea/css-display.html14
-rw-r--r--layout/reftests/css-placeholder/textarea/css-opacity.html14
-rw-r--r--layout/reftests/css-placeholder/textarea/css-resize-ref.html13
-rw-r--r--layout/reftests/css-placeholder/textarea/css-resize.html20
-rw-r--r--layout/reftests/css-placeholder/textarea/placeholder-add.html16
-rw-r--r--layout/reftests/css-placeholder/textarea/placeholder-blur.html30
-rw-r--r--layout/reftests/css-placeholder/textarea/placeholder-empty-string-ref.html7
-rw-r--r--layout/reftests/css-placeholder/textarea/placeholder-empty-string.html7
-rw-r--r--layout/reftests/css-placeholder/textarea/placeholder-focus-ref.html22
-rw-r--r--layout/reftests/css-placeholder/textarea/placeholder-focus.html22
-rw-r--r--layout/reftests/css-placeholder/textarea/placeholder-removal.html16
-rw-r--r--layout/reftests/css-placeholder/textarea/placeholder-simple-ref.html8
-rw-r--r--layout/reftests/css-placeholder/textarea/placeholder-simple.html8
-rw-r--r--layout/reftests/css-placeholder/textarea/placeholder-value-ref.html7
-rw-r--r--layout/reftests/css-placeholder/textarea/placeholder-value-reset.html19
-rw-r--r--layout/reftests/css-placeholder/textarea/placeholder-value-set.html16
-rw-r--r--layout/reftests/css-placeholder/textarea/placeholder-value-unset.html16
-rw-r--r--layout/reftests/css-placeholder/textarea/placeholder-value.html8
-rw-r--r--layout/reftests/css-placeholder/textarea/placeholdershown-ref.html7
-rw-r--r--layout/reftests/css-placeholder/textarea/placeholdershown.html7
-rw-r--r--layout/reftests/css-placeholder/textarea/reftest-stylo.list26
-rw-r--r--layout/reftests/css-placeholder/textarea/reftest.list26
-rw-r--r--layout/reftests/css-placeholder/textarea/style-shown.css22
-rw-r--r--layout/reftests/css-placeholder/textarea/style.css6
-rw-r--r--layout/reftests/css-placeholder/textarea/textarea-ref.html7
62 files changed, 909 insertions, 0 deletions
diff --git a/layout/reftests/css-placeholder/css-background-ref.html b/layout/reftests/css-placeholder/css-background-ref.html
new file mode 100644
index 000000000..b75db15b6
--- /dev/null
+++ b/layout/reftests/css-placeholder/css-background-ref.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <input placeholder='foo'>
+ <textarea placeholder='foo'></textarea>
+ <input placeholder='foo'>
+ <textarea placeholder='foo'></textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/css-background.html b/layout/reftests/css-placeholder/css-background.html
new file mode 100644
index 000000000..94ab1a5b0
--- /dev/null
+++ b/layout/reftests/css-placeholder/css-background.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+ <!--
+ This test checks that setting a background on a ::placeholder works.
+ However, given that it is not possible to do an actualy equality check, we
+ have te check that setting a background doesn't produce the same result
+ as not setting it.
+ -->
+ <style>
+ :-moz-any(input, textarea).color::placeholder {
+ background-color: blue;
+ }
+ :-moz-any(input, textarea).gradient::placeholder {
+ background: linear-gradient(to right, blue, white, red);
+ }
+ </style>
+ <body>
+ <input class="color" placeholder='foo'>
+ <textarea class="color" placeholder='foo'></textarea>
+ <input class="gradient" placeholder='foo'>
+ <textarea class="gradient" placeholder='foo'></textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/css-restrictions-ref.html b/layout/reftests/css-placeholder/css-restrictions-ref.html
new file mode 100644
index 000000000..a09df21e1
--- /dev/null
+++ b/layout/reftests/css-placeholder/css-restrictions-ref.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <input placeholder='foo'>
+ <textarea placeholder='foo'></textarea>
+ <input placeholder='this is a quitelongetextforasmallelement'>
+ <textarea placeholder='this is a quitelongetextforasmallelement'></textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/css-restrictions.html b/layout/reftests/css-placeholder/css-restrictions.html
new file mode 100644
index 000000000..746ed2ee9
--- /dev/null
+++ b/layout/reftests/css-placeholder/css-restrictions.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+ <style>
+ :-moz-any(input, textarea)::placeholder {
+ visibility: hidden;
+ padding: 20px;
+ float: right;
+ overflow: visible;
+ white-space: pre;
+
+ /*
+ * This list could be endless given that all non-whitelisted properties
+ * are restricted.
+ */
+ }
+ </style>
+ <body>
+ <input placeholder='foo'>
+ <textarea placeholder='foo'></textarea>
+ <!-- for overflow and white-space -->
+ <input placeholder='this is a quitelongetextforasmallelement'>
+ <textarea placeholder='this is a quitelongetextforasmallelement'></textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/css-simple-styling-ref.html b/layout/reftests/css-placeholder/css-simple-styling-ref.html
new file mode 100644
index 000000000..eeaca440c
--- /dev/null
+++ b/layout/reftests/css-placeholder/css-simple-styling-ref.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+ <style>
+ :-moz-any(input, textarea) {
+ font: -moz-list;
+ font-family: mono;
+ font-style: italic;
+ color: blue;
+ word-spacing: 5px;
+ text-shadow: 1px 1px 1px red;
+ }
+ </style>
+ <body>
+ <input value='foo bar'>
+ <textarea>foo bar</textarea>
+ <input value='bar foo'>
+ <textarea>bar foo</textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/css-simple-styling.html b/layout/reftests/css-placeholder/css-simple-styling.html
new file mode 100644
index 000000000..bfecc19c8
--- /dev/null
+++ b/layout/reftests/css-placeholder/css-simple-styling.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+ <!--
+ This test checks that a few allowed CSS properties have an effect when
+ applied to ::placeholder or ::-moz-placeholder.
+ -->
+ <style>
+ /*
+ * We need to set some properties on the <input> because its size will
+ * depend on its font.
+ */
+ input, textarea {
+ font: -moz-list;
+ font-family: mono;
+ font-style: italic;
+ }
+
+ [placeholder="foo bar"]::placeholder,
+ [placeholder="bar foo"]::-moz-placeholder {
+ opacity: 1.0;
+ font: -moz-list;
+ font-family: mono;
+ font-style: italic;
+ color: blue;
+ word-spacing: 5px;
+ text-shadow: 1px 1px 1px red;
+ }
+ </style>
+ <body>
+ <input placeholder='foo bar'>
+ <textarea placeholder='foo bar'></textarea>
+ <input placeholder='bar foo'>
+ <textarea placeholder='bar foo'></textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/ignore-pseudo-class-ref.html b/layout/reftests/css-placeholder/ignore-pseudo-class-ref.html
new file mode 100644
index 000000000..9085635b6
--- /dev/null
+++ b/layout/reftests/css-placeholder/ignore-pseudo-class-ref.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+<body>
+ <input placeholder='foobar'>
+ <textarea placeholder='foobar'></textarea>
+</body>
+</html>
diff --git a/layout/reftests/css-placeholder/ignore-pseudo-class.html b/layout/reftests/css-placeholder/ignore-pseudo-class.html
new file mode 100644
index 000000000..bd314c5b8
--- /dev/null
+++ b/layout/reftests/css-placeholder/ignore-pseudo-class.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<style>
+ :-moz-placeholder {
+ color: red;
+ }
+ :placeholder {
+ color: red;
+ }
+</style>
+<body>
+ <input placeholder='foobar'>
+ <textarea placeholder='foobar'></textarea>
+</body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/css-display.html b/layout/reftests/css-placeholder/input/css-display.html
new file mode 100644
index 000000000..a97734b15
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/css-display.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <style>
+ [bar]::-moz-placeholder,
+ [foo]::placeholder {
+ display: inline;
+ }
+ </style>
+ <body>
+ <input placeholder='foo'>
+ <input placeholder='bar'>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/css-opacity.html b/layout/reftests/css-placeholder/input/css-opacity.html
new file mode 100644
index 000000000..dd6e21ee1
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/css-opacity.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <style>
+ [placeholder="bar"]::-moz-placeholder,
+ [placeholder="foo"]::placeholder {
+ opacity: 0.1;
+ }
+ </style>
+ <body>
+ <input placeholder='foo'>
+ <input placeholder='bar'>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/css-text-align.html b/layout/reftests/css-placeholder/input/css-text-align.html
new file mode 100644
index 000000000..d71af94d5
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/css-text-align.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <style>
+ [placeholder="bar"]::-moz-placeholder,
+ [placeholder="foo"]::placeholder {
+ text-align: center;
+ }
+ </style>
+ <body>
+ <input placeholder='foo'>
+ <input placeholder='bar'>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/input-ref.html b/layout/reftests/css-placeholder/input/input-ref.html
new file mode 100644
index 000000000..8589b2b28
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/input-ref.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <input>
+ <input>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/placeholder-add.html b/layout/reftests/css-placeholder/input/placeholder-add.html
new file mode 100644
index 000000000..6ec33026d
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/placeholder-add.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <script>
+ function loadHandler()
+ {
+ document.getElementById('moz').placeholder='bar';
+ document.getElementById('i').placeholder='foo';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='loadHandler();'>
+ <input id='i'>
+ <input id='moz'>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/placeholder-blur.html b/layout/reftests/css-placeholder/input/placeholder-blur.html
new file mode 100644
index 000000000..9c9f3c62b
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/placeholder-blur.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <script>
+ function loadHandler()
+ {
+ document.getElementById('i').focus();
+ }
+ function focusHandler()
+ {
+ document.getElementById('i').blur();
+ }
+ function blurHandler()
+ {
+ document.getElementById('moz').focus();
+ }
+ function focusHandlerMoz()
+ {
+ document.getElementById('moz').blur();
+ }
+ function blurHandlerMoz()
+ {
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='loadHandler();'>
+ <input id='i' placeholder='foo' onfocus='focusHandler();' onblur='blurHandler();'>
+ <input id='moz' placeholder='bar' onfocus='focusHandlerMoz();' onblur='blurHandlerMoz();'>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/placeholder-button-ref.html b/layout/reftests/css-placeholder/input/placeholder-button-ref.html
new file mode 100644
index 000000000..8f584f6e3
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/placeholder-button-ref.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <body>
+ <input type='button'>
+ <input type='button'>
+ </body>
+</html>
+
diff --git a/layout/reftests/css-placeholder/input/placeholder-empty-string-ref.html b/layout/reftests/css-placeholder/input/placeholder-empty-string-ref.html
new file mode 100644
index 000000000..ad0de3cfb
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/placeholder-empty-string-ref.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <body>
+ <input class='ref'>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/placeholder-empty-string.html b/layout/reftests/css-placeholder/input/placeholder-empty-string.html
new file mode 100644
index 000000000..8d9dfb5b4
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/placeholder-empty-string.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <body>
+ <input placeholder=''>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/placeholder-focus-ref.html b/layout/reftests/css-placeholder/input/placeholder-focus-ref.html
new file mode 100644
index 000000000..d2e2af35a
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/placeholder-focus-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <script>
+ function loadHandler()
+ {
+ document.getElementById('i').focus();
+ }
+ function focusHandler()
+ {
+ document.getElementById('moz').focus();
+ }
+ function focusHandlerMoz()
+ {
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='loadHandler();'>
+ <input id='i' class='ref' value='foo' onfocus='focusHandler();'>
+ <input id='moz' class='ref' value='bar' onfocus='focusHandlerMoz();'>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/placeholder-focus.html b/layout/reftests/css-placeholder/input/placeholder-focus.html
new file mode 100644
index 000000000..285bf4f60
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/placeholder-focus.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <script>
+ function loadHandler()
+ {
+ document.getElementById('i').focus();
+ }
+ function focusHandler()
+ {
+ document.getElementById('moz').focus();
+ }
+ function focusHandlerMoz()
+ {
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='loadHandler();'>
+ <input id='i' placeholder='foo' onfocus='focusHandler();'>
+ <input id='moz' placeholder='bar' onfocus='focusHandlerMoz();'>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/placeholder-removal.html b/layout/reftests/css-placeholder/input/placeholder-removal.html
new file mode 100644
index 000000000..88b682914
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/placeholder-removal.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <script>
+ function loadHandler()
+ {
+ document.getElementById('i').removeAttribute('placeholder');
+ document.getElementById('moz').removeAttribute('placeholder');
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='loadHandler();'>
+ <input id='i' placeholder='foo'>
+ <input id='moz' placeholder='bar'>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/placeholder-simple-ref.html b/layout/reftests/css-placeholder/input/placeholder-simple-ref.html
new file mode 100644
index 000000000..02c604b7d
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/placeholder-simple-ref.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <body>
+ <input class='ref' value='foo'>
+ <input class='ref' value='bar'>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/placeholder-simple.html b/layout/reftests/css-placeholder/input/placeholder-simple.html
new file mode 100644
index 000000000..c7958ed1f
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/placeholder-simple.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <body>
+ <input placeholder='foo'>
+ <input placeholder='bar'>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/placeholder-type-change-1.html b/layout/reftests/css-placeholder/input/placeholder-type-change-1.html
new file mode 100644
index 000000000..2eb0ea4d3
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/placeholder-type-change-1.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <script>
+ function loadHandler()
+ {
+ document.getElementById('i').type = 'text';
+ document.getElementById('moz').type = 'text';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='loadHandler();'>
+ <input type='button' id='i' placeholder='foo'>
+ <input type='button' id='moz' placeholder='bar'>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/placeholder-type-change-2.html b/layout/reftests/css-placeholder/input/placeholder-type-change-2.html
new file mode 100644
index 000000000..7a1feb06e
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/placeholder-type-change-2.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <script>
+ function loadHandler()
+ {
+ document.getElementById('i').type = 'button';
+ document.getElementById('moz').type = 'button';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='loadHandler();'>
+ <input id='i' placeholder='foo'>
+ <input id='moz' placeholder='bar'>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/placeholder-value-ref.html b/layout/reftests/css-placeholder/input/placeholder-value-ref.html
new file mode 100644
index 000000000..79209802a
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/placeholder-value-ref.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <input value='bar'>
+ <input value='foo'>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/placeholder-value-reset.html b/layout/reftests/css-placeholder/input/placeholder-value-reset.html
new file mode 100644
index 000000000..3e0b672ce
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/placeholder-value-reset.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <script>
+ function loadHandler()
+ {
+ document.getElementById('i').value = 'bar';
+ document.getElementById('moz').value = 'foo';
+ document.forms[0].reset();
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='loadHandler();'>
+ <form>
+ <input id='i' placeholder='foo'>
+ <input id='moz' placeholder='bar'>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/placeholder-value-set.html b/layout/reftests/css-placeholder/input/placeholder-value-set.html
new file mode 100644
index 000000000..c2b1a0c01
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/placeholder-value-set.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <script>
+ function loadHandler()
+ {
+ document.getElementById('i').value = 'bar';
+ document.getElementById('moz').value = 'foo';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='loadHandler();'>
+ <input id='i' placeholder='foo'>
+ <input id='moz' placeholder='bar'>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/placeholder-value-unset.html b/layout/reftests/css-placeholder/input/placeholder-value-unset.html
new file mode 100644
index 000000000..c985d5667
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/placeholder-value-unset.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <script>
+ function loadHandler()
+ {
+ document.getElementById('i').value = '';
+ document.getElementById('moz').value = '';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='loadHandler();'>
+ <input id='i' placeholder='foo' value='bar'>
+ <input id='moz' placeholder='bar' value='foo'>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/placeholder-value.html b/layout/reftests/css-placeholder/input/placeholder-value.html
new file mode 100644
index 000000000..80694027c
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/placeholder-value.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <body>
+ <input placeholder='foo' value='bar'>
+ <input placeholder='bar' value='foo'>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/placeholdershown-ref.html b/layout/reftests/css-placeholder/input/placeholdershown-ref.html
new file mode 100644
index 000000000..126bb09f7
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/placeholdershown-ref.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+ <link rel='stylesheet' type='text/css' href='style-shown.css'>
+ <body>
+ <input class='shown-ref' value='foo'>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/placeholdershown.html b/layout/reftests/css-placeholder/input/placeholdershown.html
new file mode 100644
index 000000000..afd0b756d
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/placeholdershown.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+ <link rel='stylesheet' type='text/css' href='style-shown.css'>
+ <body>
+ <input class='shown' placeholder='foo'>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/input/reftest-stylo.list b/layout/reftests/css-placeholder/input/reftest-stylo.list
new file mode 100644
index 000000000..8af78867b
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/reftest-stylo.list
@@ -0,0 +1,28 @@
+# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
+# Tests using placeholder-focus-ref.html as a reference are disabled because
+# we can't change the caret colour nor disable it and we can't change the
+# text colour without changing the caret which means that the tested page has
+# a black caret with a grey text and the reference has a grey caret with grey
+# text. The only thing that is doable is to make the caret grey in the tested
+# page but that would make the test moot because a failure wouldn't be seen.
+# A real way to fix this would be to be able to style the caret or to implement
+# ::value (bug 648643), depending of the ::value behaviour (it could change the
+# caret colour and the text colour or just the text colour).
+
+== placeholder-simple.html placeholder-simple.html
+# needs-focus == placeholder-focus.html placeholder-focus.html
+needs-focus == placeholder-blur.html placeholder-blur.html
+== placeholder-value.html placeholder-value.html
+== placeholder-empty-string.html placeholder-empty-string.html
+== placeholder-add.html placeholder-add.html
+== placeholder-removal.html placeholder-removal.html
+== placeholder-value-set.html placeholder-value-set.html
+== placeholder-value-unset.html placeholder-value-unset.html
+== placeholder-value-reset.html placeholder-value-reset.html
+== placeholder-type-change-1.html placeholder-type-change-1.html
+== placeholder-type-change-2.html placeholder-type-change-2.html
+== css-display.html css-display.html
+# We can't check except by verifying that the output is different.
+# Same reasons as focus issues explained above.
+== css-opacity.html css-opacity.html
+== css-text-align.html css-text-align.html
diff --git a/layout/reftests/css-placeholder/input/reftest.list b/layout/reftests/css-placeholder/input/reftest.list
new file mode 100644
index 000000000..564859ceb
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/reftest.list
@@ -0,0 +1,28 @@
+# Tests using placeholder-focus-ref.html as a reference are disabled because
+# we can't change the caret colour nor disable it and we can't change the
+# text colour without changing the caret which means that the tested page has
+# a black caret with a grey text and the reference has a grey caret with grey
+# text. The only thing that is doable is to make the caret grey in the tested
+# page but that would make the test moot because a failure wouldn't be seen.
+# A real way to fix this would be to be able to style the caret or to implement
+# ::value (bug 648643), depending of the ::value behaviour (it could change the
+# caret colour and the text colour or just the text colour).
+
+== placeholder-simple.html placeholder-simple-ref.html
+# needs-focus == placeholder-focus.html placeholder-focus-ref.html
+needs-focus == placeholder-blur.html placeholder-simple-ref.html
+== placeholder-value.html placeholder-value-ref.html
+== placeholder-empty-string.html placeholder-empty-string-ref.html
+== placeholder-add.html placeholder-simple-ref.html
+== placeholder-removal.html input-ref.html
+== placeholder-value-set.html placeholder-value-ref.html
+== placeholder-value-unset.html placeholder-simple-ref.html
+== placeholder-value-reset.html placeholder-simple-ref.html
+== placeholder-type-change-1.html placeholder-simple-ref.html
+== placeholder-type-change-2.html placeholder-button-ref.html
+== placeholdershown.html placeholdershown-ref.html
+== css-display.html placeholder-simple-ref.html
+# We can't check except by verifying that the output is different.
+# Same reasons as focus issues explained above.
+!= css-opacity.html placeholder-simple-ref.html
+!= css-text-align.html placeholder-simple-ref.html
diff --git a/layout/reftests/css-placeholder/input/style-shown.css b/layout/reftests/css-placeholder/input/style-shown.css
new file mode 100644
index 000000000..d3e296f91
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/style-shown.css
@@ -0,0 +1,21 @@
+input::placeholder {
+ color: green;
+ opacity: 1.0;
+}
+
+input:placeholder-shown {
+ -moz-appearance: none;
+ color: -moz-FieldText;
+ background-color: red;
+}
+
+input:placeholder-shown.shown,
+input.shown-ref {
+ -moz-appearance: none;
+ color: green;
+ background-color: #c7c7c7;
+ font-style: italic;
+ border: 2px solid green;
+ height: 200px;
+ width: 200px;
+}
diff --git a/layout/reftests/css-placeholder/input/style.css b/layout/reftests/css-placeholder/input/style.css
new file mode 100644
index 000000000..8963a6e17
--- /dev/null
+++ b/layout/reftests/css-placeholder/input/style.css
@@ -0,0 +1,6 @@
+[placeholder="bar"]::-moz-placeholder,
+[placeholder="foo"]::placeholder,
+input.ref {
+ color: green;
+ opacity: 1.0;
+}
diff --git a/layout/reftests/css-placeholder/reftest-stylo.list b/layout/reftests/css-placeholder/reftest-stylo.list
new file mode 100644
index 000000000..7d78a46b9
--- /dev/null
+++ b/layout/reftests/css-placeholder/reftest-stylo.list
@@ -0,0 +1,8 @@
+# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
+include input/reftest-stylo.list
+include textarea/reftest-stylo.list
+
+fails fuzzy-if(skiaContent,1,4) == css-restrictions.html css-restrictions.html
+== css-simple-styling.html css-simple-styling.html
+== css-background.html css-background.html
+fails fuzzy-if(skiaContent,1,180) == ignore-pseudo-class.html ignore-pseudo-class.html
diff --git a/layout/reftests/css-placeholder/reftest.list b/layout/reftests/css-placeholder/reftest.list
new file mode 100644
index 000000000..b11514406
--- /dev/null
+++ b/layout/reftests/css-placeholder/reftest.list
@@ -0,0 +1,7 @@
+include input/reftest.list
+include textarea/reftest.list
+
+fuzzy-if(skiaContent,1,4) == css-restrictions.html css-restrictions-ref.html
+== css-simple-styling.html css-simple-styling-ref.html
+!= css-background.html css-background-ref.html
+fuzzy-if(skiaContent,1,180) == ignore-pseudo-class.html ignore-pseudo-class-ref.html
diff --git a/layout/reftests/css-placeholder/textarea/css-display.html b/layout/reftests/css-placeholder/textarea/css-display.html
new file mode 100644
index 000000000..717bfab7c
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/css-display.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <style>
+ textarea::-moz-placeholder,
+ textarea::placeholder {
+ display: inline;
+ }
+ </style>
+ <body>
+ <textarea placeholder='foo'></textarea>
+ <textarea placeholder='bar'></textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/textarea/css-opacity.html b/layout/reftests/css-placeholder/textarea/css-opacity.html
new file mode 100644
index 000000000..832f504ec
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/css-opacity.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <style>
+ textarea::-moz-placeholder,
+ textarea::placeholder {
+ opacity: 0.1;
+ }
+ </style>
+ <body>
+ <textarea placeholder='foo'></textarea>
+ <textarea placeholder='bar'></textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/textarea/css-resize-ref.html b/layout/reftests/css-placeholder/textarea/css-resize-ref.html
new file mode 100644
index 000000000..c6e2e5b09
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/css-resize-ref.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <style>
+ textarea {
+ resize: none;
+ }
+ </style>
+ <body>
+ <textarea class='ref'>foo</textarea>
+ <textarea class='ref'>bar</textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/textarea/css-resize.html b/layout/reftests/css-placeholder/textarea/css-resize.html
new file mode 100644
index 000000000..81ea278b5
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/css-resize.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+ <!--
+ resize shouldn't be allowed on the ::placeholder.
+ -->
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <style>
+ textarea {
+ resize: none;
+ }
+ textarea::-moz-placeholder,
+ textarea::placeholder {
+ resize: both;
+ }
+ </style>
+ <body>
+ <textarea placeholder='foo'></textarea>
+ <textarea placeholder='bar'></textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/textarea/placeholder-add.html b/layout/reftests/css-placeholder/textarea/placeholder-add.html
new file mode 100644
index 000000000..9807f3d70
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/placeholder-add.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <script>
+ function loadHandler()
+ {
+ document.getElementById('t').placeholder='foo';
+ document.getElementById('moz').placeholder='bar';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='loadHandler();'>
+ <textarea id='t'></textarea>
+ <textarea id='moz'></textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/textarea/placeholder-blur.html b/layout/reftests/css-placeholder/textarea/placeholder-blur.html
new file mode 100644
index 000000000..a1b7ebace
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/placeholder-blur.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <script>
+ function loadHandler()
+ {
+ document.getElementById('t').focus();
+ }
+ function focusHandler()
+ {
+ document.getElementById('t').blur();
+ }
+ function blurHandler()
+ {
+ document.getElementById('moz').focus();
+ }
+ function focusHandlerMoz()
+ {
+ document.getElementById('moz').blur();
+ }
+ function blurHandlerMoz()
+ {
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='loadHandler();'>
+ <textarea id='t' placeholder='foo' onfocus='focusHandler();' onblur='blurHandler();'></textarea>
+ <textarea id='moz' placeholder='bar' onfocus='focusHandlerMoz();' onblur='blurHandlerMoz();'></textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/textarea/placeholder-empty-string-ref.html b/layout/reftests/css-placeholder/textarea/placeholder-empty-string-ref.html
new file mode 100644
index 000000000..09928f0ad
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/placeholder-empty-string-ref.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <body>
+ <textarea class='ref'></textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/textarea/placeholder-empty-string.html b/layout/reftests/css-placeholder/textarea/placeholder-empty-string.html
new file mode 100644
index 000000000..87f27256c
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/placeholder-empty-string.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <body>
+ <textarea placeholder=''></textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/textarea/placeholder-focus-ref.html b/layout/reftests/css-placeholder/textarea/placeholder-focus-ref.html
new file mode 100644
index 000000000..69318b626
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/placeholder-focus-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <script>
+ function loadHandler()
+ {
+ document.getElementById('t').focus();
+ }
+ function focusHandler()
+ {
+ document.getElementById('moz').focus();
+ }
+ function focusHandlerMoz()
+ {
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='loadHandler();'>
+ <textarea id='t' class='ref' onfocus='focusHandler();'>foo</textarea>
+ <textarea id='moz' class='ref' onfocus='focusHandlerMoz();'>bar</textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/textarea/placeholder-focus.html b/layout/reftests/css-placeholder/textarea/placeholder-focus.html
new file mode 100644
index 000000000..a8c97293d
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/placeholder-focus.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <script>
+ function loadHandler()
+ {
+ document.getElementById('t').focus();
+ }
+ function focusHandler()
+ {
+ document.getElementById('moz').focus();
+ }
+ function focusHandlerMoz()
+ {
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='loadHandler();'>
+ <textarea id='t' placeholder='foo' onfocus='focusHandler();'></textarea>
+ <textarea id='moz' placeholder='bar' onfocus='focusHandlerMoz();'></textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/textarea/placeholder-removal.html b/layout/reftests/css-placeholder/textarea/placeholder-removal.html
new file mode 100644
index 000000000..727b216a9
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/placeholder-removal.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <script>
+ function loadHandler()
+ {
+ document.getElementById('t').removeAttribute('placeholder');
+ document.getElementById('moz').removeAttribute('placeholder');
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='loadHandler();'>
+ <textarea id='t' placeholder='foo'></textarea>
+ <textarea id='moz' placeholder='bar'></textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/textarea/placeholder-simple-ref.html b/layout/reftests/css-placeholder/textarea/placeholder-simple-ref.html
new file mode 100644
index 000000000..c012cc411
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/placeholder-simple-ref.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <body>
+ <textarea class='ref'>foo</textarea>
+ <textarea class='ref'>bar</textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/textarea/placeholder-simple.html b/layout/reftests/css-placeholder/textarea/placeholder-simple.html
new file mode 100644
index 000000000..5a9d3eb6f
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/placeholder-simple.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <body>
+ <textarea placeholder='foo'></textarea>
+ <textarea placeholder='bar'></textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/textarea/placeholder-value-ref.html b/layout/reftests/css-placeholder/textarea/placeholder-value-ref.html
new file mode 100644
index 000000000..f8023e1c9
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/placeholder-value-ref.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <textarea>bar</textarea>
+ <textarea>foo</textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/textarea/placeholder-value-reset.html b/layout/reftests/css-placeholder/textarea/placeholder-value-reset.html
new file mode 100644
index 000000000..92fc7d79b
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/placeholder-value-reset.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <script>
+ function loadHandler()
+ {
+ document.getElementById('t').value = 'bar';
+ document.getElementById('moz').value = 'foo';
+ document.forms[0].reset();
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='loadHandler();'>
+ <form>
+ <textarea id='t' placeholder='foo'></textarea>
+ <textarea id='moz' placeholder='bar'></textarea>
+ </form>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/textarea/placeholder-value-set.html b/layout/reftests/css-placeholder/textarea/placeholder-value-set.html
new file mode 100644
index 000000000..30c3c26a4
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/placeholder-value-set.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <script>
+ function loadHandler()
+ {
+ document.getElementById('t').value = 'bar';
+ document.getElementById('moz').value = 'foo';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='loadHandler();'>
+ <textarea id='t' placeholder='foo'></textarea>
+ <textarea id='moz' placeholder='bar'></textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/textarea/placeholder-value-unset.html b/layout/reftests/css-placeholder/textarea/placeholder-value-unset.html
new file mode 100644
index 000000000..aacea6a20
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/placeholder-value-unset.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html class='reftest-wait'>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <script>
+ function loadHandler()
+ {
+ document.getElementById('t').value = '';
+ document.getElementById('moz').value = '';
+ document.documentElement.className = '';
+ }
+ </script>
+ <body onload='loadHandler();'>
+ <textarea id='t' placeholder='foo'>bar</textarea>
+ <textarea id='moz' placeholder='bar'>foo</textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/textarea/placeholder-value.html b/layout/reftests/css-placeholder/textarea/placeholder-value.html
new file mode 100644
index 000000000..a17bfa8f3
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/placeholder-value.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+ <link rel='stylesheet' type='text/css' href='style.css'>
+ <body>
+ <textarea placeholder='foo'>bar</textarea>
+ <textarea placeholder='bar'>foo</textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/textarea/placeholdershown-ref.html b/layout/reftests/css-placeholder/textarea/placeholdershown-ref.html
new file mode 100644
index 000000000..caa109411
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/placeholdershown-ref.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+ <link rel='stylesheet' type='text/css' href='style-shown.css'>
+ <body>
+ <textarea class='shown-ref'>foo</textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/textarea/placeholdershown.html b/layout/reftests/css-placeholder/textarea/placeholdershown.html
new file mode 100644
index 000000000..781ca2165
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/placeholdershown.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+ <link rel='stylesheet' type='text/css' href='style-shown.css'>
+ <body>
+ <textarea class='shown' placeholder='foo'></textarea>
+ </body>
+</html>
diff --git a/layout/reftests/css-placeholder/textarea/reftest-stylo.list b/layout/reftests/css-placeholder/textarea/reftest-stylo.list
new file mode 100644
index 000000000..dd0812aec
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/reftest-stylo.list
@@ -0,0 +1,26 @@
+# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
+# Tests using placeholder-focus-ref.html as a reference are disabled because
+# we can't change the caret colour nor disable it and we can't change the
+# text colour without changing the caret which means that the tested page has
+# a black caret with a grey text and the reference has a grey caret with grey
+# text. The only thing that is doable is to make the caret grey in the tested
+# page but that would make the test moot because a failure wouldn't be seen.
+# A real way to fix this would be to be able to style the caret or to implement
+# ::value (bug 648643), depending of the ::value behaviour (it could change the
+# caret colour and the text colour or just the text colour).
+
+== placeholder-simple.html placeholder-simple.html
+# needs-focus == placeholder-focus.html placeholder-focus.html
+needs-focus == placeholder-blur.html placeholder-blur.html
+== placeholder-value.html placeholder-value.html
+== placeholder-empty-string.html placeholder-empty-string.html
+== placeholder-add.html placeholder-add.html
+== placeholder-removal.html placeholder-removal.html
+== placeholder-value-set.html placeholder-value-set.html
+== placeholder-value-unset.html placeholder-value-unset.html
+== placeholder-value-reset.html placeholder-value-reset.html
+== css-resize.html css-resize.html
+== css-display.html css-display.html
+# We can't check except by verifying that the output is different.
+# Same reasons as focus issues explained above.
+== css-opacity.html css-opacity.html
diff --git a/layout/reftests/css-placeholder/textarea/reftest.list b/layout/reftests/css-placeholder/textarea/reftest.list
new file mode 100644
index 000000000..a24dddf1f
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/reftest.list
@@ -0,0 +1,26 @@
+# Tests using placeholder-focus-ref.html as a reference are disabled because
+# we can't change the caret colour nor disable it and we can't change the
+# text colour without changing the caret which means that the tested page has
+# a black caret with a grey text and the reference has a grey caret with grey
+# text. The only thing that is doable is to make the caret grey in the tested
+# page but that would make the test moot because a failure wouldn't be seen.
+# A real way to fix this would be to be able to style the caret or to implement
+# ::value (bug 648643), depending of the ::value behaviour (it could change the
+# caret colour and the text colour or just the text colour).
+
+== placeholder-simple.html placeholder-simple-ref.html
+# needs-focus == placeholder-focus.html placeholder-focus-ref.html
+needs-focus == placeholder-blur.html placeholder-simple-ref.html
+== placeholder-value.html placeholder-value-ref.html
+== placeholder-empty-string.html placeholder-empty-string-ref.html
+== placeholder-add.html placeholder-simple-ref.html
+== placeholder-removal.html textarea-ref.html
+== placeholder-value-set.html placeholder-value-ref.html
+== placeholder-value-unset.html placeholder-simple-ref.html
+== placeholder-value-reset.html placeholder-simple-ref.html
+== placeholdershown.html placeholdershown-ref.html
+== css-resize.html css-resize-ref.html
+== css-display.html placeholder-simple-ref.html
+# We can't check except by verifying that the output is different.
+# Same reasons as focus issues explained above.
+!= css-opacity.html placeholder-simple-ref.html
diff --git a/layout/reftests/css-placeholder/textarea/style-shown.css b/layout/reftests/css-placeholder/textarea/style-shown.css
new file mode 100644
index 000000000..58caece40
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/style-shown.css
@@ -0,0 +1,22 @@
+textarea::placeholder {
+ color: green;
+ opacity: 1.0;
+}
+
+textarea:placeholder-shown {
+ -moz-appearance: none;
+ color: -moz-FieldText;
+ background-color: red;
+}
+
+textarea:placeholder-shown.shown,
+textarea.shown-ref {
+ -moz-appearance: none;
+ color: green;
+ background-color: #c7c7c7;
+ font-style: italic;
+ border: 2px solid green;
+ height: 200px;
+ width: 200px;
+}
+
diff --git a/layout/reftests/css-placeholder/textarea/style.css b/layout/reftests/css-placeholder/textarea/style.css
new file mode 100644
index 000000000..6d7893318
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/style.css
@@ -0,0 +1,6 @@
+textarea::-moz-placeholder,
+textarea::placeholder,
+textarea.ref {
+ color: green;
+ opacity: 1.0;
+}
diff --git a/layout/reftests/css-placeholder/textarea/textarea-ref.html b/layout/reftests/css-placeholder/textarea/textarea-ref.html
new file mode 100644
index 000000000..79f410593
--- /dev/null
+++ b/layout/reftests/css-placeholder/textarea/textarea-ref.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <textarea></textarea>
+ <textarea></textarea>
+ </body>
+</html>