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

Side by Side Diff: LayoutTests/fast/dom/shadow/focus-shadowhost-display-none.html

Issue 1148293010: Listen to focus change events instead of assuming they happen at next rAF (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <script src="../../../resources/js-test.js"></script> 2 <script src="../../../resources/js-test.js"></script>
3 <style> 3 <style>
4 div#host:focus { display: none; } 4 div#host:focus { display: none; }
5 </style> 5 </style>
6 <div id="host"></div> 6 <div id="host"></div>
7 <script> 7 <script>
8 description('Check if shadow host with display:none CSS rule for :focus works. crbug.com/482830'); 8 description('Check if shadow host with display:none CSS rule for :focus works. crbug.com/482830');
9 9
10 var root = host.createShadowRoot(); 10 var root = host.createShadowRoot();
11 var input = document.createElement('input'); 11 var input = document.createElement('input');
12 root.appendChild(input); 12 root.appendChild(input);
13 13
14 host.tabIndex = 0; 14 host.tabIndex = 0;
15 host.tabStop = true; 15 host.tabStop = true;
16 16
17 function testFocusShadowHost() { 17 function testFocusShadowHost() {
18 debug('when shadow host itself is focused, it should match display:none, los e focus then becomes display:block again.'); 18 debug('when shadow host itself is focused, it should match display:none, los e focus then becomes display:block again.');
19 return new Promise( 19 return new Promise(
20 function(resolve) { 20 function(resolve) {
21 host.focus(); 21 host.focus();
22 shouldBeEqualToString('window.getComputedStyle(host).display', 'none '); 22 shouldBeEqualToString('window.getComputedStyle(host).display', 'none ');
23 shouldBe('document.activeElement', 'host'); 23 shouldBe('document.activeElement', 'host');
24 shouldBeNull('root.activeElement'); 24 shouldBeNull('root.activeElement');
25 window.requestAnimationFrame(function() { 25
26 function onBlur() {
26 shouldBeEqualToString('window.getComputedStyle(host).display', ' block'); 27 shouldBeEqualToString('window.getComputedStyle(host).display', ' block');
27 shouldBe('document.activeElement', 'document.body'); 28 shouldBe('document.activeElement', 'document.body');
28 shouldBeNull('root.activeElement'); 29 shouldBeNull('root.activeElement');
30 host.removeEventListener('blur', onBlur);
29 resolve(); 31 resolve();
30 }); 32 }
33 host.addEventListener('blur', onBlur);
31 }); 34 });
32 } 35 }
33 36
34 function testFocusInsideShadowRoot() { 37 function testFocusInsideShadowRoot() {
35 debug('when shadow host with tabStop=false has focused element inside the sh adow, it should also match display:none, then lose focus and become display:bloc k again.'); 38 debug('when shadow host with tabStop=false has focused element inside the sh adow, it should also match display:none, then lose focus and become display:bloc k again.');
36 return new Promise( 39 return new Promise(
37 function(resolve) { 40 function(resolve) {
38 host.tabStop = false; 41 host.tabStop = false;
39 input.focus(); 42 input.focus();
40 shouldBeEqualToString('window.getComputedStyle(host).display', 'none '); 43 shouldBeEqualToString('window.getComputedStyle(host).display', 'none ');
41 shouldBe('document.activeElement', 'host'); 44 shouldBe('document.activeElement', 'host');
42 shouldBe('root.activeElement', 'input'); 45 shouldBe('root.activeElement', 'input');
43 46
44 window.requestAnimationFrame(function() { 47 function onBlur() {
45 shouldBeEqualToString('window.getComputedStyle(host).display', ' block'); 48 shouldBeEqualToString('window.getComputedStyle(host).display', ' block');
46 shouldBe('document.activeElement', 'document.body'); 49 shouldBe('document.activeElement', 'document.body');
47 shouldBeNull('root.activeElement'); 50 shouldBeNull('root.activeElement');
51 input.removeEventListener('blur', onBlur);
48 resolve(); 52 resolve();
49 }); 53 }
54 input.addEventListener('blur', onBlur);
50 }); 55 });
51 } 56 }
52 57
53 if (window.testRunner) { 58 if (window.testRunner) {
54 testFocusShadowHost().then(testFocusInsideShadowRoot).then(function(){ testR unner.notifyDone(); }); 59 testFocusShadowHost().then(testFocusInsideShadowRoot).then(function(){ testR unner.notifyDone(); });
55 testRunner.waitUntilDone(); 60 testRunner.waitUntilDone();
56 testRunner.dumpAsText(); 61 testRunner.dumpAsText();
57 } 62 }
58 </script> 63 </script>
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698