Update the current matching of :read-only and :read-write to the latest spec
authorbenjamin@webkit.org <benjamin@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 5 Sep 2014 20:04:39 +0000 (20:04 +0000)
committerbenjamin@webkit.org <benjamin@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 5 Sep 2014 20:04:39 +0000 (20:04 +0000)
https://bugs.webkit.org/show_bug.cgi?id=136566

Reviewed by Antti Koivisto.

Source/WebCore:

WebKit's implementation of :read-only and :read-write dated from 2008 and
it was based on the web form spec (http://www.w3.org/TR/web-forms-2/).
That spec is very dead now.

There are new definitions of :read-only and :read-write in three specs:
-the HTML living spec: http://www.whatwg.org/specs/web-apps/current-work/multipage/scripting.html#selector-read-only
-Selectors level 4: http://dev.w3.org/csswg/selectors4/#rw-pseudos
-CSS 3 UI: http://www.w3.org/TR/css3-ui/

All the definitions say about the same thing. The definitions of Selector Level 4 and
CSS 3 UI are very vague and poorly worded. I used the HTML when something was ambiguous.

In the new definitions, :read-only and :read-write are opposite. It is no longer possible to
match both selector simultaneously for the same element.
Consequently, I got rid of Element:matchesReadOnlyPseudoClass(). Matching :read-only is now equivalent
to :not(:read-write).

The existing definition of :read-write was matching the spec so I could reuse that.

There is one more part to the new spec that is not addressed here: the pseudo class :read-write should
now also match arbitrary editable HTMLElement (e.g. an element with contenteditable). This will be fixed
in a follow up.

Tests: fast/css/read-only-read-write-input-basics.html
       fast/css/read-only-read-write-textarea-basics.html
       fast/selectors/read-only-read-write-input-basics.html
       fast/selectors/read-only-read-write-input-in-fieldset.html
       fast/selectors/read-only-read-write-textarea-basics.html
       fast/selectors/read-only-read-write-textarea-in-fieldset.html

* css/SelectorCheckerTestFunctions.h:
(WebCore::matchesReadOnlyPseudoClass):
* dom/Element.cpp:
(WebCore::Element::matchesReadOnlyPseudoClass): Deleted.
* dom/Element.h:
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::matchesReadOnlyPseudoClass): Deleted.
* html/HTMLInputElement.h:
* html/HTMLTextAreaElement.cpp:
(WebCore::HTMLTextAreaElement::matchesReadOnlyPseudoClass): Deleted.
* html/HTMLTextAreaElement.h:
* html/shadow/SliderThumbElement.cpp:
(WebCore::SliderThumbElement::matchesReadOnlyPseudoClass): Deleted.
* html/shadow/SliderThumbElement.h:
* html/shadow/SpinButtonElement.cpp:
(WebCore::SpinButtonElement::matchesReadOnlyPseudoClass): Deleted.
* html/shadow/SpinButtonElement.h:
* rendering/RenderTheme.cpp:
(WebCore::RenderTheme::isReadOnlyControl):

LayoutTests:

* fast/css/readonly-pseudoclass-opera-005.html:
This was one of the original test.
With the new definition, input[type=radio] is always :read-only.

* fast/forms/input-live-pseudo-selectors-expected.txt:
* fast/forms/resources/input-live-pseudo-selectors.js:
* fast/forms/resources/live-pseudo-selectors.css:
(:read-only): Deleted.
* fast/forms/resources/select-live-pseudo-selectors.js:
* fast/forms/resources/textarea-live-pseudo-selectors.js:
* fast/forms/textarea-live-pseudo-selectors-expected.txt:
Those various tests were mostly testing form validation. The selectors
for :read-only and :read-write were in the way of testing.

They were only 3 cases tested and they are covered by the new tests.

* fast/css/read-only-read-write-input-basics-expected.html: Added.
* fast/css/read-only-read-write-input-basics.html: Added.
* fast/css/read-only-read-write-textarea-basics-expected.html: Added.
* fast/css/read-only-read-write-textarea-basics.html: Added.
* fast/selectors/read-only-read-write-input-basics-expected.txt: Added.
* fast/selectors/read-only-read-write-input-basics.html: Added.
* fast/selectors/read-only-read-write-input-in-fieldset-expected.txt: Added.
* fast/selectors/read-only-read-write-input-in-fieldset.html: Added.
* fast/selectors/read-only-read-write-textarea-basics-expected.txt: Added.
* fast/selectors/read-only-read-write-textarea-basics.html: Added.
* fast/selectors/read-only-read-write-textarea-in-fieldset-expected.txt: Added.
* fast/selectors/read-only-read-write-textarea-in-fieldset.html: Added.
New tests covering basic features for <input> and <textarea>. The definition for
other editable content is ignored for now.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@173328 268f45cc-cd09-0410-ab3c-d52691b4dbfc

