Bug 1069012 - Unprefix ::placeholder pseudo-element. r=bz

This commit is contained in:
Thomas Wisniewski 2016-09-07 19:38:38 -04:00
Родитель d4bbac96b5
Коммит 2b28c5e2a9
72 изменённых файлов: 177 добавлений и 69 удалений

Просмотреть файл

@ -406,7 +406,7 @@
padding: 3px 2px 1px;
text-transform: none;
}
.pkt_ext_containersaved .pkt_ext_tag_input_wrapper input::-moz-placeholder {
.pkt_ext_containersaved .pkt_ext_tag_input_wrapper input::placeholder {
color: #a9a9a9;
letter-spacing: normal;
text-transform: none;

Просмотреть файл

@ -2330,7 +2330,7 @@ html|span.ac-emphasize-text-url {
}
}
#editBMPanel_tagsField > .autocomplete-textbox-container > .textbox-input-box > html|*.textbox-input::-moz-placeholder {
#editBMPanel_tagsField > .autocomplete-textbox-container > .textbox-input-box > html|*.textbox-input::placeholder {
opacity: 1.0;
color: #bbb;
}

Просмотреть файл

@ -1357,8 +1357,8 @@ toolbar[brighttext] #close-button {
-moz-box-direction: reverse;
}
html|*.urlbar-input:-moz-lwtheme::-moz-placeholder,
.searchbar-textbox:-moz-lwtheme > .autocomplete-textbox-container > .textbox-input-box > html|*.textbox-input::-moz-placeholder {
html|*.urlbar-input:-moz-lwtheme::placeholder,
.searchbar-textbox:-moz-lwtheme > .autocomplete-textbox-container > .textbox-input-box > html|*.textbox-input::placeholder {
opacity: 1.0;
color: #777;
}

Просмотреть файл

@ -1854,7 +1854,7 @@ output {
border-color: #66afe9;
outline: 0;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); }
.form-control::-moz-placeholder {
.form-control::placeholder {
color: #999999;
opacity: 1; }
.form-control:-ms-input-placeholder {
@ -4510,4 +4510,4 @@ body {
.jumbotron {
border-bottom: 300; } }
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5jc3MiLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlcyI6WyJtYWluLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiJGljb24tZm9udC1wYXRoOiBcIi4uL2Jvd2VyX2NvbXBvbmVudHMvYm9vdHN0cmFwLXNhc3Mtb2ZmaWNpYWwvdmVuZG9yL2Fzc2V0cy9mb250cy9ib290c3RyYXAvXCI7XG5cbi8vIGJvd2VyOnNjc3NcbkBpbXBvcnQgXCIuLi9ib3dlcl9jb21wb25lbnRzL2Jvb3RzdHJhcC1zYXNzLW9mZmljaWFsL3ZlbmRvci9hc3NldHMvc3R5bGVzaGVldHMvYm9vdHN0cmFwLnNjc3NcIjtcbi8vIGVuZGJvd2VyXG5cbi5icm93c2VoYXBweSB7XG4gICAgbWFyZ2luOiAwLjJlbSAwO1xuICAgIGJhY2tncm91bmQ6ICNjY2M7XG4gICAgY29sb3I6ICMwMDA7XG4gICAgcGFkZGluZzogMC4yZW0gMDtcbn1cblxuLyogU3BhY2Ugb3V0IGNvbnRlbnQgYSBiaXQgKi9cbmJvZHkge1xuICAgIHBhZGRpbmctdG9wOiAyMHB4O1xuICAgIHBhZGRpbmctYm90dG9tOiAyMHB4O1xufVxuXG4vKiBFdmVyeXRoaW5nIGJ1dCB0aGUganVtYm90cm9uIGdldHMgc2lkZSBzcGFjaW5nIGZvciBtb2JpbGUgZmlyc3Qgdmlld3MgKi9cbi5oZWFkZXIsXG4ubWFya2V0aW5nLFxuLmZvb3RlciB7XG4gICAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7XG59XG5cbi8qIEN1c3RvbSBwYWdlIGhlYWRlciAqL1xuLmhlYWRlciB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU1ZTU7XG5cbiAgICAvKiBNYWtlIHRoZSBtYXN0aGVhZCBoZWFkaW5nIHRoZSBzYW1lIGhlaWdodCBhcyB0aGUgbmF2aWdhdGlvbiAqL1xuICAgIGgzIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAxOXB4O1xuICAgIH1cbn1cblxuLyogQ3VzdG9tIHBhZ2UgZm9vdGVyICovXG4uZm9vdGVyIHtcbiAgICBwYWRkaW5nLXRvcDogMTlweDtcbiAgICBjb2xvcjogIzc3NztcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U1ZTVlNTtcbn1cblxuLmNvbnRhaW5lci1uYXJyb3cgPiBociB7XG4gICAgbWFyZ2luOiAzMHB4IDA7XG59XG5cbi8qIE1haW4gbWFya2V0aW5nIG1lc3NhZ2UgYW5kIHNpZ24gdXAgYnV0dG9uICovXG4uanVtYm90cm9uIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU1ZTU7XG4gICAgLmJ0biB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjFweDtcbiAgICAgICAgcGFkZGluZzogMTRweCAyNHB4O1xuICAgIH1cbn1cblxuLyogU3VwcG9ydGluZyBtYXJrZXRpbmcgY29udGVudCAqL1xuLm1hcmtldGluZyB7XG4gICAgbWFyZ2luOiA0MHB4IDA7XG4gICAgcCArIGg0IHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjhweDtcbiAgICB9XG59XG5cbi8qIFJlc3BvbnNpdmU6IFBvcnRyYWl0IHRhYmxldHMgYW5kIHVwICovXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIC5jb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDczMHB4O1xuICAgIH1cblxuICAgIC8qIFJlbW92ZSB0aGUgcGFkZGluZyB3ZSBzZXQgZWFybGllciAqL1xuICAgIC5oZWFkZXIsXG4gICAgLm1hcmtldGluZyxcbiAgICAuZm9vdGVyIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIH1cblxuICAgIC8qIFNwYWNlIG91dCB0aGUgbWFzdGhlYWQgKi9cbiAgICAuaGVhZGVyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgICB9XG5cbiAgICAvKiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgb24gdGhlIGp1bWJvdHJvbiBmb3IgdmlzdWFsIGVmZmVjdCAqL1xuICAgIC5qdW1ib3Ryb24ge1xuICAgICAgICBib3JkZXItYm90dG9tOiAzMDA7XG4gICAgfVxufVxuXG4vLyB0aGlzIGlzIGEgY29tbWVudC4uLlxuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 */
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5jc3MiLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlcyI6WyJtYWluLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiJGljb24tZm9udC1wYXRoOiBcIi4uL2Jvd2VyX2NvbXBvbmVudHMvYm9vdHN0cmFwLXNhc3Mtb2ZmaWNpYWwvdmVuZG9yL2Fzc2V0cy9mb250cy9ib290c3RyYXAvXCI7XG5cbi8vIGJvd2VyOnNjc3NcbkBpbXBvcnQgXCIuLi9ib3dlcl9jb21wb25lbnRzL2Jvb3RzdHJhcC1zYXNzLW9mZmljaWFsL3ZlbmRvci9hc3NldHMvc3R5bGVzaGVldHMvYm9vdHN0cmFwLnNjc3NcIjtcbi8vIGVuZGJvd2VyXG5cbi5icm93c2VoYXBweSB7XG4gICAgbWFyZ2luOiAwLjJlbSAwO1xuICAgIGJhY2tncm91bmQ6ICNjY2M7XG4gICAgY29sb3I6ICMwMDA7XG4gICAgcGFkZGluZzogMC4yZW0gMDtcbn1cblxuLyogU3BhY2Ugb3V0IGNvbnRlbnQgYSBiaXQgKi9cbmJvZHkge1xuICAgIHBhZGRpbmctdG9wOiAyMHB4O1xuICAgIHBhZGRpbmctYm90dG9tOiAyMHB4O1xufVxuXG4vKiBFdmVyeXRoaW5nIGJ1dCB0aGUganVtYm90cm9uIGdldHMgc2lkZSBzcGFjaW5nIGZvciBtb2JpbGUgZmlyc3Qgdmlld3MgKi9cbi5oZWFkZXIsXG4ubWFya2V0aW5nLFxuLmZvb3RlciB7XG4gICAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7XG59XG5cbi8qIEN1c3RvbSBwYWdlIGhlYWRlciAqL1xuLmhlYWRlciB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU1ZTU7XG5cbiAgICAvKiBNYWtlIHRoZSBtYXN0aGVhZCBoZWFkaW5nIHRoZSBzYW1lIGhlaWdodCBhcyB0aGUgbmF2aWdhdGlvbiAqL1xuICAgIGgzIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAxOXB4O1xuICAgIH1cbn1cblxuLyogQ3VzdG9tIHBhZ2UgZm9vdGVyICovXG4uZm9vdGVyIHtcbiAgICBwYWRkaW5nLXRvcDogMTlweDtcbiAgICBjb2xvcjogIzc3NztcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U1ZTVlNTtcbn1cblxuLmNvbnRhaW5lci1uYXJyb3cgPiBociB7XG4gICAgbWFyZ2luOiAzMHB4IDA7XG59XG5cbi8qIE1haW4gbWFya2V0aW5nIG1lc3NhZ2UgYW5kIHNpZ24gdXAgYnV0dG9uICovXG4uanVtYm90cm9uIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU1ZTU7XG4gICAgLmJ0biB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjFweDtcbiAgICAgICAgcGFkZGluZzogMTRweCAyNHB4O1xuICAgIH1cbn1cblxuLyogU3VwcG9ydGluZyBtYXJrZXRpbmcgY29udGVudCAqL1xuLm1hcmtldGluZyB7XG4gICAgbWFyZ2luOiA0MHB4IDA7XG4gICAgcCArIGg0IHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjhweDtcbiAgICB9XG59XG5cbi8qIFJlc3BvbnNpdmU6IFBvcnRyYWl0IHRhYmxldHMgYW5kIHVwICovXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIC5jb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDczMHB4O1xuICAgIH1cblxuICAgIC8qIFJlbW92ZSB0aGUgcGFkZGluZyB3ZSBzZXQgZWFybGllciAqL1xuICAgIC5oZWFkZXIsXG4gICAgLm1hcmtldGluZyxcbiAgICAuZm9vdGVyIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIH1cblxuICAgIC8qIFNwYWNlIG91dCB0aGUgbWFzdGhlYWQgKi9cbiAgICAuaGVhZGVyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgICB9XG5cbiAgICAvKiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgb24gdGhlIGp1bWJvdHJvbiBmb3IgdmlzdWFsIGVmZmVjdCAqL1xuICAgIC5qdW1ib3Ryb24ge1xuICAgICAgICBib3JkZXItYm90dG9tOiAzMDA7XG4gICAgfVxufVxuXG4vLyB0aGlzIGlzIGEgY29tbWVudC4uLlxuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 */

Просмотреть файл

@ -547,8 +547,8 @@ checkbox:-moz-focusring {
visibility: hidden;
}
.devtools-searchinput .textbox-input::-moz-placeholder,
.devtools-filterinput .textbox-input::-moz-placeholder {
.devtools-searchinput .textbox-input::placeholder,
.devtools-filterinput .textbox-input::placeholder {
font-style: normal;
}

Просмотреть файл

@ -63,7 +63,7 @@ console.log("The PSEUDO_ELEMENTS have been copied to your clipboard.")
*/
/*eslint-disable */
exports.PSEUDO_ELEMENTS = [":after",":before",":backdrop",":first-letter",":first-line",":-moz-selection",":-moz-focus-inner",":-moz-focus-outer",":-moz-list-bullet",":-moz-list-number",":-moz-math-anonymous",":-moz-progress-bar",":-moz-range-track",":-moz-range-progress",":-moz-range-thumb",":-moz-meter-bar",":-moz-placeholder",":-moz-color-swatch"];
exports.PSEUDO_ELEMENTS = [":after",":before",":backdrop",":first-letter",":first-line",":-moz-selection",":-moz-focus-inner",":-moz-focus-outer",":-moz-list-bullet",":-moz-list-number",":-moz-math-anonymous",":-moz-progress-bar",":-moz-range-track",":-moz-range-progress",":-moz-range-thumb",":-moz-meter-bar",":-moz-placeholder",":placeholder",":-moz-color-swatch"];
/*eslint-enable */
/**

Просмотреть файл

@ -2,7 +2,7 @@
@namespace html url('http://www.w3.org/1999/xhtml');
/* We need to have a non-transparent placeholder so we can test it. */
html|input::-moz-placeholder {
html|input::placeholder {
opacity: 1.0;
color: graytext;
}
}

Просмотреть файл

@ -350,8 +350,8 @@ nsTextControlFrame::CreateAnonymousContent(nsTArray<ContentInfo>& aElements)
nsIContent* placeholderNode = txtCtrl->CreatePlaceholderNode();
NS_ENSURE_TRUE(placeholderNode, NS_ERROR_OUT_OF_MEMORY);
// Associate ::-moz-placeholder pseudo-element with the placeholder node.
CSSPseudoElementType pseudoType = CSSPseudoElementType::mozPlaceholder;
// Associate ::placeholder pseudo-element with the placeholder node.
CSSPseudoElementType pseudoType = CSSPseudoElementType::placeholder;
// If this is a text input inside a number input then we want to use the
// main number input as the source of style for the placeholder frame.
@ -1464,7 +1464,7 @@ nsTextControlFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
mozilla::dom::Element*
nsTextControlFrame::GetPseudoElement(CSSPseudoElementType aType)
{
if (aType == CSSPseudoElementType::mozPlaceholder) {
if (aType == CSSPseudoElementType::placeholder) {
nsCOMPtr<nsITextControlElement> txtCtrl = do_QueryInterface(GetContent());
return txtCtrl->GetPlaceholderNode();
}

Просмотреть файл

@ -15,6 +15,7 @@
":backdrop",
":first-letter",
":first-line",
":placeholder",
":-moz-color-swatch",
":-moz-focus-inner",
":-moz-focus-outer",

Просмотреть файл

@ -1,16 +1,16 @@
<!DOCTYPE html>
<html>
<!--
This test checks that setting a background on a ::-moz-placeholder works.
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::-moz-placeholder {
:-moz-any(input, textarea).color::placeholder {
background-color: blue;
}
:-moz-any(input, textarea).gradient::-moz-placeholder {
:-moz-any(input, textarea).gradient::placeholder {
background: linear-gradient(to right, blue, white, red);
}
</style>

Просмотреть файл

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html>
<style>
:-moz-any(input, textarea)::-moz-placeholder {
:-moz-any(input, textarea)::placeholder {
visibility: hidden;
padding: 20px;
float: right;

Просмотреть файл

@ -13,5 +13,7 @@
<body>
<input value='foo bar'>
<textarea>foo bar</textarea>
<input value='bar foo'>
<textarea>bar foo</textarea>
</body>
</html>

Просмотреть файл

@ -2,7 +2,7 @@
<html>
<!--
This test checks that a few allowed CSS properties have an effect when
applied to ::-moz-placeholder.
applied to ::placeholder or ::-moz-placeholder.
-->
<style>
/*
@ -15,7 +15,8 @@
font-style: italic;
}
:-moz-any(input, textarea)::-moz-placeholder {
[placeholder="foo bar"]::placeholder,
[placeholder="bar foo"]::-moz-placeholder {
opacity: 1.0;
font: -moz-list;
font-family: mono;
@ -28,5 +29,7 @@
<body>
<input placeholder='foo bar'>
<textarea placeholder='foo bar'></textarea>
<input placeholder='bar foo'>
<textarea placeholder='bar foo'></textarea>
</body>
</html>

Просмотреть файл

@ -4,6 +4,9 @@
:-moz-placeholder {
color: red;
}
:placeholder {
color: red;
}
</style>
<body>
<input placeholder='foobar'>

Просмотреть файл

@ -2,11 +2,13 @@
<html>
<link rel='stylesheet' type='text/css' href='style.css'>
<style>
input::-moz-placeholder {
[bar]::-moz-placeholder,
[foo]::placeholder {
display: inline;
}
</style>
<body>
<input placeholder='foo'>
<input placeholder='bar'>
</body>
</html>

Просмотреть файл

@ -2,11 +2,13 @@
<html>
<link rel='stylesheet' type='text/css' href='style.css'>
<style>
input::-moz-placeholder {
[placeholder="bar"]::-moz-placeholder,
[placeholder="foo"]::placeholder {
opacity: 0.1;
}
</style>
<body>
<input placeholder='foo'>
<input placeholder='bar'>
</body>
</html>

Просмотреть файл

@ -2,11 +2,13 @@
<html>
<link rel='stylesheet' type='text/css' href='style.css'>
<style>
input::-moz-placeholder {
[placeholder="bar"]::-moz-placeholder,
[placeholder="foo"]::placeholder {
text-align: center;
}
</style>
<body>
<input placeholder='foo'>
<input placeholder='bar'>
</body>
</html>

Просмотреть файл

@ -2,5 +2,6 @@
<html>
<body>
<input>
<input>
</body>
</html>

Просмотреть файл

@ -4,11 +4,13 @@
<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>

Просмотреть файл

@ -11,11 +11,20 @@
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>

Просмотреть файл

@ -3,6 +3,7 @@
<link rel='stylesheet' type='text/css' href='style.css'>
<body>
<input type='button'>
<input type='button'>
</body>
</html>

Просмотреть файл

@ -7,11 +7,16 @@
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>

Просмотреть файл

@ -7,11 +7,16 @@
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>

Просмотреть файл

@ -5,10 +5,12 @@
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>

Просмотреть файл

@ -3,5 +3,6 @@
<link rel='stylesheet' type='text/css' href='style.css'>
<body>
<input class='ref' value='foo'>
<input class='ref' value='bar'>
</body>
</html>

Просмотреть файл

@ -3,5 +3,6 @@
<link rel='stylesheet' type='text/css' href='style.css'>
<body>
<input placeholder='foo'>
<input placeholder='bar'>
</body>
</html>

Просмотреть файл

@ -5,10 +5,12 @@
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>

Просмотреть файл

@ -5,10 +5,12 @@
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>

Просмотреть файл

@ -2,5 +2,6 @@
<html>
<body>
<input value='bar'>
<input value='foo'>
</body>
</html>

Просмотреть файл

@ -5,6 +5,7 @@
function loadHandler()
{
document.getElementById('i').value = 'bar';
document.getElementById('moz').value = 'foo';
document.forms[0].reset();
document.documentElement.className = '';
}
@ -12,6 +13,7 @@
<body onload='loadHandler();'>
<form>
<input id='i' placeholder='foo'>
<input id='moz' placeholder='bar'>
</form>
</body>
</html>

Просмотреть файл

@ -5,10 +5,12 @@
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>

Просмотреть файл

@ -5,10 +5,12 @@
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>

Просмотреть файл

@ -3,5 +3,6 @@
<link rel='stylesheet' type='text/css' href='style.css'>
<body>
<input placeholder='foo' value='bar'>
<input placeholder='bar' value='foo'>
</body>
</html>

Просмотреть файл

@ -1,4 +1,4 @@
input::-moz-placeholder {
input::placeholder {
color: green;
opacity: 1.0;
}

Просмотреть файл

@ -1,4 +1,5 @@
input::-moz-placeholder,
[placeholder="bar"]::-moz-placeholder,
[placeholder="foo"]::placeholder,
input.ref {
color: green;
opacity: 1.0;

Просмотреть файл

@ -2,11 +2,13 @@
<html>
<link rel='stylesheet' type='text/css' href='style.css'>
<style>
textarea::-moz-placeholder {
textarea::-moz-placeholder,
textarea::placeholder {
display: inline;
}
</style>
<body>
<textarea placeholder='foo'></textarea>
<textarea placeholder='bar'></textarea>
</body>
</html>

Просмотреть файл

@ -2,11 +2,13 @@
<html>
<link rel='stylesheet' type='text/css' href='style.css'>
<style>
textarea::-moz-placeholder {
textarea::-moz-placeholder,
textarea::placeholder {
opacity: 0.1;
}
</style>
<body>
<textarea placeholder='foo'></textarea>
<textarea placeholder='bar'></textarea>
</body>
</html>

Просмотреть файл

@ -8,5 +8,6 @@
</style>
<body>
<textarea class='ref'>foo</textarea>
<textarea class='ref'>bar</textarea>
</body>
</html>

Просмотреть файл

@ -1,18 +1,20 @@
<!DOCTYPE html>
<html>
<!--
resize shouldn't be allowed on the ::-moz-placeholder.
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::-moz-placeholder,
textarea::placeholder {
resize: both;
}
</style>
<body>
<textarea placeholder='foo'></textarea>
<textarea placeholder='bar'></textarea>
</body>
</html>

Просмотреть файл

@ -5,10 +5,12 @@
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>

Просмотреть файл

@ -11,11 +11,20 @@
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>

Просмотреть файл

@ -7,11 +7,16 @@
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>

Просмотреть файл

@ -7,11 +7,16 @@
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>

Просмотреть файл

@ -5,10 +5,12 @@
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>

Просмотреть файл

@ -3,5 +3,6 @@
<link rel='stylesheet' type='text/css' href='style.css'>
<body>
<textarea class='ref'>foo</textarea>
<textarea class='ref'>bar</textarea>
</body>
</html>

Просмотреть файл

@ -3,5 +3,6 @@
<link rel='stylesheet' type='text/css' href='style.css'>
<body>
<textarea placeholder='foo'></textarea>
<textarea placeholder='bar'></textarea>
</body>
</html>

Просмотреть файл

@ -2,5 +2,6 @@
<html>
<body>
<textarea>bar</textarea>
<textarea>foo</textarea>
</body>
</html>

Просмотреть файл

@ -5,6 +5,7 @@
function loadHandler()
{
document.getElementById('t').value = 'bar';
document.getElementById('moz').value = 'foo';
document.forms[0].reset();
document.documentElement.className = '';
}
@ -12,6 +13,7 @@
<body onload='loadHandler();'>
<form>
<textarea id='t' placeholder='foo'></textarea>
<textarea id='moz' placeholder='bar'></textarea>
</form>
</body>
</html>

Просмотреть файл

@ -5,10 +5,12 @@
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>

Просмотреть файл

@ -5,10 +5,12 @@
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>

Просмотреть файл

@ -3,5 +3,6 @@
<link rel='stylesheet' type='text/css' href='style.css'>
<body>
<textarea placeholder='foo'>bar</textarea>
<textarea placeholder='bar'>foo</textarea>
</body>
</html>

Просмотреть файл

@ -1,4 +1,4 @@
textarea::-moz-placeholder {
textarea::placeholder {
color: green;
opacity: 1.0;
}

Просмотреть файл

@ -1,4 +1,5 @@
textarea::-moz-placeholder,
textarea::placeholder,
textarea.ref {
color: green;
opacity: 1.0;

Просмотреть файл

@ -2,5 +2,6 @@
<html>
<body>
<textarea></textarea>
<textarea></textarea>
</body>
</html>

Просмотреть файл

@ -5,15 +5,13 @@
input {
width: 15em;
}
input[type=text]::-moz-placeholder {
color: blue;
font-style: italic;
}
</style>
</head>
<body>
<input type="text" placeholder="placeholder">
<input type="number" value="123">
</body>
</html>

Просмотреть файл

@ -5,16 +5,20 @@
input {
width: 15em;
-moz-appearance: textfield;
}
input[type=number]::placeholder {
color: blue;
opacity: 1.0;
}
input[type=number]::-moz-placeholder {
color: blue;
font-style: italic;
opacity: 1.0;
}
</style>
</head>
<body>
<input type="number" placeholder="placeholder">
<input type="number" placeholder="123">
</body>
</html>

Просмотреть файл

@ -1,7 +1,7 @@
textarea.placeholder,
input.placeholder,
input::-moz-placeholder,
textarea::-moz-placeholder {
input::placeholder,
textarea::placeholder {
/* Unfortunately, we can't style the <input> or <textarea> text so we can't
set it to opacity: 0.54; which means we have to revert the style to
something that doesn't include an opacity. */

Просмотреть файл

@ -48,11 +48,11 @@ span {
.t4 {width:17.5em;}
input { font-family:DejaVuSansMono; }
input::-moz-placeholder {
input::placeholder {
overflow:hidden;
text-overflow:ellipsis;
}
input.t5::-moz-placeholder {
input.t5::placeholder {
text-overflow:"X";
}

Просмотреть файл

@ -1,9 +1,9 @@
<!DOCTYPE html>
<body>
<style>
::-moz-placeholder { color: red; }
::-moz-placeholder:focus { color: green; }
::placeholder { color: red; }
::placeholder:focus { color: green; }
</style>
<script>
window.getComputedStyle(document.body, "::-moz-placeholder").color;
window.getComputedStyle(document.body, "::placeholder").color;
</script>

Просмотреть файл

@ -5961,9 +5961,10 @@ CSSParserImpl::ParsePseudoSelector(int32_t& aDataMask,
return eSelectorParsingStatus_Error;
}
// We currently allow :-moz-placeholder and ::-moz-placeholder. We have to
// be a bit stricter regarding the pseudo-element parsing rules.
if (pseudoElementType == CSSPseudoElementType::mozPlaceholder &&
// We currently allow :-moz-placeholder and ::-moz-placeholder and
// ::placeholder. We have to be a bit stricter regarding the
// pseudo-element parsing rules.
if (pseudoElementType == CSSPseudoElementType::placeholder &&
pseudoClassType == CSSPseudoClassType::mozPlaceholder) {
if (parsingPseudoElement) {
pseudoClassType = CSSPseudoClassType::NotPseudo;

Просмотреть файл

@ -204,7 +204,7 @@ static_assert((CSS_PROPERTY_PARSE_PROPERTY_MASK &
// Is this property (which must be a shorthand) really an alias?
#define CSS_PROPERTY_IS_ALIAS (1<<17)
// Does the property apply to ::-moz-placeholder?
// Does the property apply to ::placeholder?
#define CSS_PROPERTY_APPLIES_TO_PLACEHOLDER (1<<18)
// This property is allowed in an @page rule.

Просмотреть файл

@ -80,6 +80,8 @@ CSS_PSEUDO_ELEMENT(mozMeterBar, ":-moz-meter-bar",
CSS_PSEUDO_ELEMENT_SUPPORTS_USER_ACTION_STATE)
CSS_PSEUDO_ELEMENT(mozPlaceholder, ":-moz-placeholder",
CSS_PSEUDO_ELEMENT_SUPPORTS_USER_ACTION_STATE)
CSS_PSEUDO_ELEMENT(placeholder, ":placeholder",
CSS_PSEUDO_ELEMENT_SUPPORTS_USER_ACTION_STATE)
CSS_PSEUDO_ELEMENT(mozColorSwatch, ":-moz-color-swatch",
CSS_PSEUDO_ELEMENT_SUPPORTS_STYLE_ATTRIBUTE |
CSS_PSEUDO_ELEMENT_SUPPORTS_USER_ACTION_STATE)

Просмотреть файл

@ -83,6 +83,10 @@ nsCSSPseudoElements::GetPseudoType(nsIAtom *aAtom, EnabledState aEnabledState)
++i) {
if (*CSSPseudoElements_info[i].mAtom == aAtom) {
auto type = static_cast<Type>(i);
// ::moz-placeholder is an alias for ::placeholder
if (type == CSSPseudoElementType::mozPlaceholder) {
type = CSSPseudoElementType::placeholder;
}
return IsEnabled(type, aEnabledState) ? type : Type::NotPseudo;
}
}

Просмотреть файл

@ -2534,9 +2534,9 @@ void ContentEnumFunc(const RuleValue& value, nsCSSSelector* aSelector,
// We can get here when calling getComputedStyle(aElt, aPseudo) if:
//
// * aPseudo is a pseudo-element that supports a user action
// pseudo-class, like "::-moz-placeholder";
// pseudo-class, like "::placeholder";
// * there is a style rule that uses a pseudo-class on this
// pseudo-element in the document, like ::-moz-placeholder:hover; and
// pseudo-element in the document, like ::placeholder:hover; and
// * aElt does not have such a pseudo-element.
//
// We know that the selector can't match, since there is no element for

Просмотреть файл

@ -2219,7 +2219,7 @@ GetPseudoRestriction(nsStyleContext *aContext)
pseudoRestriction = CSS_PROPERTY_APPLIES_TO_FIRST_LETTER;
} else if (pseudoType == nsCSSPseudoElements::firstLine) {
pseudoRestriction = CSS_PROPERTY_APPLIES_TO_FIRST_LINE;
} else if (pseudoType == nsCSSPseudoElements::mozPlaceholder) {
} else if (pseudoType == nsCSSPseudoElements::placeholder) {
pseudoRestriction = CSS_PROPERTY_APPLIES_TO_PLACEHOLDER;
}
}

Просмотреть файл

@ -1805,7 +1805,7 @@ nsStyleSet::WalkRestrictionRule(CSSPseudoElementType aPseudoType,
aRuleWalker->Forward(mFirstLetterRule);
else if (aPseudoType == CSSPseudoElementType::firstLine)
aRuleWalker->Forward(mFirstLineRule);
else if (aPseudoType == CSSPseudoElementType::mozPlaceholder)
else if (aPseudoType == CSSPseudoElementType::placeholder)
aRuleWalker->Forward(mPlaceholderRule);
}

Просмотреть файл

@ -102,7 +102,7 @@ input {
}
input > .anonymous-div,
input::-moz-placeholder {
input::placeholder {
word-wrap: normal !important;
/* Make the line-height equal to the available height */
line-height: -moz-block-height;
@ -156,8 +156,8 @@ textarea > scrollbar {
textarea > .anonymous-div,
input > .anonymous-div,
input::-moz-placeholder,
textarea::-moz-placeholder {
input::placeholder,
textarea::placeholder {
overflow: auto;
border: 0px !important;
padding: inherit !important;
@ -173,7 +173,7 @@ textarea::-moz-placeholder {
}
input > .anonymous-div,
input::-moz-placeholder {
input::placeholder {
white-space: pre;
}
@ -185,8 +185,8 @@ input > .anonymous-div.inherit-overflow {
overflow: inherit;
}
input::-moz-placeholder,
textarea::-moz-placeholder {
input::placeholder,
textarea::placeholder {
/*
* Changing display to inline can leads to broken behaviour and will assert.
*/
@ -208,7 +208,7 @@ textarea::-moz-placeholder {
opacity: 0.54;
}
textarea::-moz-placeholder {
textarea::placeholder {
white-space: pre-wrap !important;
}
@ -775,8 +775,8 @@ input[type="submit"]:disabled {
*/
textarea > .anonymous-div,
input > .anonymous-div,
input::-moz-placeholder,
textarea::-moz-placeholder,
input::placeholder,
textarea::placeholder,
*|*::-moz-button-content,
*|*::-moz-display-comboboxcontrol-frame,
optgroup:before {

Просмотреть файл

@ -75,7 +75,7 @@ var gTests = [
active_test_style: 'body input::-moz-range-thumb:active { background: lime; }',
active_reference_style: 'body input::-moz-range-thumb { background: lime; }' },
// ::-moz-placeholder can't be tested, since the UA style sheet sets it to
// ::placeholder can't be tested, since the UA style sheet sets it to
// be pointer-events:none.
];

Просмотреть файл

@ -905,6 +905,8 @@ function run() {
should_serialize_to("p:first-letter", "p::first-letter");
should_serialize_to("div>p:first-letter", "div > p::first-letter");
should_serialize_to("span +div:first-line", "span + div::first-line");
should_serialize_to("input::placeholder", "input::placeholder");
should_serialize_to("input:placeholder-shown", "input:placeholder-shown");
// Test serialization of non CSS2 pseudo-element.
should_serialize_to("input::-moz-placeholder", "input::-moz-placeholder");

Просмотреть файл

@ -60,7 +60,7 @@ body {
flex: 1 1 auto;
}
#filter-input:-moz-placeholder {
#filter-input::placeholder {
color: rgba(255,255,255,0.5);
}

Просмотреть файл

@ -21,14 +21,14 @@ html|*.textbox-textarea {
}
/*
html|*.textbox-input::-moz-placeholder,
html|*.textbox-textarea::-moz-placeholder {
html|*.textbox-input::placeholder,
html|*.textbox-textarea::placeholder {
text-align: left;
direction: ltr;
}
html|*.textbox-input::-moz-placeholder:-moz-locale-dir(rtl),
html|*.textbox-textarea::-moz-placeholder:-moz-locale-dir(rtl) {
html|*.textbox-input::placeholder:-moz-locale-dir(rtl),
html|*.textbox-textarea::placeholder:-moz-locale-dir(rtl) {
text-align: right;
direction: rtl;
}

Просмотреть файл

@ -38,7 +38,7 @@ html|*.textbox-textarea {
@media (-moz-windows-default-theme) {
@media not all and (-moz-os-version: windows-xp) {
textbox html|*.textbox-input::-moz-placeholder {
textbox html|*.textbox-input::placeholder {
font-style: italic;
}
}