| Index: LayoutTests/fast/selectors/placeholder-shown-style-update.html
|
| diff --git a/LayoutTests/fast/selectors/placeholder-shown-style-update.html b/LayoutTests/fast/selectors/placeholder-shown-style-update.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9284c32f06e804b746d5f83c168ff7768426833e
|
| --- /dev/null
|
| +++ b/LayoutTests/fast/selectors/placeholder-shown-style-update.html
|
| @@ -0,0 +1,90 @@
|
| +<!doctype html>
|
| +<script src="../../resources/js-test.js"></script>
|
| +<style>
|
| +input, textarea {
|
| + background-color: white;
|
| +}
|
| +:placeholder-shown {
|
| + background-color: rgb(1, 2, 3);
|
| +}
|
| +</style>
|
| +<div>
|
| + <input id="input-with-renderer">
|
| + <textarea id="textarea-with-renderer"></textarea>
|
| +</div>
|
| +<div style="display:none;">
|
| + <input id="input-without-renderer">
|
| + <textarea id="textarea-without-renderer"></textarea>
|
| +</div>
|
| +<script>
|
| +description('Test style update of the :placeholder-shown pseudo class.');
|
| +var inputCaseWithRenderer = document.getElementById("input-with-renderer");
|
| +var textareaCaseWithRenderer = document.getElementById("textarea-with-renderer");
|
| +var inputCaseWithoutRenderer = document.getElementById("input-without-renderer");
|
| +var textareaCaseWithoutRenderer = document.getElementById("textarea-without-renderer");
|
| +function testBackgroundColor(expectMatch) {
|
| + shouldBeEqualToString('getComputedStyle(document.getElementById("input-with-renderer")).backgroundColor', expectMatch ? 'rgb(1, 2, 3)' : 'rgb(255, 255, 255)');
|
| + shouldBeEqualToString('getComputedStyle(document.getElementById("textarea-with-renderer")).backgroundColor', expectMatch ? 'rgb(1, 2, 3)' : 'rgb(255, 255, 255)');
|
| + shouldBeEqualToString('getComputedStyle(document.getElementById("input-without-renderer")).backgroundColor', expectMatch ? 'rgb(1, 2, 3)' : 'rgb(255, 255, 255)');
|
| + shouldBeEqualToString('getComputedStyle(document.getElementById("textarea-without-renderer")).backgroundColor', expectMatch ? 'rgb(1, 2, 3)' : 'rgb(255, 255, 255)');
|
| +}
|
| +function setAttribute(attribute, value) {
|
| + inputCaseWithRenderer.setAttribute(attribute, value);
|
| + textareaCaseWithRenderer.setAttribute(attribute, value);
|
| + inputCaseWithoutRenderer.setAttribute(attribute, value);
|
| + textareaCaseWithoutRenderer.setAttribute(attribute, value);
|
| +}
|
| +debug("Initial state is without placehoder.");
|
| +testBackgroundColor(false);
|
| +debug("Adding a placeholder matches.");
|
| +setAttribute("placeholder", "WebKit!");
|
| +testBackgroundColor(true);
|
| +debug("Adding a placehoder and an empty value. An empty value does not prevent matching.");
|
| +setAttribute("placeholder", "WebKit!");
|
| +inputCaseWithRenderer.value = "";
|
| +textareaCaseWithRenderer.appendChild(document.createTextNode(""));
|
| +inputCaseWithoutRenderer.value = "";
|
| +textareaCaseWithoutRenderer.appendChild(document.createTextNode(""));
|
| +testBackgroundColor(true);
|
| +debug("Changing the type of the input to something that does not support placeholder. The input element should not match.");
|
| +inputCaseWithRenderer.type = "button";
|
| +inputCaseWithoutRenderer.type = "button";
|
| +shouldBeEqualToString('getComputedStyle(document.getElementById("input-with-renderer")).backgroundColor', 'rgb(255, 255, 255)');
|
| +shouldBeEqualToString('getComputedStyle(document.getElementById("textarea-with-renderer")).backgroundColor', 'rgb(1, 2, 3)');
|
| +shouldBeEqualToString('getComputedStyle(document.getElementById("input-without-renderer")).backgroundColor', 'rgb(255, 255, 255)');
|
| +shouldBeEqualToString('getComputedStyle(document.getElementById("textarea-without-renderer")).backgroundColor', 'rgb(1, 2, 3)');
|
| +debug("Changing the type of the input to text should add the style back.");
|
| +inputCaseWithRenderer.type = "text";
|
| +inputCaseWithoutRenderer.type = "text";
|
| +testBackgroundColor(true);
|
| +debug("Adding a non empty value should remove the style.");
|
| +inputCaseWithRenderer.value = "Foobar";
|
| +textareaCaseWithRenderer.appendChild(document.createTextNode("Foobar"));
|
| +inputCaseWithoutRenderer.value = "Foobar";
|
| +textareaCaseWithoutRenderer.appendChild(document.createTextNode("Foobar"));
|
| +testBackgroundColor(false);
|
| +debug("Removing the placeholder, we should not match.");
|
| +setAttribute("placeholder", "");
|
| +testBackgroundColor(false);
|
| +debug("Removing the value. We should still not match since the placeholder attribute was removed.");
|
| +inputCaseWithRenderer.value = "";
|
| +textareaCaseWithRenderer.removeChild(textareaCaseWithRenderer.lastChild);
|
| +inputCaseWithoutRenderer.value = "";
|
| +textareaCaseWithoutRenderer.removeChild(textareaCaseWithoutRenderer.lastChild);
|
| +testBackgroundColor(false);
|
| +debug("Putting back a value, no reason to match.");
|
| +inputCaseWithRenderer.value = "Foobar";
|
| +textareaCaseWithRenderer.appendChild(document.createTextNode("Foobar"));
|
| +inputCaseWithoutRenderer.value = "Foobar";
|
| +textareaCaseWithoutRenderer.appendChild(document.createTextNode("Foobar"));
|
| +testBackgroundColor(false);
|
| +debug("Adding back the placeholder, the value is still there so we cannot match yet.");
|
| +setAttribute("placeholder", "WebKit!");
|
| +testBackgroundColor(false);
|
| +debug("Removing the value. A placeholder was added while the value was up, we should get the style now.");
|
| +inputCaseWithRenderer.value = "";
|
| +textareaCaseWithRenderer.removeChild(textareaCaseWithRenderer.lastChild);
|
| +inputCaseWithoutRenderer.value = "";
|
| +textareaCaseWithoutRenderer.removeChild(textareaCaseWithoutRenderer.lastChild);
|
| +testBackgroundColor(true);
|
| +</script>
|
|
|