33 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/css/read-only-read-write-input-basics-expected.html [new file with mode: 0644]
LayoutTests/fast/css/read-only-read-write-input-basics.html [new file with mode: 0644]
LayoutTests/fast/css/read-only-read-write-textarea-basics-expected.html [new file with mode: 0644]
LayoutTests/fast/css/read-only-read-write-textarea-basics.html [new file with mode: 0644]
LayoutTests/fast/css/readonly-pseudoclass-opera-005.html
LayoutTests/fast/forms/input-live-pseudo-selectors-expected.txt
LayoutTests/fast/forms/resources/input-live-pseudo-selectors.js
LayoutTests/fast/forms/resources/live-pseudo-selectors.css
LayoutTests/fast/forms/resources/select-live-pseudo-selectors.js
LayoutTests/fast/forms/resources/textarea-live-pseudo-selectors.js
LayoutTests/fast/forms/textarea-live-pseudo-selectors-expected.txt
LayoutTests/fast/selectors/read-only-read-write-input-basics-expected.txt [new file with mode: 0644]
LayoutTests/fast/selectors/read-only-read-write-input-basics.html [new file with mode: 0644]
LayoutTests/fast/selectors/read-only-read-write-input-in-fieldset-expected.txt [new file with mode: 0644]
LayoutTests/fast/selectors/read-only-read-write-input-in-fieldset.html [new file with mode: 0644]
LayoutTests/fast/selectors/read-only-read-write-textarea-basics-expected.txt [new file with mode: 0644]
LayoutTests/fast/selectors/read-only-read-write-textarea-basics.html [new file with mode: 0644]
LayoutTests/fast/selectors/read-only-read-write-textarea-in-fieldset-expected.txt [new file with mode: 0644]
LayoutTests/fast/selectors/read-only-read-write-textarea-in-fieldset.html [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/css/SelectorCheckerTestFunctions.h
Source/WebCore/dom/Element.cpp
Source/WebCore/dom/Element.h
Source/WebCore/html/HTMLInputElement.cpp
Source/WebCore/html/HTMLInputElement.h
Source/WebCore/html/HTMLTextAreaElement.cpp
Source/WebCore/html/HTMLTextAreaElement.h
Source/WebCore/html/shadow/SliderThumbElement.cpp
Source/WebCore/html/shadow/SliderThumbElement.h
Source/WebCore/html/shadow/SpinButtonElement.cpp
Source/WebCore/html/shadow/SpinButtonElement.h
Source/WebCore/rendering/RenderTheme.cpp

index 82a588a..804d0e0 100644 (file)
@@ -1,3 +1,41 @@
+2014-09-05  Benjamin Poulain  <benjamin@webkit.org>
+
+        Update the current matching of :read-only and :read-write to the latest spec
+        https://bugs.webkit.org/show_bug.cgi?id=136566
+
+        Reviewed by Antti Koivisto.
+
+        * fast/css/readonly-pseudoclass-opera-005.html:
+        This was one of the original test.
+        With the new definition, input[type=radio] is always :read-only.
+
+        * fast/forms/input-live-pseudo-selectors-expected.txt:
+        * fast/forms/resources/input-live-pseudo-selectors.js:
+        * fast/forms/resources/live-pseudo-selectors.css:
+        (:read-only): Deleted.
+        * fast/forms/resources/select-live-pseudo-selectors.js:
+        * fast/forms/resources/textarea-live-pseudo-selectors.js:
+        * fast/forms/textarea-live-pseudo-selectors-expected.txt:
+        Those various tests were mostly testing form validation. The selectors
+        for :read-only and :read-write were in the way of testing.
+
+        They were only 3 cases tested and they are covered by the new tests.
+
+        * fast/css/read-only-read-write-input-basics-expected.html: Added.
+        * fast/css/read-only-read-write-input-basics.html: Added.
+        * fast/css/read-only-read-write-textarea-basics-expected.html: Added.
+        * fast/css/read-only-read-write-textarea-basics.html: Added.
+        * fast/selectors/read-only-read-write-input-basics-expected.txt: Added.
+        * fast/selectors/read-only-read-write-input-basics.html: Added.
+        * fast/selectors/read-only-read-write-input-in-fieldset-expected.txt: Added.
+        * fast/selectors/read-only-read-write-input-in-fieldset.html: Added.
+        * fast/selectors/read-only-read-write-textarea-basics-expected.txt: Added.
+        * fast/selectors/read-only-read-write-textarea-basics.html: Added.
+        * fast/selectors/read-only-read-write-textarea-in-fieldset-expected.txt: Added.
+        * fast/selectors/read-only-read-write-textarea-in-fieldset.html: Added.
+        New tests covering basic features for <input> and <textarea>. The definition for
+        other editable content is ignored for now.
+
 2014-09-05  Carlos Alberto Lopez Perez  <clopez@igalia.com>
 
         [GTK] Unreviewed GTK gardening.
diff --git a/LayoutTests/fast/css/read-only-read-write-input-basics-expected.html b/LayoutTests/fast/css/read-only-read-write-input-basics-expected.html
new file mode 100644 (file)
index 0000000..2362ddf
--- /dev/null
@@ -0,0 +1,163 @@
+<!doctype html>
+<html>
+<head>
+<style>
+div {
+    float: left;
+    border: 1px solid red;
+}
+input {
+    background-color: white;
+    color: black;
+}
+input:read-only {
+    background-color: lime;
+}
+input:read-write {
+    color: red;
+}
+</style>
+</head>
+<body>
+    <p>Test the basic styling of the &lt;input&gt; types with the selectors :read-only and :read-write.</p>
+    <div>
+        <input type="hidden" value="hidden">
+        <input type="hidden" value="hidden" readonly>
+        <input type="hidden" value="hidden" disabled>
+        <input type="hidden" value="hidden" readonly disabled>
+    </div>
+    <div>
+        <input type="text" value="text">
+        <input type="text" value="text" readonly>
+        <input type="text" value="text" disabled>
+        <input type="text" value="text" readonly disabled>
+    </div>
+    <div>
+        <input type="search" value="search">
+        <input type="search" value="search" readonly>
+        <input type="search" value="search" disabled>
+        <input type="search" value="search" readonly disabled>
+    </div>
+    <div>
+        <input type="tel" value="tel">
+        <input type="tel" value="tel" readonly>
+        <input type="tel" value="tel" disabled>
+        <input type="tel" value="tel" readonly disabled>
+    </div>
+    <div>
+        <input type="url" value="url">
+        <input type="url" value="url" readonly>
+        <input type="url" value="url" disabled>
+        <input type="url" value="url" readonly disabled>
+    </div>
+    <div>
+        <input type="email" value="email">
+        <input type="email" value="email" readonly>
+        <input type="email" value="email" disabled>
+        <input type="email" value="email" readonly disabled>
+    </div>
+    <div>
+        <input type="password" value="password">
+        <input type="password" value="password" readonly>
+        <input type="password" value="password" disabled>
+        <input type="password" value="password" readonly disabled>
+    </div>
+    <div>
+        <input type="datetime" value="datetime">
+        <input type="datetime" value="datetime" readonly>
+        <input type="datetime" value="datetime" disabled>
+        <input type="datetime" value="datetime" readonly disabled>
+    </div>
+    <div>
+        <input type="date" value="date">
+        <input type="date" value="date" readonly>
+        <input type="date" value="date" disabled>
+        <input type="date" value="date" readonly disabled>
+    </div>
+    <div>
+        <input type="month" value="month">
+        <input type="month" value="month" readonly>
+        <input type="month" value="month" disabled>
+        <input type="month" value="month" readonly disabled>
+    </div>
+    <div>
+        <input type="week" value="week">
+        <input type="week" value="week" readonly>
+        <input type="week" value="week" disabled>
+        <input type="week" value="week" readonly disabled>
+    </div>
+    <div>
+        <input type="time" value="time">
+        <input type="time" value="time" readonly>
+        <input type="time" value="time" disabled>
+        <input type="time" value="time" readonly disabled>
+    </div>
+    <div>
+        <input type="datetime-local" value="datetime-local">
+        <input type="datetime-local" value="datetime-local" readonly>
+        <input type="datetime-local" value="datetime-local" disabled>
+        <input type="datetime-local" value="datetime-local" readonly disabled>
+    </div>
+    <div>
+        <input type="number" value="number">
+        <input type="number" value="number" readonly>
+        <input type="number" value="number" disabled>
+        <input type="number" value="number" readonly disabled>
+    </div>
+    <div>
+        <input type="range" value="range">
+        <input type="range" value="range" readonly>
+        <input type="range" value="range" disabled>
+        <input type="range" value="range" readonly disabled>
+    </div>
+    <div>
+        <input type="color" value="color">
+        <input type="color" value="color" readonly>
+        <input type="color" value="color" disabled>
+        <input type="color" value="color" readonly disabled>
+    </div>
+    <div>
+        <input type="checkbox" value="checkbox">
+        <input type="checkbox" value="checkbox" readonly>
+        <input type="checkbox" value="checkbox" disabled>
+        <input type="checkbox" value="checkbox" readonly disabled>
+    </div>
+    <div>
+        <input type="radio" value="radio">
+        <input type="radio" value="radio" readonly>
+        <input type="radio" value="radio" disabled>
+        <input type="radio" value="radio" readonly disabled>
+    </div>
+    <div>
+        <input type="file" value="file">
+        <input type="file" value="file" readonly>
+        <input type="file" value="file" disabled>
+        <input type="file" value="file" readonly disabled>
+    </div>
+    <div>
+        <input type="submit" value="submit">
+        <input type="submit" value="submit" readonly>
+        <input type="submit" value="submit" disabled>
+        <input type="submit" value="submit" readonly disabled>
+    </div>
+    <div>
+        <input type="image" value="image">
+        <input type="image" value="image" readonly>
+        <input type="image" value="image" disabled>
+        <input type="image" value="image" readonly disabled>
+    </div>
+    <div>
+        <input type="reset" value="reset">
+        <input type="reset" value="reset" readonly>
+        <input type="reset" value="reset" disabled>
+        <input type="reset" value="reset" readonly disabled>
+    </div>
+    <div>
+        <input type="button" value="button">
+        <input type="button" value="button" readonly>
+        <input type="button" value="button" disabled>
+        <input type="button" value="button" readonly disabled>
+    </div>
+
+</body>
+</html>
diff --git a/LayoutTests/fast/css/read-only-read-write-input-basics.html b/LayoutTests/fast/css/read-only-read-write-input-basics.html
new file mode 100644 (file)
index 0000000..feec2a7
--- /dev/null
@@ -0,0 +1,163 @@
+<!doctype html>
+<html>
+<head>
+<style>
+div {
+    float: left;
+    border: 1px solid red;
+}
+input {
+    background-color: white;
+    color: black;
+}
+.read-only {
+    background-color: lime;
+}
+.read-write {
+    color: red;
+}
+</style>
+</head>
+<body>
+    <p>Test the basic styling of the &lt;input&gt; types with the selectors :read-only and :read-write.</p>
+    <div>
+        <input type="hidden" value="hidden" class="read-only">
+        <input type="hidden" value="hidden" readonly class="read-only">
+        <input type="hidden" value="hidden" disabled class="read-only">
+        <input type="hidden" value="hidden" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="text" value="text" class="read-write">
+        <input type="text" value="text" readonly class="read-only">
+        <input type="text" value="text" disabled class="read-only">
+        <input type="text" value="text" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="search" value="search" class="read-write">
+        <input type="search" value="search" readonly class="read-only">
+        <input type="search" value="search" disabled class="read-only">
+        <input type="search" value="search" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="tel" value="tel" class="read-write">
+        <input type="tel" value="tel" readonly class="read-only">
+        <input type="tel" value="tel" disabled class="read-only">
+        <input type="tel" value="tel" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="url" value="url" class="read-write">
+        <input type="url" value="url" readonly class="read-only">
+        <input type="url" value="url" disabled class="read-only">
+        <input type="url" value="url" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="email" value="email" class="read-write">
+        <input type="email" value="email" readonly class="read-only">
+        <input type="email" value="email" disabled class="read-only">
+        <input type="email" value="email" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="password" value="password" class="read-write">
+        <input type="password" value="password" readonly class="read-only">
+        <input type="password" value="password" disabled class="read-only">
+        <input type="password" value="password" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="datetime" value="datetime" class="read-write">
+        <input type="datetime" value="datetime" readonly class="read-only">
+        <input type="datetime" value="datetime" disabled class="read-only">
+        <input type="datetime" value="datetime" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="date" value="date" class="read-write">
+        <input type="date" value="date" readonly class="read-only">
+        <input type="date" value="date" disabled class="read-only">
+        <input type="date" value="date" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="month" value="month" class="read-write">
+        <input type="month" value="month" readonly class="read-only">
+        <input type="month" value="month" disabled class="read-only">
+        <input type="month" value="month" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="week" value="week" class="read-write">
+        <input type="week" value="week" readonly class="read-only">
+        <input type="week" value="week" disabled class="read-only">
+        <input type="week" value="week" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="time" value="time" class="read-write">
+        <input type="time" value="time" readonly class="read-only">
+        <input type="time" value="time" disabled class="read-only">
+        <input type="time" value="time" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="datetime-local" value="datetime-local" class="read-write">
+        <input type="datetime-local" value="datetime-local" readonly class="read-only">
+        <input type="datetime-local" value="datetime-local" disabled class="read-only">
+        <input type="datetime-local" value="datetime-local" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="number" value="number" class="read-write">
+        <input type="number" value="number" readonly class="read-only">
+        <input type="number" value="number" disabled class="read-only">
+        <input type="number" value="number" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="range" value="range" class="read-only">
+        <input type="range" value="range" readonly class="read-only">
+        <input type="range" value="range" disabled class="read-only">
+        <input type="range" value="range" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="color" value="color" class="read-only">
+        <input type="color" value="color" readonly class="read-only">
+        <input type="color" value="color" disabled class="read-only">
+        <input type="color" value="color" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="checkbox" value="checkbox" class="read-only">
+        <input type="checkbox" value="checkbox" readonly class="read-only">
+        <input type="checkbox" value="checkbox" disabled class="read-only">
+        <input type="checkbox" value="checkbox" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="radio" value="radio" class="read-only">
+        <input type="radio" value="radio" readonly class="read-only">
+        <input type="radio" value="radio" disabled class="read-only">
+        <input type="radio" value="radio" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="file" value="file" class="read-only">
+        <input type="file" value="file" readonly class="read-only">
+        <input type="file" value="file" disabled class="read-only">
+        <input type="file" value="file" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="submit" value="submit" class="read-only">
+        <input type="submit" value="submit" readonly class="read-only">
+        <input type="submit" value="submit" disabled class="read-only">
+        <input type="submit" value="submit" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="image" value="image" class="read-only">
+        <input type="image" value="image" readonly class="read-only">
+        <input type="image" value="image" disabled class="read-only">
+        <input type="image" value="image" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="reset" value="reset" class="read-only">
+        <input type="reset" value="reset" readonly class="read-only">
+        <input type="reset" value="reset" disabled class="read-only">
+        <input type="reset" value="reset" readonly disabled class="read-only">
+    </div>
+    <div>
+        <input type="button" value="button" class="read-only">
+        <input type="button" value="button" readonly class="read-only">
+        <input type="button" value="button" disabled class="read-only">
+        <input type="button" value="button" readonly disabled class="read-only">
+    </div>
+
+</body>
+</html>
diff --git a/LayoutTests/fast/css/read-only-read-write-textarea-basics-expected.html b/LayoutTests/fast/css/read-only-read-write-textarea-basics-expected.html
new file mode 100644 (file)
index 0000000..5669eff
--- /dev/null
@@ -0,0 +1,35 @@
+<!doctype html>
+<html>
+<head>
+<style>
+textarea {
+    background-color: white;
+    color: black;
+    float: left;
+}
+</style>
+</head>
+<body>
+    <p>Test the basic styling of &lt;textarea&gt; with the selectors :read-only and :read-write. If the test succeed, the first text area should have red text over a white background. All the following text area should have black text over green background.</p>
+    <textarea style="color: red;">Ouch,</textarea>
+
+    <textarea style="background-color: lime;" readonly>WebKit</textarea>
+    <textarea style="background-color: lime;" readonly>seems</textarea>
+    <textarea style="background-color: lime;" readonly>to</textarea>
+
+    <textarea style="background-color: lime;" readonly>be</textarea>
+    <textarea style="background-color: lime;" readonly>the</textarea>
+    <textarea style="background-color: lime;" readonly>only</textarea>
+
+    <textarea style="background-color: lime;" disabled>engine</textarea>
+    <textarea style="background-color: lime;" disabled>testing</textarea>
+    <textarea style="background-color: lime;" disabled>css</textarea>
+
+    <textarea style="background-color: lime;" disabled>selectors</textarea>
+    <textarea style="background-color: lime;" disabled>properly.</textarea>
+    <textarea style="background-color: lime;" disabled>That</textarea>
+
+    <textarea style="background-color: lime;" readonly disabled>is</textarea>
+    <textarea style="background-color: lime;" readonly disabled>sad.</textarea>
+</body>
+</html>
diff --git a/LayoutTests/fast/css/read-only-read-write-textarea-basics.html b/LayoutTests/fast/css/read-only-read-write-textarea-basics.html
new file mode 100644 (file)
index 0000000..23127ca
--- /dev/null
@@ -0,0 +1,41 @@
+<!doctype html>
+<html>
+<head>
+<style>
+textarea {
+    background-color: white;
+    color: black;
+    float: left;
+}
+textarea:read-only {
+    background-color: lime;
+}
+textarea:read-write {
+    color: red;
+}
+</style>
+</head>
+<body>
+    <p>Test the basic styling of &lt;textarea&gt; with the selectors :read-only and :read-write. If the test succeed, the first text area should have red text over a white background. All the following text area should have black text over green background.</p>
+    <textarea>Ouch,</textarea>
+
+    <textarea readonly>WebKit</textarea>
+    <textarea readonly="">seems</textarea>
+    <textarea readonly="readonly">to</textarea>
+
+    <textarea readonly="true">be</textarea>
+    <textarea readonly="false">the</textarea>
+    <textarea readonly="disabled">only</textarea>
+
+    <textarea disabled>engine</textarea>
+    <textarea disabled="">testing</textarea>
+    <textarea disabled="disabled">css</textarea>
+
+    <textarea disabled="true">selectors</textarea>
+    <textarea disabled="false">properly.</textarea>
+    <textarea disabled="readonly">That</textarea>
+
+    <textarea readonly disabled>is</textarea>
+    <textarea readonly="" disabled="">sad.</textarea>
+</body>
+</html>
index 06d77d1..03d27da 100644 (file)
@@ -5,7 +5,11 @@
  input { background: red; }
  #i1:read-write { background: lime; }
  #i2 { background: lime; }
- #i2:read-only { background: red; }
+
+ /* This definition was modified since the original opera test. In the latest definition (http://www.whatwg.org/specs/web-apps/current-work/multipage/scripting.html#selector-read-only),
+    input[type=radio] is always read-only. */
+ #i2:read-write { background: red; }
+
  #i3:read-write { background: lime; }
  #i4:read-only { background: lime; }
  #i5:read-only { background: lime; }
index b392824..2db796d 100644 (file)
@@ -12,7 +12,7 @@ Change disabled:
 PASS backgroundOf(el) is disabledColor
 PASS backgroundOf(el) is invalidColor
 Change readOnly:
-PASS backgroundOf(el) is readOnlyColor
+PASS backgroundOf(el) is normalColor
 PASS backgroundOf(el) is invalidColor
 Inside/outside of a form:
 PASS backgroundOf(el) is invalidColor
index 8f9cd0a..daee1cd 100644 (file)
@@ -23,7 +23,6 @@ var elBackground = 'backgroundOf(el)';
 var invalidColor = 'rgb(255, 0, 0)';
 var normalColor = 'rgb(255, 255, 255)';
 var disabledColor = 'rgb(0, 0, 0)';
-var readOnlyColor = 'rgb(0, 255, 0)'
 var validColor = 'rgb(0, 0, 255)';
 
 // --------------------------------
@@ -50,7 +49,7 @@ shouldBe(elBackground, 'invalidColor');
 debug('Change readOnly:');
 el = makeInvalid();
 el.readOnly = true;
-shouldBe(elBackground, 'readOnlyColor');
+shouldBe(elBackground, 'normalColor');
 el.readOnly = false;
 shouldBe(elBackground, 'invalidColor');
 
index 0b5736f..cc7dd85 100644 (file)
@@ -1,6 +1,5 @@
 :invalid { background: rgb(255, 0, 0); }
 :valid { background: rgb(0, 0, 255); }
 :disabled { background: black; }
-:read-only { background: rgb(0, 255, 0); }
 input { background: white; }
 textarea { background: white; }
index 35c3a5b..35c1dd5 100644 (file)
@@ -60,7 +60,6 @@ var elBackground = 'backgroundOf(el)';
 var invalidColor = 'rgb(255, 0, 0)';
 var normalColor = 'rgb(255, 255, 255)';
 var disabledColor = 'rgb(0, 0, 0)';
-var readOnlyColor = 'rgb(0, 255, 0)'
 var transparentColor = 'rgba(0, 0, 0, 0)';
 var validColor = 'rgb(0, 0, 255)';
 
index 66d7666..e371e47 100644 (file)
@@ -23,7 +23,6 @@ var elBackground = 'backgroundOf(el)';
 var invalidColor = 'rgb(255, 0, 0)';
 var normalColor = 'rgb(255, 255, 255)';
 var disabledColor = 'rgb(0, 0, 0)';
-var readOnlyColor = 'rgb(0, 255, 0)'
 var validColor = 'rgb(0, 0, 255)';
 
 // --------------------------------
@@ -50,7 +49,7 @@ shouldBe(elBackground, 'invalidColor');
 debug('Change readOnly:');
 el = makeInvalid();
 el.readOnly = true;
-shouldBe(elBackground, 'readOnlyColor');
+shouldBe(elBackground, 'normalColor');
 el.readOnly = false;
 shouldBe(elBackground, 'invalidColor');
 
index f44f5b3..188f022 100644 (file)
@@ -12,7 +12,7 @@ Change disabled:
 PASS backgroundOf(el) is disabledColor
 PASS backgroundOf(el) is invalidColor
 Change readOnly:
-PASS backgroundOf(el) is readOnlyColor
+PASS backgroundOf(el) is normalColor
 PASS backgroundOf(el) is invalidColor
 Inside/outside of a form:
 PASS backgroundOf(el) is invalidColor
diff --git a/LayoutTests/fast/selectors/read-only-read-write-input-basics-expected.txt b/LayoutTests/fast/selectors/read-only-read-write-input-basics-expected.txt
new file mode 100644 (file)
index 0000000..5f1f4b0
--- /dev/null
@@ -0,0 +1,1907 @@
+Test the basic features of ":read-only", ":read-write" on the <input> element. The definion is that ":read-write" is matches for "input elements to which the readonly attribute applies, and that are mutable (i.e. that do not have the readonly attribute specified and that are not disabled)"
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Testing hidden
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+Testing text
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+Testing search
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+Testing tel
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+Testing url
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+Testing email
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+Testing password
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+Testing datetime
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+Testing date
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+Testing month
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+Testing week
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+Testing time
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+Testing datetime-local
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+Testing number
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+Testing range
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+Testing color
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+Testing checkbox
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+Testing radio
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+Testing file
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+Testing submit
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+Testing image
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+Testing reset
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+Testing button
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+Testing 
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+Testing webkit
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+Testing foobar
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 0
+PASS document.querySelector("input:read-write") is null
+PASS document.querySelectorAll("input:read-only").length is 1
+PASS document.querySelector("input:read-only") is document.getElementById("testcase")
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(1, 2, 3)"
+PASS document.querySelectorAll("input:read-write").length is 1
+PASS document.querySelector("input:read-write") is document.getElementById("testcase")
+PASS document.querySelectorAll("input:read-only").length is 0
+PASS document.querySelector("input:read-only") is null
+PASS getComputedStyle(document.getElementById("testcase")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("testcase")).backgroundColor is "rgb(255, 255, 255)"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/selectors/read-only-read-write-input-basics.html b/LayoutTests/fast/selectors/read-only-read-write-input-basics.html
new file mode 100644 (file)
index 0000000..ecc5ebe
--- /dev/null
@@ -0,0 +1,121 @@
+<!doctype html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<style>
+input {
+    background-color: white;
+    color: black;
+}
+input:read-only {
+    background-color: rgb(1, 2, 3);
+}
+input:read-write {
+    color: rgb(4, 5, 6);
+}
+</style>
+</head>
+<body>
+    <div style="display:none">
+        <input id="testcase">
+    </div>
+</body>
+<script>
+description('Test the basic features of ":read-only", ":read-write" on the &ltinput&gt; element. The definion is that ":read-write" is matches for "input elements to which the readonly attribute applies, and that are mutable (i.e. that do not have the readonly attribute specified and that are not disabled)"');
+
+// List of [input type, supports readonly attribute].
+var inputTypes = [
+    // Input types defined in the HTML Living Standard. http://www.whatwg.org/html/
+    ["hidden", false],
+    ["text", true],
+    ["search", true],
+    ["tel", true],
+    ["url", true],
+    ["email", true],
+    ["password", true],
+    ["datetime", true],
+    ["date", true],
+    ["month", true],
+    ["week", true],
+    ["time", true],
+    ["datetime-local", true],
+    ["number", true],
+    ["range", false],
+    ["color", false],
+    ["checkbox", false],
+    ["radio", false],
+    ["file", false],
+    ["submit", false],
+    ["image", false],
+    ["reset", false],
+    ["button", false],
+
+    // Made up ones.
+    ["", true],
+    ["webkit", true],
+    ["foobar", true],
+];
+
+function testProperties(isReadOnly) {
+    shouldBe('document.querySelectorAll("input:read-write").length', isReadOnly ? "0" : "1");
+    shouldBe('document.querySelector("input:read-write")', isReadOnly ? "null" : "document.getElementById(\"testcase\")");
+    shouldBe('document.querySelectorAll("input:read-only").length', isReadOnly ? "1" : "0");
+    shouldBe('document.querySelector("input:read-only")', isReadOnly ? "document.getElementById(\"testcase\")" : "null");
+    shouldBeEqualToString("getComputedStyle(document.getElementById(\"testcase\")).color", isReadOnly ? "rgb(0, 0, 0)" : "rgb(4, 5, 6)");
+    shouldBeEqualToString("getComputedStyle(document.getElementById(\"testcase\")).backgroundColor", isReadOnly ? "rgb(1, 2, 3)" : "rgb(255, 255, 255)");
+}
+
+function testInputType(inputType, supportsReadonly) {
+    var testCase = document.getElementById("testcase");
+    testCase.type = inputType;
+
+    // Initial state.
+    testProperties(!supportsReadonly);
+
+    // Setting readonly through API.
+    testCase.readOnly = true;
+    testProperties(true);
+
+    testCase.readOnly = false;
+    testProperties(!supportsReadonly);
+
+    // Setting readonly through attributes.
+    testCase.setAttribute("readonly");
+    testProperties(true);
+
+    testCase.removeAttribute("readonly");
+    testProperties(!supportsReadonly);
+
+    // Setting disabled through API.
+    testCase.disabled = true;
+    testProperties(true);
+
+    testCase.disabled = false;
+    testProperties(!supportsReadonly);
+
+    // Setting disabled through attributes.
+    testCase.setAttribute("disabled");
+    testProperties(true);
+
+    testCase.removeAttribute("disabled");
+    testProperties(!supportsReadonly);
+
+    // Setting both.
+    testCase.readOnly = true;
+    testCase.disabled = true;
+    testProperties(true);
+
+    // Remove them one by one.
+    testCase.removeAttribute("disabled");
+    testProperties(true);
+    testCase.removeAttribute("readonly");
+    testProperties(!supportsReadonly);
+}
+
+for (var i = 0; i < inputTypes.length; ++i) {
+    debug("Testing " + inputTypes[i][0]);
+    testInputType(inputTypes[i][0], inputTypes[i][1]);
+}
+</script>
+<script src="../../resources/js-test-post.js"></script>
+</html>
diff --git a/LayoutTests/fast/selectors/read-only-read-write-input-in-fieldset-expected.txt b/LayoutTests/fast/selectors/read-only-read-write-input-in-fieldset-expected.txt
new file mode 100644 (file)
index 0000000..c65eec1
--- /dev/null
@@ -0,0 +1,29 @@
+Test the basic features of ":read-only", ":read-write" on the <input> element. In a fieldset, all elements that are not part of the legend are disabled if the fieldset is disabled.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS document.querySelectorAll("input:read-write").length is 4
+PASS document.querySelectorAll("input:read-write")[0].id is "input1"
+PASS document.querySelectorAll("input:read-write")[1].id is "input2"
+PASS document.querySelectorAll("input:read-write")[2].id is "input3"
+PASS document.querySelectorAll("input:read-write")[3].id is "input5"
+PASS document.querySelectorAll("input:read-only").length is 2
+PASS document.querySelectorAll("input:read-only")[0].id is "input4"
+PASS document.querySelectorAll("input:read-only")[1].id is "input6"
+PASS getComputedStyle(document.getElementById('input1')).backgroundColor is "rgb(255, 255, 255)"
+PASS getComputedStyle(document.getElementById('input1')).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById('input2')).backgroundColor is "rgb(255, 255, 255)"
+PASS getComputedStyle(document.getElementById('input2')).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById('input3')).backgroundColor is "rgb(255, 255, 255)"
+PASS getComputedStyle(document.getElementById('input3')).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById('input4')).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.getElementById('input4')).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById('input5')).backgroundColor is "rgb(255, 255, 255)"
+PASS getComputedStyle(document.getElementById('input5')).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById('input6')).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.getElementById('input6')).color is "rgb(0, 0, 0)"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/selectors/read-only-read-write-input-in-fieldset.html b/LayoutTests/fast/selectors/read-only-read-write-input-in-fieldset.html
new file mode 100644 (file)
index 0000000..69371ea
--- /dev/null
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<style>
+input {
+    background-color: white;
+    color: black;
+}
+input:read-only {
+    background-color: rgb(1, 2, 3);
+}
+input:read-write {
+    color: rgb(4, 5, 6);
+}
+</style>
+</head>
+<body>
+    <div style="display:none">
+        <fieldset>
+            <legend>Legend!<input type="text" id="input1"></legend>
+            <input type="text" id="input2">
+        </fieldset>
+
+        <fieldset disabled>
+            <legend>Legend!<input type="text" id="input3"></legend>
+            <input type="text" id="input4">
+        </fieldset>
+
+        <fieldset id="disabled-dynamically">
+            <legend>Legend!<input type="text" id="input5"></legend>
+            <input type="text" id="input6">
+        </fieldset>
+    </div>
+</body>
+<script>
+description('Test the basic features of ":read-only", ":read-write" on the &ltinput&gt; element. In a fieldset, all elements that are not part of the legend are disabled if the fieldset is disabled.');
+
+document.getElementById("disabled-dynamically").disabled = true;
+
+shouldBe("document.querySelectorAll(\"input:read-write\").length", "4");
+shouldBeEqualToString("document.querySelectorAll(\"input:read-write\")[0].id", "input1");
+shouldBeEqualToString("document.querySelectorAll(\"input:read-write\")[1].id", "input2");
+shouldBeEqualToString("document.querySelectorAll(\"input:read-write\")[2].id", "input3");
+shouldBeEqualToString("document.querySelectorAll(\"input:read-write\")[3].id", "input5");
+
+shouldBe("document.querySelectorAll(\"input:read-only\").length", "2");
+shouldBeEqualToString("document.querySelectorAll(\"input:read-only\")[0].id", "input4");
+shouldBeEqualToString("document.querySelectorAll(\"input:read-only\")[1].id", "input6");
+
+shouldBeEqualToString("getComputedStyle(document.getElementById('input1')).backgroundColor", "rgb(255, 255, 255)");
+shouldBeEqualToString("getComputedStyle(document.getElementById('input1')).color", "rgb(4, 5, 6)");
+
+shouldBeEqualToString("getComputedStyle(document.getElementById('input2')).backgroundColor", "rgb(255, 255, 255)");
+shouldBeEqualToString("getComputedStyle(document.getElementById('input2')).color", "rgb(4, 5, 6)");
+
+shouldBeEqualToString("getComputedStyle(document.getElementById('input3')).backgroundColor", "rgb(255, 255, 255)");
+shouldBeEqualToString("getComputedStyle(document.getElementById('input3')).color", "rgb(4, 5, 6)");
+
+shouldBeEqualToString("getComputedStyle(document.getElementById('input4')).backgroundColor", "rgb(1, 2, 3)");
+shouldBeEqualToString("getComputedStyle(document.getElementById('input4')).color", "rgb(0, 0, 0)");
+
+shouldBeEqualToString("getComputedStyle(document.getElementById('input5')).backgroundColor", "rgb(255, 255, 255)");
+shouldBeEqualToString("getComputedStyle(document.getElementById('input5')).color", "rgb(4, 5, 6)");
+
+shouldBeEqualToString("getComputedStyle(document.getElementById('input6')).backgroundColor", "rgb(1, 2, 3)");
+shouldBeEqualToString("getComputedStyle(document.getElementById('input6')).color", "rgb(0, 0, 0)");
+
+</script>
+<script src="../../resources/js-test-post.js"></script>
+</html>
diff --git a/LayoutTests/fast/selectors/read-only-read-write-textarea-basics-expected.txt b/LayoutTests/fast/selectors/read-only-read-write-textarea-basics-expected.txt
new file mode 100644 (file)
index 0000000..c4331a3
--- /dev/null
@@ -0,0 +1,278 @@
+Test the basic features of ":read-only", ":read-write" on the <textarea> element. The definition is that ":read-write" is matches for "textarea elements that do not have a readonly attribute, and that are not disabled"
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS document.querySelectorAll("textarea:read-write").length is 1
+PASS document.querySelectorAll("textarea:read-write")[0].id is "initial-state"
+PASS document.querySelectorAll("textarea:read-only").length is 14
+PASS document.querySelectorAll("textarea:read-only")[0].id is "readonly-defined"
+PASS document.querySelectorAll("textarea:read-only")[1].id is "readonly-set-empty"
+PASS document.querySelectorAll("textarea:read-only")[2].id is "readonly-set-readonly"
+PASS document.querySelectorAll("textarea:read-only")[3].id is "readonly-set-true"
+PASS document.querySelectorAll("textarea:read-only")[4].id is "readonly-set-false"
+PASS document.querySelectorAll("textarea:read-only")[5].id is "readonly-set-disabled"
+PASS document.querySelectorAll("textarea:read-only")[6].id is "disabled-defined"
+PASS document.querySelectorAll("textarea:read-only")[7].id is "disabled-set-empty"
+PASS document.querySelectorAll("textarea:read-only")[8].id is "disabled-set-disabled"
+PASS document.querySelectorAll("textarea:read-only")[9].id is "disabled-set-true"
+PASS document.querySelectorAll("textarea:read-only")[10].id is "disabled-set-false"
+PASS document.querySelectorAll("textarea:read-only")[11].id is "disabled-set-readonly"
+PASS document.querySelectorAll("textarea:read-only")[12].id is "readonly-and-disabled-defined"
+PASS document.querySelectorAll("textarea:read-only")[13].id is "readonly-and-disabled-set-empty"
+PASS getComputedStyle(document.getElementById("initial-state")).backgroundColor is "rgb(255, 255, 255)"
+PASS getComputedStyle(document.getElementById("initial-state")).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById("readonly-defined")).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.getElementById("readonly-defined")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("readonly-set-empty")).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.getElementById("readonly-set-empty")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("readonly-set-readonly")).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.getElementById("readonly-set-readonly")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("readonly-set-true")).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.getElementById("readonly-set-true")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("readonly-set-false")).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.getElementById("readonly-set-false")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("readonly-set-disabled")).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.getElementById("readonly-set-disabled")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("disabled-defined")).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.getElementById("disabled-defined")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("disabled-set-empty")).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.getElementById("disabled-set-empty")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("disabled-set-disabled")).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.getElementById("disabled-set-disabled")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("disabled-set-true")).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.getElementById("disabled-set-true")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("disabled-set-false")).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.getElementById("disabled-set-false")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("disabled-set-readonly")).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.getElementById("disabled-set-readonly")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("readonly-and-disabled-defined")).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.getElementById("readonly-and-disabled-defined")).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById("readonly-and-disabled-set-empty")).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.getElementById("readonly-and-disabled-set-empty")).color is "rgb(0, 0, 0)"
+PASS testBlock.querySelectorAll(":read-write").length is 1
+PASS testBlock.querySelector(":read-write") is newTextArea
+PASS testBlock.querySelectorAll(":read-only").length is 0
+PASS testBlock.querySelector(":read-only") is null
+PASS getComputedStyle(newTextArea).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(255, 255, 255)"
+PASS testBlock.querySelectorAll(":read-write").length is 0
+PASS testBlock.querySelector(":read-write") is null
+PASS testBlock.querySelectorAll(":read-only").length is 1
+PASS testBlock.querySelector(":read-only") is newTextArea
+PASS getComputedStyle(newTextArea).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(1, 2, 3)"
+PASS testBlock.querySelectorAll(":read-write").length is 1
+PASS testBlock.querySelector(":read-write") is newTextArea
+PASS testBlock.querySelectorAll(":read-only").length is 0
+PASS testBlock.querySelector(":read-only") is null
+PASS getComputedStyle(newTextArea).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(255, 255, 255)"
+PASS testBlock.querySelectorAll(":read-write").length is 0
+PASS testBlock.querySelector(":read-write") is null
+PASS testBlock.querySelectorAll(":read-only").length is 1
+PASS testBlock.querySelector(":read-only") is newTextArea
+PASS getComputedStyle(newTextArea).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(1, 2, 3)"
+PASS testBlock.querySelectorAll(":read-write").length is 1
+PASS testBlock.querySelector(":read-write") is newTextArea
+PASS testBlock.querySelectorAll(":read-only").length is 0
+PASS testBlock.querySelector(":read-only") is null
+PASS getComputedStyle(newTextArea).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(255, 255, 255)"
+PASS testBlock.querySelectorAll(":read-write").length is 0
+PASS testBlock.querySelector(":read-write") is null
+PASS testBlock.querySelectorAll(":read-only").length is 1
+PASS testBlock.querySelector(":read-only") is newTextArea
+PASS getComputedStyle(newTextArea).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(1, 2, 3)"
+PASS testBlock.querySelectorAll(":read-write").length is 1
+PASS testBlock.querySelector(":read-write") is newTextArea
+PASS testBlock.querySelectorAll(":read-only").length is 0
+PASS testBlock.querySelector(":read-only") is null
+PASS getComputedStyle(newTextArea).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(255, 255, 255)"
+PASS testBlock.querySelectorAll(":read-write").length is 0
+PASS testBlock.querySelector(":read-write") is null
+PASS testBlock.querySelectorAll(":read-only").length is 1
+PASS testBlock.querySelector(":read-only") is newTextArea
+PASS getComputedStyle(newTextArea).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(1, 2, 3)"
+PASS testBlock.querySelectorAll(":read-write").length is 1
+PASS testBlock.querySelector(":read-write") is newTextArea
+PASS testBlock.querySelectorAll(":read-only").length is 0
+PASS testBlock.querySelector(":read-only") is null
+PASS getComputedStyle(newTextArea).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(255, 255, 255)"
+PASS testBlock.querySelectorAll(":read-write").length is 0
+PASS testBlock.querySelector(":read-write") is null
+PASS testBlock.querySelectorAll(":read-only").length is 1
+PASS testBlock.querySelector(":read-only") is newTextArea
+PASS getComputedStyle(newTextArea).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(1, 2, 3)"
+PASS testBlock.querySelectorAll(":read-write").length is 1
+PASS testBlock.querySelector(":read-write") is newTextArea
+PASS testBlock.querySelectorAll(":read-only").length is 0
+PASS testBlock.querySelector(":read-only") is null
+PASS getComputedStyle(newTextArea).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(255, 255, 255)"
+PASS testBlock.querySelectorAll(":read-write").length is 0
+PASS testBlock.querySelector(":read-write") is null
+PASS testBlock.querySelectorAll(":read-only").length is 1
+PASS testBlock.querySelector(":read-only") is newTextArea
+PASS getComputedStyle(newTextArea).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(1, 2, 3)"
+PASS testBlock.querySelectorAll(":read-write").length is 1
+PASS testBlock.querySelector(":read-write") is newTextArea
+PASS testBlock.querySelectorAll(":read-only").length is 0
+PASS testBlock.querySelector(":read-only") is null
+PASS getComputedStyle(newTextArea).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(255, 255, 255)"
+PASS testBlock.querySelectorAll(":read-write").length is 0
+PASS testBlock.querySelector(":read-write") is null
+PASS testBlock.querySelectorAll(":read-only").length is 1
+PASS testBlock.querySelector(":read-only") is newTextArea
+PASS getComputedStyle(newTextArea).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(1, 2, 3)"
+PASS testBlock.querySelectorAll(":read-write").length is 1
+PASS testBlock.querySelector(":read-write") is newTextArea
+PASS testBlock.querySelectorAll(":read-only").length is 0
+PASS testBlock.querySelector(":read-only") is null
+PASS getComputedStyle(newTextArea).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(255, 255, 255)"
+PASS testBlock.querySelectorAll(":read-write").length is 0
+PASS testBlock.querySelector(":read-write") is null
+PASS testBlock.querySelectorAll(":read-only").length is 1
+PASS testBlock.querySelector(":read-only") is newTextArea
+PASS getComputedStyle(newTextArea).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(1, 2, 3)"
+PASS testBlock.querySelectorAll(":read-write").length is 1
+PASS testBlock.querySelector(":read-write") is newTextArea
+PASS testBlock.querySelectorAll(":read-only").length is 0
+PASS testBlock.querySelector(":read-only") is null
+PASS getComputedStyle(newTextArea).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(255, 255, 255)"
+PASS testBlock.querySelectorAll(":read-write").length is 0
+PASS testBlock.querySelector(":read-write") is null
+PASS testBlock.querySelectorAll(":read-only").length is 1
+PASS testBlock.querySelector(":read-only") is newTextArea
+PASS getComputedStyle(newTextArea).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(1, 2, 3)"
+PASS testBlock.querySelectorAll(":read-write").length is 1
+PASS testBlock.querySelector(":read-write") is newTextArea
+PASS testBlock.querySelectorAll(":read-only").length is 0
+PASS testBlock.querySelector(":read-only") is null
+PASS getComputedStyle(newTextArea).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(255, 255, 255)"
+PASS testBlock.querySelectorAll(":read-write").length is 0
+PASS testBlock.querySelector(":read-write") is null
+PASS testBlock.querySelectorAll(":read-only").length is 1
+PASS testBlock.querySelector(":read-only") is newTextArea
+PASS getComputedStyle(newTextArea).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(1, 2, 3)"
+PASS testBlock.querySelectorAll(":read-write").length is 1
+PASS testBlock.querySelector(":read-write") is newTextArea
+PASS testBlock.querySelectorAll(":read-only").length is 0
+PASS testBlock.querySelector(":read-only") is null
+PASS getComputedStyle(newTextArea).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(255, 255, 255)"
+PASS testBlock.querySelectorAll(":read-write").length is 0
+PASS testBlock.querySelector(":read-write") is null
+PASS testBlock.querySelectorAll(":read-only").length is 1
+PASS testBlock.querySelector(":read-only") is newTextArea
+PASS getComputedStyle(newTextArea).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(1, 2, 3)"
+PASS testBlock.querySelectorAll(":read-write").length is 1
+PASS testBlock.querySelector(":read-write") is newTextArea
+PASS testBlock.querySelectorAll(":read-only").length is 0
+PASS testBlock.querySelector(":read-only") is null
+PASS getComputedStyle(newTextArea).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(255, 255, 255)"
+PASS testBlock.querySelectorAll(":read-write").length is 0
+PASS testBlock.querySelector(":read-write") is null
+PASS testBlock.querySelectorAll(":read-only").length is 1
+PASS testBlock.querySelector(":read-only") is newTextArea
+PASS getComputedStyle(newTextArea).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(1, 2, 3)"
+PASS testBlock.querySelectorAll(":read-write").length is 1
+PASS testBlock.querySelector(":read-write") is newTextArea
+PASS testBlock.querySelectorAll(":read-only").length is 0
+PASS testBlock.querySelector(":read-only") is null
+PASS getComputedStyle(newTextArea).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(255, 255, 255)"
+PASS testBlock.querySelectorAll(":read-write").length is 0
+PASS testBlock.querySelector(":read-write") is null
+PASS testBlock.querySelectorAll(":read-only").length is 1
+PASS testBlock.querySelector(":read-only") is newTextArea
+PASS getComputedStyle(newTextArea).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(1, 2, 3)"
+PASS testBlock.querySelectorAll(":read-write").length is 1
+PASS testBlock.querySelector(":read-write") is newTextArea
+PASS testBlock.querySelectorAll(":read-only").length is 0
+PASS testBlock.querySelector(":read-only") is null
+PASS getComputedStyle(newTextArea).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(255, 255, 255)"
+PASS testBlock.querySelectorAll(":read-write").length is 0
+PASS testBlock.querySelector(":read-write") is null
+PASS testBlock.querySelectorAll(":read-only").length is 1
+PASS testBlock.querySelector(":read-only") is newTextArea
+PASS getComputedStyle(newTextArea).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(1, 2, 3)"
+PASS testBlock.querySelectorAll(":read-write").length is 1
+PASS testBlock.querySelector(":read-write") is newTextArea
+PASS testBlock.querySelectorAll(":read-only").length is 0
+PASS testBlock.querySelector(":read-only") is null
+PASS getComputedStyle(newTextArea).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(255, 255, 255)"
+PASS testBlock.querySelectorAll(":read-write").length is 0
+PASS testBlock.querySelector(":read-write") is null
+PASS testBlock.querySelectorAll(":read-only").length is 1
+PASS testBlock.querySelector(":read-only") is newTextArea
+PASS getComputedStyle(newTextArea).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(1, 2, 3)"
+PASS testBlock.querySelectorAll(":read-write").length is 1
+PASS testBlock.querySelector(":read-write") is newTextArea
+PASS testBlock.querySelectorAll(":read-only").length is 0
+PASS testBlock.querySelector(":read-only") is null
+PASS getComputedStyle(newTextArea).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(255, 255, 255)"
+PASS testBlock.querySelectorAll(":read-write").length is 0
+PASS testBlock.querySelector(":read-write") is null
+PASS testBlock.querySelectorAll(":read-only").length is 1
+PASS testBlock.querySelector(":read-only") is newTextArea
+PASS getComputedStyle(newTextArea).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(1, 2, 3)"
+PASS testBlock.querySelectorAll(":read-write").length is 1
+PASS testBlock.querySelector(":read-write") is newTextArea
+PASS testBlock.querySelectorAll(":read-only").length is 0
+PASS testBlock.querySelector(":read-only") is null
+PASS getComputedStyle(newTextArea).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(255, 255, 255)"
+PASS testBlock.querySelectorAll(":read-write").length is 0
+PASS testBlock.querySelector(":read-write") is null
+PASS testBlock.querySelectorAll(":read-only").length is 1
+PASS testBlock.querySelector(":read-only") is newTextArea
+PASS getComputedStyle(newTextArea).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(1, 2, 3)"
+PASS testBlock.querySelectorAll(":read-write").length is 1
+PASS testBlock.querySelector(":read-write") is newTextArea
+PASS testBlock.querySelectorAll(":read-only").length is 0
+PASS testBlock.querySelector(":read-only") is null
+PASS getComputedStyle(newTextArea).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(255, 255, 255)"
+PASS testBlock.querySelectorAll(":read-write").length is 0
+PASS testBlock.querySelector(":read-write") is null
+PASS testBlock.querySelectorAll(":read-only").length is 1
+PASS testBlock.querySelector(":read-only") is newTextArea
+PASS getComputedStyle(newTextArea).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(1, 2, 3)"
+PASS testBlock.querySelectorAll(":read-write").length is 1
+PASS testBlock.querySelector(":read-write") is newTextArea
+PASS testBlock.querySelectorAll(":read-only").length is 0
+PASS testBlock.querySelector(":read-only") is null
+PASS getComputedStyle(newTextArea).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(newTextArea).backgroundColor is "rgb(255, 255, 255)"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/selectors/read-only-read-write-textarea-basics.html b/LayoutTests/fast/selectors/read-only-read-write-textarea-basics.html
new file mode 100644 (file)
index 0000000..71b13a2
--- /dev/null
@@ -0,0 +1,168 @@
+<!doctype html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<style>
+textarea {
+    background-color: white;
+    color: black;
+}
+textarea:read-only {
+    background-color: rgb(1, 2, 3);
+}
+textarea:read-write {
+    color: rgb(4, 5, 6);
+}
+</style>
+</head>
+<body>
+    <div style="display:none" id="test-block">
+        <textarea id="initial-state"></textarea>
+
+        <textarea id="readonly-defined" readonly></textarea>
+        <textarea id="readonly-set-empty" readonly=""></textarea>
+        <textarea id="readonly-set-readonly" readonly="readonly"></textarea>
+
+        <textarea id="readonly-set-true" readonly="true"></textarea>
+        <textarea id="readonly-set-false" readonly="false"></textarea>
+        <textarea id="readonly-set-disabled" readonly="disabled"></textarea>
+
+        <textarea id="disabled-defined" disabled></textarea>
+        <textarea id="disabled-set-empty" disabled=""></textarea>
+        <textarea id="disabled-set-disabled" disabled="disabled"></textarea>
+
+        <textarea id="disabled-set-true" disabled="true"></textarea>
+        <textarea id="disabled-set-false" disabled="false"></textarea>
+        <textarea id="disabled-set-readonly" disabled="readonly"></textarea>
+
+        <textarea id="readonly-and-disabled-defined" readonly disabled></textarea>
+        <textarea id="readonly-and-disabled-set-empty" readonly="" disabled=""></textarea>
+    </div>
+</body>
+<script>
+description('Test the basic features of ":read-only", ":read-write" on the &lttextarea&gt; element. The definition is that ":read-write" is matches for "textarea elements that do not have a readonly attribute, and that are not disabled"');
+
+// First, let's test the static initialization of the parameters.
+function testQuerySelector(selector, expectedMatch) {
+    shouldBe("document.querySelectorAll(\"" + selector + "\").length", "" + expectedMatch.length);
+
+    for (var i = 0; i < expectedMatch.length; ++i)
+        shouldBeEqualToString("document.querySelectorAll(\"" + selector + "\")[" + i + "].id", expectedMatch[i]);
+}
+
+function testStyle(isReadOnly, expectedMatch) {
+    for (var i = 0; i < expectedMatch.length; ++i) {
+        shouldBeEqualToString("getComputedStyle(document.getElementById(\"" + expectedMatch[i] + "\")).backgroundColor", isReadOnly ? "rgb(1, 2, 3)" : "rgb(255, 255, 255)");
+        shouldBeEqualToString("getComputedStyle(document.getElementById(\"" + expectedMatch[i] + "\")).color", isReadOnly ? "rgb(0, 0, 0)" : "rgb(4, 5, 6)");
+    }
+}
+
+var elementsMatchingReadWrite = ["initial-state"];
+var elementsMatchingReadOnly = ["readonly-defined", "readonly-set-empty", "readonly-set-readonly", "readonly-set-true", "readonly-set-false", "readonly-set-disabled", "disabled-defined", "disabled-set-empty", "disabled-set-disabled", "disabled-set-true", "disabled-set-false", "disabled-set-readonly", "readonly-and-disabled-defined", "readonly-and-disabled-set-empty"];
+
+testQuerySelector("textarea:read-write", elementsMatchingReadWrite);
+testQuerySelector("textarea:read-only", elementsMatchingReadOnly);
+testStyle(false, elementsMatchingReadWrite);
+testStyle(true, elementsMatchingReadOnly);
+
+
+// Same Jazz, but updating through JavaScript instead.
+var testBlock = document.getElementById("test-block");
+testBlock.innerHTML = "";
+
+var newTextArea = document.createElement("textarea");
+testBlock.appendChild(newTextArea);
+
+function testProperties(isReadOnly) {
+    shouldBe('testBlock.querySelectorAll(":read-write").length', isReadOnly ? "0" : "1");
+    shouldBe('testBlock.querySelector(":read-write")', isReadOnly ? "null" : "newTextArea");
+    shouldBe('testBlock.querySelectorAll(":read-only").length', isReadOnly ? "1" : "0");
+    shouldBe('testBlock.querySelector(":read-only")', isReadOnly ? "newTextArea" : "null");
+    shouldBeEqualToString("getComputedStyle(newTextArea).color", isReadOnly ? "rgb(0, 0, 0)" : "rgb(4, 5, 6)");
+    shouldBeEqualToString("getComputedStyle(newTextArea).backgroundColor", isReadOnly ? "rgb(1, 2, 3)" : "rgb(255, 255, 255)");
+}
+
+// Initially the text area is read-write.
+testProperties(false);
+
+// Setting read only through the API. Anything that evaluates to "true" makes the text area read only.
+newTextArea.readOnly = true;
+testProperties(true);
+
+newTextArea.readOnly = false;
+testProperties(false);
+
+newTextArea.readOnly = "foobar";
+testProperties(true);
+
+newTextArea.readOnly = "";
+testProperties(false);
+
+newTextArea.readOnly = newTextArea;
+testProperties(true);
+
+newTextArea.readOnly = null;
+testProperties(false);
+
+newTextArea.readOnly = 69;
+testProperties(true);
+
+newTextArea.readOnly = undefined;
+testProperties(false);
+
+newTextArea.disabled = true;
+testProperties(true);
+
+newTextArea.disabled = false;
+testProperties(false);
+
+newTextArea.disabled = "foobar";
+testProperties(true);
+
+newTextArea.disabled = "";
+testProperties(false);
+
+newTextArea.disabled = newTextArea;
+testProperties(true);
+
+newTextArea.disabled = null;
+testProperties(false);
+
+newTextArea.disabled = 69;
+testProperties(true);
+
+newTextArea.disabled = undefined;
+testProperties(false);
+
+function testAttribute(attribute, value)
+{
+    newTextArea.setAttribute(attribute, value);
+    testProperties(true);
+    newTextArea.removeAttribute(attribute);
+    testProperties(false);
+}
+
+// Setting the value through attributes.
+newTextArea.setAttribute("readonly");
+testProperties(true);
+newTextArea.removeAttribute("readonly");
+testProperties(false);
+
+testAttribute("readonly", "");
+testAttribute("readonly", "true");
+testAttribute("readonly", "false");
+testAttribute("readonly", "foobar");
+
+newTextArea.setAttribute("disabled");
+testProperties(true);
+newTextArea.removeAttribute("disabled");
+testProperties(false);
+
+testAttribute("disabled", "");
+testAttribute("disabled", "true");
+testAttribute("disabled", "false");
+testAttribute("disabled", "foobar");
+
+</script>
+<script src="../../resources/js-test-post.js"></script>
+</html>
diff --git a/LayoutTests/fast/selectors/read-only-read-write-textarea-in-fieldset-expected.txt b/LayoutTests/fast/selectors/read-only-read-write-textarea-in-fieldset-expected.txt
new file mode 100644 (file)
index 0000000..8257752
--- /dev/null
@@ -0,0 +1,29 @@
+Test the basic features of ":read-only", ":read-write" on the <textarea> element. The definition is that ":read-write" is matches for "textarea elements that do not have a readonly attribute, and that are not disabled". In a fieldset, all elements that are not part of the legend are disabled if the fieldset is disabled.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS document.querySelectorAll("textarea:read-write").length is 4
+PASS document.querySelectorAll("textarea:read-write")[0].id is "textarea1"
+PASS document.querySelectorAll("textarea:read-write")[1].id is "textarea2"
+PASS document.querySelectorAll("textarea:read-write")[2].id is "textarea3"
+PASS document.querySelectorAll("textarea:read-write")[3].id is "textarea5"
+PASS document.querySelectorAll("textarea:read-only").length is 2
+PASS document.querySelectorAll("textarea:read-only")[0].id is "textarea4"
+PASS document.querySelectorAll("textarea:read-only")[1].id is "textarea6"
+PASS getComputedStyle(document.getElementById('textarea1')).backgroundColor is "rgb(255, 255, 255)"
+PASS getComputedStyle(document.getElementById('textarea1')).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById('textarea2')).backgroundColor is "rgb(255, 255, 255)"
+PASS getComputedStyle(document.getElementById('textarea2')).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById('textarea3')).backgroundColor is "rgb(255, 255, 255)"
+PASS getComputedStyle(document.getElementById('textarea3')).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById('textarea4')).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.getElementById('textarea4')).color is "rgb(0, 0, 0)"
+PASS getComputedStyle(document.getElementById('textarea5')).backgroundColor is "rgb(255, 255, 255)"
+PASS getComputedStyle(document.getElementById('textarea5')).color is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.getElementById('textarea6')).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.getElementById('textarea6')).color is "rgb(0, 0, 0)"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/selectors/read-only-read-write-textarea-in-fieldset.html b/LayoutTests/fast/selectors/read-only-read-write-textarea-in-fieldset.html
new file mode 100644 (file)
index 0000000..0ab71db
--- /dev/null
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<style>
+textarea {
+    background-color: white;
+    color: black;
+}
+textarea:read-only {
+    background-color: rgb(1, 2, 3);
+}
+textarea:read-write {
+    color: rgb(4, 5, 6);
+}
+</style>
+</head>
+<body>
+    <div style="display:none">
+        <fieldset>
+            <legend>Legend!<textarea id="textarea1"></textarea></legend>
+            <textarea id="textarea2"></textarea>
+        </fieldset>
+
+        <fieldset disabled>
+            <legend>Legend!<textarea id="textarea3"></textarea></legend>
+            <textarea id="textarea4"></textarea>
+        </fieldset>
+
+        <fieldset id="disabled-dynamically">
+            <legend>Legend!<textarea id="textarea5"></textarea></legend>
+            <textarea id="textarea6"></textarea>
+        </fieldset>
+    </div>
+</body>
+<script>
+description('Test the basic features of ":read-only", ":read-write" on the &lttextarea&gt; element. The definition is that ":read-write" is matches for "textarea elements that do not have a readonly attribute, and that are not disabled". In a fieldset, all elements that are not part of the legend are disabled if the fieldset is disabled.');
+
+document.getElementById("disabled-dynamically").disabled = true;
+
+shouldBe("document.querySelectorAll(\"textarea:read-write\").length", "4");
+shouldBeEqualToString("document.querySelectorAll(\"textarea:read-write\")[0].id", "textarea1");
+shouldBeEqualToString("document.querySelectorAll(\"textarea:read-write\")[1].id", "textarea2");
+shouldBeEqualToString("document.querySelectorAll(\"textarea:read-write\")[2].id", "textarea3");
+shouldBeEqualToString("document.querySelectorAll(\"textarea:read-write\")[3].id", "textarea5");
+
+shouldBe("document.querySelectorAll(\"textarea:read-only\").length", "2");
+shouldBeEqualToString("document.querySelectorAll(\"textarea:read-only\")[0].id", "textarea4");
+shouldBeEqualToString("document.querySelectorAll(\"textarea:read-only\")[1].id", "textarea6");
+
+shouldBeEqualToString("getComputedStyle(document.getElementById('textarea1')).backgroundColor", "rgb(255, 255, 255)");
+shouldBeEqualToString("getComputedStyle(document.getElementById('textarea1')).color", "rgb(4, 5, 6)");
+
+shouldBeEqualToString("getComputedStyle(document.getElementById('textarea2')).backgroundColor", "rgb(255, 255, 255)");
+shouldBeEqualToString("getComputedStyle(document.getElementById('textarea2')).color", "rgb(4, 5, 6)");
+
+shouldBeEqualToString("getComputedStyle(document.getElementById('textarea3')).backgroundColor", "rgb(255, 255, 255)");
+shouldBeEqualToString("getComputedStyle(document.getElementById('textarea3')).color", "rgb(4, 5, 6)");
+
+shouldBeEqualToString("getComputedStyle(document.getElementById('textarea4')).backgroundColor", "rgb(1, 2, 3)");
+shouldBeEqualToString("getComputedStyle(document.getElementById('textarea4')).color", "rgb(0, 0, 0)");
+
+shouldBeEqualToString("getComputedStyle(document.getElementById('textarea5')).backgroundColor", "rgb(255, 255, 255)");
+shouldBeEqualToString("getComputedStyle(document.getElementById('textarea5')).color", "rgb(4, 5, 6)");
+
+shouldBeEqualToString("getComputedStyle(document.getElementById('textarea6')).backgroundColor", "rgb(1, 2, 3)");
+shouldBeEqualToString("getComputedStyle(document.getElementById('textarea6')).color", "rgb(0, 0, 0)");
+
+</script>
+<script src="../../resources/js-test-post.js"></script>
+</html>
index 4a20b52..09548b8 100644 (file)
@@ -1,3 +1,60 @@
+2014-09-05  Benjamin Poulain  <benjamin@webkit.org>
+
+        Update the current matching of :read-only and :read-write to the latest spec
+        https://bugs.webkit.org/show_bug.cgi?id=136566
+
+        Reviewed by Antti Koivisto.
+
+        WebKit's implementation of :read-only and :read-write dated from 2008 and
+        it was based on the web form spec (http://www.w3.org/TR/web-forms-2/).
+        That spec is very dead now.
+
+        There are new definitions of :read-only and :read-write in three specs:
+        -the HTML living spec: http://www.whatwg.org/specs/web-apps/current-work/multipage/scripting.html#selector-read-only
+        -Selectors level 4: http://dev.w3.org/csswg/selectors4/#rw-pseudos
+        -CSS 3 UI: http://www.w3.org/TR/css3-ui/
+
+        All the definitions say about the same thing. The definitions of Selector Level 4 and
+        CSS 3 UI are very vague and poorly worded. I used the HTML when something was ambiguous.
+
+        In the new definitions, :read-only and :read-write are opposite. It is no longer possible to
+        match both selector simultaneously for the same element.
+        Consequently, I got rid of Element:matchesReadOnlyPseudoClass(). Matching :read-only is now equivalent
+        to :not(:read-write).
+
+        The existing definition of :read-write was matching the spec so I could reuse that.
+
+        There is one more part to the new spec that is not addressed here: the pseudo class :read-write should
+        now also match arbitrary editable HTMLElement (e.g. an element with contenteditable). This will be fixed
+        in a follow up.
+
+        Tests: fast/css/read-only-read-write-input-basics.html
+               fast/css/read-only-read-write-textarea-basics.html
+               fast/selectors/read-only-read-write-input-basics.html
+               fast/selectors/read-only-read-write-input-in-fieldset.html
+               fast/selectors/read-only-read-write-textarea-basics.html
+               fast/selectors/read-only-read-write-textarea-in-fieldset.html
+
+        * css/SelectorCheckerTestFunctions.h:
+        (WebCore::matchesReadOnlyPseudoClass):
+        * dom/Element.cpp:
+        (WebCore::Element::matchesReadOnlyPseudoClass): Deleted.
+        * dom/Element.h:
+        * html/HTMLInputElement.cpp:
+        (WebCore::HTMLInputElement::matchesReadOnlyPseudoClass): Deleted.
+        * html/HTMLInputElement.h:
+        * html/HTMLTextAreaElement.cpp:
+        (WebCore::HTMLTextAreaElement::matchesReadOnlyPseudoClass): Deleted.
+        * html/HTMLTextAreaElement.h:
+        * html/shadow/SliderThumbElement.cpp:
+        (WebCore::SliderThumbElement::matchesReadOnlyPseudoClass): Deleted.
+        * html/shadow/SliderThumbElement.h:
+        * html/shadow/SpinButtonElement.cpp:
+        (WebCore::SpinButtonElement::matchesReadOnlyPseudoClass): Deleted.
+        * html/shadow/SpinButtonElement.h:
+        * rendering/RenderTheme.cpp:
+        (WebCore::RenderTheme::isReadOnlyControl):
+
 2014-09-05  Andreas Kling  <akling@apple.com>
 
         CTTE: SVGResourcesCache should only allow RenderElements.
index 98ffa19..cd70bbf 100644 (file)
@@ -156,7 +156,7 @@ inline bool matchesLangPseudoClass(const Element* element, AtomicStringImpl* fil
 
 ALWAYS_INLINE bool matchesReadOnlyPseudoClass(const Element* element)
 {
-    return element->matchesReadOnlyPseudoClass();
+    return !element->matchesReadWritePseudoClass();
 }
 
 ALWAYS_INLINE bool matchesReadWritePseudoClass(const Element* element)
index d1fd647..d9ee675 100644 (file)
@@ -2304,11 +2304,6 @@ unsigned Element::childElementCount() const
     return count;
 }
 
-bool Element::matchesReadOnlyPseudoClass() const
-{
-    return false;
-}
-
 bool Element::matchesReadWritePseudoClass() const
 {
     return false;
index 256ad4f..7a6463e 100644 (file)
@@ -450,7 +450,6 @@ public:
     Element* nextElementSibling() const;
     unsigned childElementCount() const;
 
-    virtual bool matchesReadOnlyPseudoClass() const;
     virtual bool matchesReadWritePseudoClass() const;
     bool matches(const String& selectors, ExceptionCode&);
     virtual bool shouldAppearIndeterminate() const;
index 3e66853..15d0340 100644 (file)
@@ -1368,11 +1368,6 @@ bool HTMLInputElement::isRequiredFormControl() const
     return m_inputType->supportsRequired() && isRequired();
 }
 
-bool HTMLInputElement::matchesReadOnlyPseudoClass() const
-{
-    return m_inputType->supportsReadOnly() && isReadOnly();
-}
-
 bool HTMLInputElement::matchesReadWritePseudoClass() const
 {
     return m_inputType->supportsReadOnly() && !isDisabledOrReadOnly();
index b2bb547..e3885bc 100644 (file)
@@ -308,7 +308,6 @@ public:
 
     static Vector<FileChooserFileInfo> filesFromFileInputFormControlState(const FormControlState&);
 
-    virtual bool matchesReadOnlyPseudoClass() const override;
     virtual bool matchesReadWritePseudoClass() const override;
     virtual void setRangeText(const String& replacement, ExceptionCode&) override;
     virtual void setRangeText(const String& replacement, unsigned start, unsigned end, const String& selectionMode, ExceptionCode&) override;
index 7920c2e..304594d 100644 (file)
@@ -515,11 +515,6 @@ HTMLElement* HTMLTextAreaElement::placeholderElement() const
     return m_placeholder;
 }
 
-bool HTMLTextAreaElement::matchesReadOnlyPseudoClass() const
-{
-    return isReadOnly();
-}
-
 bool HTMLTextAreaElement::matchesReadWritePseudoClass() const
 {
     return !isDisabledOrReadOnly();
index 1598910..a801f99 100644 (file)
@@ -112,7 +112,6 @@ private:
     virtual void accessKeyAction(bool sendMouseEvents) override;
 
     virtual bool shouldUseInputMethod() override;
-    virtual bool matchesReadOnlyPseudoClass() const override;
     virtual bool matchesReadWritePseudoClass() const override;
 
     bool valueMissing(const String& value) const { return isRequiredFormControl() && !isDisabledOrReadOnly() && value.isEmpty(); }
index da84ebd..f18daa5 100644 (file)
@@ -225,12 +225,6 @@ bool SliderThumbElement::isDisabledFormControl() const
     return !input || input->isDisabledFormControl();
 }
 
-bool SliderThumbElement::matchesReadOnlyPseudoClass() const
-{
-    HTMLInputElement* input = hostInput();
-    return input && input->matchesReadOnlyPseudoClass();
-}
-
 bool SliderThumbElement::matchesReadWritePseudoClass() const
 {
     HTMLInputElement* input = hostInput();
index 01450da..a04a057 100644 (file)
@@ -64,7 +64,6 @@ private:
     virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) override;
     virtual PassRefPtr<Element> cloneElementWithoutAttributesAndChildren() override;
     virtual bool isDisabledFormControl() const override;
-    virtual bool matchesReadOnlyPseudoClass() const override;
     virtual bool matchesReadWritePseudoClass() const override;
     virtual Element* focusDelegate() override;
 #if !PLATFORM(IOS)
index d1f7bf5..503b35b 100644 (file)
@@ -199,11 +199,6 @@ void SpinButtonElement::releaseCapture()
     }
 }
 
