Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(28)

Unified Diff: third_party/WebKit/LayoutTests/fast/css/pseudo-default-dynamic.html

Issue 1768913002: Dynamic updation of checked and selected attributes should reflect correct :default status (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated as per review comments Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/html/HTMLInputElement.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/LayoutTests/fast/css/pseudo-default-dynamic.html
diff --git a/third_party/WebKit/LayoutTests/fast/css/pseudo-default-dynamic.html b/third_party/WebKit/LayoutTests/fast/css/pseudo-default-dynamic.html
index 73a2893c04ba11c79872b53db37e2d79bbca6d21..202af00e96c849ec0e2454eb8cf508d01b5364de 100644
--- a/third_party/WebKit/LayoutTests/fast/css/pseudo-default-dynamic.html
+++ b/third_party/WebKit/LayoutTests/fast/css/pseudo-default-dynamic.html
@@ -4,8 +4,8 @@
<div id="log"></div>
<div id="container"></div>
<style>
-button, input { background: red; }
-button:default, input:default { background: green; }
+button, input, option { background: red; }
+button:default, input:default, option:default { background: green; }
</style>
<script>
// TODO(tkent): This should be merged to web-platform-tests/html/semantics/selectors/pseudo-classes/default.html.
@@ -86,4 +86,83 @@ test(function() {
assert_equals(background('second'), NOT_DEFAULT);
}, 'Adding a button by form content attribute should update the default button.');
+test(function() {
+ container.innerHTML = '<form><input type=checkbox checked id=c1><input type=text checked id=t1></form>';
+ assert_equals(background('c1'), DEFAULT);
+ assert_equals(background('t1'), NOT_DEFAULT);
+ document.querySelector('#c1').type = 'text';
+ document.querySelector('#t1').type = 'checkbox';
+ assert_equals(background('c1'), NOT_DEFAULT);
+ assert_equals(background('t1'), DEFAULT);
+}, 'Updating type attribute of :default checkbox should update default status');
+
+test(function() {
+ container.innerHTML = '<form><input type=radio checked id=r1><input type=text checked id=t1></form>';
+ assert_equals(background('r1'), DEFAULT);
+ assert_equals(background('t1'), NOT_DEFAULT);
+ document.querySelector('#r1').type = 'text';
+ document.querySelector('#t1').type = 'radio';
+ assert_equals(background('r1'), NOT_DEFAULT);
+ assert_equals(background('t1'), DEFAULT);
+}, 'Updating type attribute of :default radio should update default status');
+
+test(function() {
+ container.innerHTML = '<form><input type=checkbox checked id=c1><input type=radio checked id=r1></form>';
+ assert_equals(background('c1'), DEFAULT);
+ assert_equals(background('r1'), DEFAULT);
+ document.querySelector('#c1').defaultChecked = false;
+ document.querySelector('#r1').defaultChecked = false;
+ assert_equals(background('c1'), NOT_DEFAULT);
+ assert_equals(background('r1'), NOT_DEFAULT);
+}, 'Updating the checked attribute of :default checkbox or radio should update default status');
+
+test(function() {
+ container.innerHTML = '<form><input type=checkbox id=c1><input type=radio id=r1></form>';
+ assert_equals(background('c1'), NOT_DEFAULT);
+ assert_equals(background('r1'), NOT_DEFAULT);
+ if (window.eventSender){
+ var checkbox = document.querySelector('#c1');
+ checkbox.focus();
+ eventSender.keyDown(' ');
+ assert_equals(checkbox.checked, true);
+ assert_equals(background('c1'), NOT_DEFAULT);
+
+ var radio = document.querySelector('#r1');
+ radio.focus();
+ eventSender.keyDown(' ');
+ assert_equals(radio.checked, true);
+ assert_equals(background('r1'), NOT_DEFAULT);
+ }
+ document.querySelector('#c1').setAttribute('checked', 'checked');
+ document.querySelector('#r1').setAttribute('checked', 'checked');
+ assert_equals(background('c1'), DEFAULT);
+ assert_equals(background('r1'), DEFAULT);
+
+ document.querySelector('#c1').removeAttribute('checked');
+ document.querySelector('#r1').removeAttribute('checked');
+ assert_equals(background('c1'), NOT_DEFAULT);
+ assert_equals(background('r1'), NOT_DEFAULT);
+}, 'Dynamically updating checked status or setting checked attribute should reflect correct default status');
+
+test(function() {
+ container.innerHTML = '<form><select><option selected id=o1>1</option><option id=o2>2</option></select></form>';
+ assert_equals(background('o1'), DEFAULT);
+ assert_equals(background('o2'), NOT_DEFAULT);
+ document.querySelector('#o1').defaultSelected = false;
+ document.querySelector('#o2').defaultSelected = true;
+ assert_equals(background('o1'), NOT_DEFAULT);
+ assert_equals(background('o2'), DEFAULT);
+}, 'Updating the selected attribute of :default option element should update default status');
+
+test(function() {
+ container.innerHTML = '<form><select><option id=o1></option><option id=o2></option</select></form>';
+ assert_equals(background('o1'), NOT_DEFAULT);
+ document.querySelector('#o1').selected = true;
+ assert_equals(background('o1'), NOT_DEFAULT);
+ document.querySelector('#o1').setAttribute('selected', 'selected');
+ assert_equals(background('o1'), DEFAULT);
+ document.querySelector('#o1').removeAttribute('selected');
+ assert_equals(background('o1'), NOT_DEFAULT);
+}, 'Dynamically updating selected status or setting selected attribute should reflect correct default status');
+
</script>
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/html/HTMLInputElement.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698