| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <title>hasFocus() outer</title> |
| <script> |
| var w = null; |
| var hadInitialFocus = false; |
| var hadLostFocus = false; |
| window.onmessage = function(e) { |
| if (e.data == "restored") { |
| if (hadInitialFocus && hadLostFocus) { |
| let verdict = document.hasFocus() ? "PASS" : "FAIL: hasFocus false"; |
| window.opener.postMessage(verdict, "*"); |
| } else { |
| window.opener.postMessage("FAIL: should have failed already", "*"); |
| } |
| } else if (e.data == "focused") { |
| w = window.open("hasfocus-other.html"); |
| } else if (e.data == "noblur") { |
| window.opener.postMessage("FAIL: no inner blur", "*"); |
| } else if (e.data == "opened") { |
| if (document.hasFocus()) { |
| w.close(); |
| window.opener.postMessage("FAIL: focus not lost when other window opened", "*"); |
| } else { |
| hadLostFocus = true; |
| window.frames[0].postMessage("hasfocus", "*"); |
| } |
| } else if (e.data == "close") { |
| w.close(); |
| } else if (e.data == "wrongfocus") { |
| w.close(); |
| window.opener.postMessage("FAIL: hasFocus was true in iframe", "*"); |
| } |
| } |
| window.onload = function() { |
| if (document.hasFocus()) { |
| hadInitialFocus = true; |
| window.frames[0].postMessage("focus", "*"); |
| } else { |
| window.opener.postMessage("FAIL: did not have initial focus", "*"); |
| } |
| } |
| </script> |
| </head> |
| <body> |
| <iframe src="hasfocus-inner.html"></iframe> |
| </body> |
| </html> |