-bool SpinButtonElement::matchesReadOnlyPseudoClass() const
-{
-    return shadowHost()->matchesReadOnlyPseudoClass();
-}
-
 bool SpinButtonElement::matchesReadWritePseudoClass() const
 {
     return shadowHost()->matchesReadWritePseudoClass();
index 5ad4197..b607fd0 100644 (file)
@@ -72,7 +72,6 @@ private:
     virtual void willDetachRenderers() override;
     virtual bool isSpinButtonElement() const override { return true; }
     virtual bool isDisabledFormControl() const override { return shadowHost() && shadowHost()->isDisabledFormControl(); }
-    virtual bool matchesReadOnlyPseudoClass() const override;
     virtual bool matchesReadWritePseudoClass() const override;
     virtual void defaultEventHandler(Event*) override;
     virtual void willOpenPopup() override;
index 3836ed8..0ebde5d 100644 (file)
@@ -847,7 +847,7 @@ bool RenderTheme::isReadOnlyControl(const RenderObject& o) const
     Node* node = o.node();
     if (!node || !node->isElementNode())
         return false;
-    return toElement(node)->matchesReadOnlyPseudoClass();
+    return !toElement(node)->matchesReadWritePseudoClass();
 }
 
 bool RenderTheme::isHovered(const RenderObject& o) const