Use explicit case-insensitive attribute-value matching in UA-stylesheets
With the "i" (case-insensitive) matching modifier introduced in
https://codereview.chromium.org/330043003/, it becomes possible to
refine the hits on the CaseInsensitiveAttrSelectorMatch use-counter
by applying the modifier to all rules in the UA-stylesheets which
perform an attribute-value match on one of the attributes that - due
to legacy reasons - should be matched case-insensitively.
Most of the modified rules involve the 'type' attribute on <input>
elements, but there are a few others as well ('dir' and 'align').
The goal of this is to be able to get rid of the legacy-induced case-
insensitive cases and leave the "i" flag as a mechanism to opt-in to
case-insensitive matching. See https://crbug.com/327060 for further info.
BUG=327060, 366563
Review URL: https://codereview.chromium.org/417353004
git-svn-id: svn://svn.chromium.org/blink/trunk@179401 bbb929c8-8fbe-4397-9dbb-9b2b20218538
diff --git a/Source/core/css/html.css b/Source/core/css/html.css
index 98ace69..b1ad9ac 100644
--- a/Source/core/css/html.css
+++ b/Source/core/css/html.css
@@ -408,11 +408,11 @@
text-align: start;
}
-input[type="hidden"] {
+input[type="hidden" i] {
display: none
}
-input, input[type="password"], input[type="search"] {
+input, input[type="password" i], input[type="search" i] {
-webkit-appearance: textfield;
padding: 1px;
background-color: white;
@@ -422,7 +422,7 @@
cursor: auto;
}
-input[type="search"] {
+input[type="search" i] {
-webkit-appearance: searchfield;
box-sizing: border-box;
}
@@ -434,7 +434,7 @@
content: none !important;
}
-input[type="search"]::-webkit-textfield-decoration-container {
+input[type="search" i]::-webkit-textfield-decoration-container {
direction: ltr;
}
@@ -453,7 +453,7 @@
pointer-events: auto;
}
-input[type="search"]::-webkit-search-cancel-button {
+input[type="search" i]::-webkit-search-cancel-button {
-webkit-appearance: searchfield-cancel-button;
display: block;
flex: none;
@@ -463,12 +463,12 @@
pointer-events: none;
}
-input[type="search"]:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-search-cancel-button {
+input[type="search" i]:enabled:read-write:-webkit-any(:focus,:hover)::-webkit-search-cancel-button {
opacity: 1;
pointer-events: auto;
}
-input[type="search"]::-webkit-search-decoration {
+input[type="search" i]::-webkit-search-decoration {
-webkit-appearance: searchfield-decoration;
display: block;
flex: none;
@@ -477,7 +477,7 @@
margin: auto 0;
}
-input[type="search"]::-webkit-search-results-decoration {
+input[type="search" i]::-webkit-search-results-decoration {
-webkit-appearance: searchfield-results-decoration;
display: block;
flex: none;
@@ -539,18 +539,18 @@
-webkit-user-modify: read-only !important;
}
-input[type="password"] {
+input[type="password" i] {
-webkit-text-security: disc !important;
}
-input[type="hidden"], input[type="image"], input[type="file"] {
+input[type="hidden" i], input[type="image" i], input[type="file" i] {
-webkit-appearance: initial;
padding: initial;
background-color: initial;
border: initial;
}
-input[type="file"] {
+input[type="file" i] {
align-items: baseline;
color: inherit;
text-align: start !important;
@@ -562,20 +562,20 @@
color: #000000 !important;
}
-input[type="radio"], input[type="checkbox"] {
+input[type="radio" i], input[type="checkbox" i] {
margin: 3px 0.5ex;
padding: initial;
background-color: initial;
border: initial;
}
-input[type="button"], input[type="submit"], input[type="reset"] {
+input[type="button" i], input[type="submit" i], input[type="reset" i] {
-webkit-appearance: push-button;
-webkit-user-select: none;
white-space: pre
}
-input[type="file"]::-webkit-file-upload-button {
+input[type="file" i]::-webkit-file-upload-button {
-webkit-appearance: push-button;
-webkit-user-modify: read-only !important;
white-space: nowrap;
@@ -583,7 +583,7 @@
font-size: inherit;
}
-input[type="button"], input[type="submit"], input[type="reset"], input[type="file"]::-webkit-file-upload-button, button {
+input[type="button" i], input[type="submit" i], input[type="reset" i], input[type="file" i]::-webkit-file-upload-button, button {
align-items: flex-start;
text-align: center;
cursor: default;
@@ -594,7 +594,7 @@
box-sizing: border-box
}
-input[type="range"] {
+input[type="range" i] {
-webkit-appearance: slider-horizontal;
padding: initial;
border: initial;
@@ -602,7 +602,7 @@
color: #909090;
}
-input[type="range"]::-webkit-slider-container, input[type="range"]::-webkit-media-slider-container {
+input[type="range" i]::-webkit-slider-container, input[type="range" i]::-webkit-media-slider-container {
flex: 1;
box-sizing: border-box;
-webkit-user-modify: read-only !important;
@@ -610,7 +610,7 @@
-webkit-align-contents: center;
}
-input[type="range"]::-webkit-slider-runnable-track {
+input[type="range" i]::-webkit-slider-runnable-track {
flex: 1;
-webkit-align-self: center;
@@ -619,25 +619,25 @@
display: block;
}
-input[type="range"]::-webkit-slider-thumb, input[type="range"]::-webkit-media-slider-thumb {
+input[type="range" i]::-webkit-slider-thumb, input[type="range" i]::-webkit-media-slider-thumb {
-webkit-appearance: sliderthumb-horizontal;
box-sizing: border-box;
-webkit-user-modify: read-only !important;
display: block;
}
-input[type="button"]:disabled, input[type="submit"]:disabled, input[type="reset"]:disabled,
-input[type="file"]:disabled::-webkit-file-upload-button, button:disabled,
+input[type="button" i]:disabled, input[type="submit" i]:disabled, input[type="reset" i]:disabled,
+input[type="file" i]:disabled::-webkit-file-upload-button, button:disabled,
select:disabled, keygen:disabled, optgroup:disabled, option:disabled,
select[disabled]>option {
color: GrayText
}
-input[type="button"]:active, input[type="submit"]:active, input[type="reset"]:active, input[type="file"]:active::-webkit-file-upload-button, button:active {
+input[type="button" i]:active, input[type="submit" i]:active, input[type="reset" i]:active, input[type="file" i]:active::-webkit-file-upload-button, button:active {
border-style: inset
}
-input[type="button"]:active:disabled, input[type="submit"]:active:disabled, input[type="reset"]:active:disabled, input[type="file"]:active:disabled::-webkit-file-upload-button, button:active:disabled {
+input[type="button" i]:active:disabled, input[type="submit" i]:active:disabled, input[type="reset" i]:active:disabled, input[type="file" i]:active:disabled::-webkit-file-upload-button, button:active:disabled {
border-style: outset
}
@@ -654,17 +654,17 @@
display: none
}
-input[type="checkbox"] {
+input[type="checkbox" i] {
-webkit-appearance: checkbox;
box-sizing: border-box;
}
-input[type="radio"] {
+input[type="radio" i] {
-webkit-appearance: radio;
box-sizing: border-box;
}
-input[type="color"] {
+input[type="color" i] {
-webkit-appearance: square-button;
width: 44px;
height: 23px;
@@ -674,7 +674,7 @@
padding: 1px 2px;
}
-input[type="color"]::-webkit-color-swatch-wrapper {
+input[type="color" i]::-webkit-color-swatch-wrapper {
display:flex;
padding: 4px 2px;
box-sizing: border-box;
@@ -683,25 +683,25 @@
height: 100%
}
-input[type="color"]::-webkit-color-swatch {
+input[type="color" i]::-webkit-color-swatch {
background-color: #000000;
border: 1px solid #777777;
flex: 1;
-webkit-user-modify: read-only !important;
}
-input[type="color"][list] {
+input[type="color" i][list] {
-webkit-appearance: menulist;
width: 88px;
height: 23px
}
-input[type="color"][list]::-webkit-color-swatch-wrapper {
+input[type="color" i][list]::-webkit-color-swatch-wrapper {
padding-left: 8px;
padding-right: 24px;
}
-input[type="color"][list]::-webkit-color-swatch {
+input[type="color" i][list]::-webkit-color-swatch {
border-color: #000000;
}
@@ -724,23 +724,23 @@
pointer-events: auto;
}
-input[type="date"]:disabled::-webkit-clear-button,
-input[type="date"]:disabled::-webkit-inner-spin-button,
-input[type="datetime-local"]:disabled::-webkit-clear-button,
-input[type="datetime-local"]:disabled::-webkit-inner-spin-button,
-input[type="month"]:disabled::-webkit-clear-button,
-input[type="month"]:disabled::-webkit-inner-spin-button,
-input[type="week"]:disabled::-webkit-clear-button,
-input[type="week"]:disabled::-webkit-inner-spin-button,
+input[type="date" i]:disabled::-webkit-clear-button,
+input[type="date" i]:disabled::-webkit-inner-spin-button,
+input[type="datetime-local" i]:disabled::-webkit-clear-button,
+input[type="datetime-local" i]:disabled::-webkit-inner-spin-button,
+input[type="month" i]:disabled::-webkit-clear-button,
+input[type="month" i]:disabled::-webkit-inner-spin-button,
+input[type="week" i]:disabled::-webkit-clear-button,
+input[type="week" i]:disabled::-webkit-inner-spin-button,
input:disabled::-webkit-calendar-picker-indicator,
-input[type="date"][readonly]::-webkit-clear-button,
-input[type="date"][readonly]::-webkit-inner-spin-button,
-input[type="datetime-local"][readonly]::-webkit-clear-button,
-input[type="datetime-local"][readonly]::-webkit-inner-spin-button,
-input[type="month"][readonly]::-webkit-clear-button,
-input[type="month"][readonly]::-webkit-inner-spin-button,
-input[type="week"][readonly]::-webkit-clear-button,
-input[type="week"][readonly]::-webkit-inner-spin-button,
+input[type="date" i][readonly]::-webkit-clear-button,
+input[type="date" i][readonly]::-webkit-inner-spin-button,
+input[type="datetime-local" i][readonly]::-webkit-clear-button,
+input[type="datetime-local" i][readonly]::-webkit-inner-spin-button,
+input[type="month" i][readonly]::-webkit-clear-button,
+input[type="month" i][readonly]::-webkit-inner-spin-button,
+input[type="week" i][readonly]::-webkit-clear-button,
+input[type="week" i][readonly]::-webkit-inner-spin-button,
input[readonly]::-webkit-calendar-picker-indicator {
visibility: hidden;
}
@@ -994,16 +994,16 @@
outline-offset: -2px
}
-input[type="button"]:focus,
-input[type="checkbox"]:focus,
-input[type="file"]:focus,
-input[type="hidden"]:focus,
-input[type="image"]:focus,
-input[type="radio"]:focus,
-input[type="reset"]:focus,
-input[type="search"]:focus,
-input[type="submit"]:focus,
-input[type="file"]:focus::-webkit-file-upload-button {
+input[type="button" i]:focus,
+input[type="checkbox" i]:focus,
+input[type="file" i]:focus,
+input[type="hidden" i]:focus,
+input[type="image" i]:focus,
+input[type="radio" i]:focus,
+input[type="reset" i]:focus,
+input[type="search" i]:focus,
+input[type="submit" i]:focus,
+input[type="file" i]:focus::-webkit-file-upload-button {
outline-offset: 0
}
@@ -1083,7 +1083,7 @@
unicode-bidi: bidi-override;
}
-textarea[dir=auto] {
+textarea[dir=auto i] {
unicode-bidi: -webkit-plaintext;
}
diff --git a/Source/core/css/mediaControls.css b/Source/core/css/mediaControls.css
index d3b5536..19acd2d 100644
--- a/Source/core/css/mediaControls.css
+++ b/Source/core/css/mediaControls.css
@@ -239,7 +239,7 @@
https://code.google.com/p/chromium/issues/detail?id=112508
https://bugs.webkit.org/show_bug.cgi?id=62218
*/
-input[type="range"]::-webkit-media-slider-container {
+input[type="range" i]::-webkit-media-slider-container {
display: flex;
align-items: center;
flex-direction: row; /* This property is updated by C++ code. */
@@ -252,11 +252,11 @@
}
/* The negative right margin causes the track to overflow its container. */
-input[type="range"]::-webkit-media-slider-container > div {
+input[type="range" i]::-webkit-media-slider-container > div {
margin-right: -14px;
}
-input[type="range"]::-webkit-media-slider-thumb {
+input[type="range" i]::-webkit-media-slider-thumb {
margin-left: -7px;
margin-right: -7px;
}
diff --git a/Source/core/css/quirks.css b/Source/core/css/quirks.css
index 4845591..38e3ac8 100644
--- a/Source/core/css/quirks.css
+++ b/Source/core/css/quirks.css
@@ -22,10 +22,10 @@
*/
/* Give floated images margins of 3px */
-img[align="left"] {
+img[align="left" i] {
margin-right: 3px;
}
-img[align="right"] {
+img[align="right" i] {
margin-left: 3px;
}
@@ -43,7 +43,7 @@
}
/* This will apply only to text fields, since all other inputs already use border box sizing */
-input:not([type=image]), textarea {
+input:not([type=image i]), textarea {
box-sizing: border-box;
}
diff --git a/Source/core/css/themeChromiumAndroid.css b/Source/core/css/themeChromiumAndroid.css
index e00c340..d5b3d40 100644
--- a/Source/core/css/themeChromiumAndroid.css
+++ b/Source/core/css/themeChromiumAndroid.css
@@ -41,25 +41,25 @@
white-space: pre;
}
-input[type="date"]:disabled,
-input[type="datetime-local"]:disabled,
-input[type="month"]:disabled,
-input[type="time"]:disabled,
-input[type="week"]:disabled,
-input[type="date"]:read-only,
-input[type="datetime-local"]:read-only,
-input[type="month"]:read-only,
-input[type="time"]:read-only,
-input[type="week"]:read-only {
+input[type="date" i]:disabled,
+input[type="datetime-local" i]:disabled,
+input[type="month" i]:disabled,
+input[type="time" i]:disabled,
+input[type="week" i]:disabled,
+input[type="date" i]:read-only,
+input[type="datetime-local" i]:read-only,
+input[type="month" i]:read-only,
+input[type="time" i]:read-only,
+input[type="week" i]:read-only {
background-color: ButtonFace;
color: GrayText;
}
-input[type="date"],
-input[type="datetime-local"],
-input[type="month"],
-input[type="time"],
-input[type="week"] {
+input[type="date" i],
+input[type="datetime-local" i],
+input[type="month" i],
+input[type="time" i],
+input[type="week" i] {
align-items: center;
-webkit-appearance: menulist;
background-color: ButtonFace;
diff --git a/Source/core/css/themeChromiumLinux.css b/Source/core/css/themeChromiumLinux.css
index 7d15d64..640a5a8 100644
--- a/Source/core/css/themeChromiumLinux.css
+++ b/Source/core/css/themeChromiumLinux.css
@@ -37,6 +37,6 @@
background-color: ButtonFace;
}
-input[type=range] {
+input[type=range i] {
color: #9d968E;
}
diff --git a/Source/core/css/themeInputMultipleFields.css b/Source/core/css/themeInputMultipleFields.css
index 0150928..069d3c2 100644
--- a/Source/core/css/themeInputMultipleFields.css
+++ b/Source/core/css/themeInputMultipleFields.css
@@ -3,11 +3,11 @@
* found in the LICENSE file.
*/
-input[type="date"],
-input[type="datetime-local"],
-input[type="month"],
-input[type="time"],
-input[type="week"] {
+input[type="date" i],
+input[type="datetime-local" i],
+input[type="month" i],
+input[type="time" i],
+input[type="week" i] {
align-items: center;
display: -webkit-inline-flex;
font-family: monospace;
@@ -83,12 +83,12 @@
font: inherit !important;
}
-input[type="date"]::-webkit-inner-spin-button,
-input[type="datetime"]::-webkit-inner-spin-button,
-input[type="datetime-local"]::-webkit-inner-spin-button,
-input[type="month"]::-webkit-inner-spin-button,
-input[type="time"]::-webkit-inner-spin-button,
-input[type="week"]::-webkit-inner-spin-button {
+input[type="date" i]::-webkit-inner-spin-button,
+input[type="datetime" i]::-webkit-inner-spin-button,
+input[type="datetime-local" i]::-webkit-inner-spin-button,
+input[type="month" i]::-webkit-inner-spin-button,
+input[type="time" i]::-webkit-inner-spin-button,
+input[type="week" i]::-webkit-inner-spin-button {
/* FIXME: Remove height. */
height: 1.5em;
-webkit-margin-start: 2px;
diff --git a/Source/core/css/themeMac.css b/Source/core/css/themeMac.css
index 96cfe5f..32e3c3a 100644
--- a/Source/core/css/themeMac.css
+++ b/Source/core/css/themeMac.css
@@ -3,7 +3,7 @@
* found in the LICENSE file.
*/
-select, input[type="color"][list] {
+select, input[type="color" i][list] {
background-color: #f8f8f8;
border: 1px solid #a6a6a6;
}
diff --git a/Source/core/css/themeWin.css b/Source/core/css/themeWin.css
index 09b348a..694c889 100644
--- a/Source/core/css/themeWin.css
+++ b/Source/core/css/themeWin.css
@@ -33,66 +33,66 @@
making our form elements match Firefox's. */
input:not([type]),
-input[type="email"],
-input[type="number"],
-input[type="password"],
-input[type="tel"],
-input[type="url"],
-input[type="text"] {
+input[type="email" i],
+input[type="number" i],
+input[type="password" i],
+input[type="tel" i],
+input[type="url" i],
+input[type="text" i] {
padding:1px 0;
}
-input[type="search"] {
+input[type="search" i] {
padding:1px;
}
-input[type="checkbox"] {
+input[type="checkbox" i] {
margin:3px 3px 3px 4px;
}
-input[type="radio"] {
+input[type="radio" i] {
margin:3px 3px 0 5px;
}
-input[type="range"] {
+input[type="range" i] {
color: #c4c4c4;
}
/* Not sure this is the right color. #EBEBE4 is what Firefox uses.
FIXME: Figure out how to support legacy input rendering.
- FIXME: Add input[type="file"] once we figure out our file inputs.
- FIXME: Add input[type="image"] once we figure out our image inputs.
+ FIXME: Add input[type="file" i] once we figure out our file inputs.
+ FIXME: Add input[type="image" i] once we figure out our image inputs.
FIXME: We probably do the wrong thing if you put an invalid input type.
do we care?
*/
textarea:disabled,
input:not([type]):disabled,
-input[type="color"]:disabled,
-input[type="date"]:disabled,
-input[type="datetime"]:disabled,
-input[type="datetime-local"]:disabled,
-input[type="email"]:disabled,
-input[type="month"]:disabled,
-input[type="password"]:disabled,
-input[type="number"]:disabled,
-input[type="search"]:disabled,
-input[type="tel"]:disabled,
-input[type="text"]:disabled,
-input[type="time"]:disabled,
-input[type="url"]:disabled,
-input[type="week"]:disabled {
+input[type="color" i]:disabled,
+input[type="date" i]:disabled,
+input[type="datetime" i]:disabled,
+input[type="datetime-local" i]:disabled,
+input[type="email" i]:disabled,
+input[type="month" i]:disabled,
+input[type="password" i]:disabled,
+input[type="number" i]:disabled,
+input[type="search" i]:disabled,
+input[type="tel" i]:disabled,
+input[type="text" i]:disabled,
+input[type="time" i]:disabled,
+input[type="url" i]:disabled,
+input[type="week" i]:disabled {
background-color: #EBEBE4;
}
-input[type="search"]::-webkit-search-cancel-button {
+input[type="search" i]::-webkit-search-cancel-button {
margin-right: 3px;
}
-input[type="search"]::-webkit-search-results-decoration {
+input[type="search" i]::-webkit-search-results-decoration {
margin: auto 3px auto 2px;
}
-input[type="search"]::-webkit-search-results-button {
+input[type="search" i]::-webkit-search-results-button {
margin: auto 3px auto 2px;
}
@@ -100,7 +100,7 @@
margin: 0;
}
-input[type="button"], input[type="submit"], input[type="reset"], input[type="file"]::-webkit-file-upload-button, button {
+input[type="button" i], input[type="submit" i], input[type="reset" i], input[type="file" i]::-webkit-file-upload-button, button {
padding: 1px 6px;
}