| <html> |
| <head> |
| <title>Test that the plugin unavailability indicator accurately knows if it's clipped.</title> |
| <script> |
| if (window.testRunner) { |
| testRunner.setBlockAllPlugins(true); |
| testRunner.waitUntilDone(); |
| testRunner.dumpAsText(); |
| } |
| |
| function log(text) { |
| logElement.appendChild(document.createTextNode(text)); |
| logElement.appendChild(document.createElement("br")); |
| } |
| |
| function testObscuredPlugins(className, expectedObscured) { |
| var failedAnyTest = false; |
| var expectedObscuredPlugins = document.getElementsByClassName(className); |
| for (var i = 0; i < expectedObscuredPlugins.length; i++) { |
| var plugin = expectedObscuredPlugins[i]; |
| var pluginName = plugin.id; |
| |
| if (plugin.tagName == "IFRAME") |
| plugin = plugin.contentDocument.getElementById("testPlugin"); |
| |
| var obscured = internals.isPluginUnavailabilityIndicatorObscured(plugin); |
| var passed = expectedObscured == obscured; |
| if (!passed) |
| failedAnyTest = true; |
| |
| log("'" + pluginName + "' was obscured: " + obscured + " (expected " + expectedObscured + "; " + (passed ? "PASS" : "FAIL") + ")"); |
| }; |
| |
| return failedAnyTest; |
| } |
| |
| window.onload = function () { |
| logElement = document.getElementById("log"); |
| |
| if (!window.internals) |
| return; |
| |
| setTimeout(function () { |
| log("Expected to be obscured:"); |
| var failedAnyExpectedObscuredTest = testObscuredPlugins("shouldBeObscured", true); |
| log("") |
| log("Expected to not be obscured:"); |
| var failedAnyExpectedVisibleTest = testObscuredPlugins("shouldNotBeObscured", false); |
| log(""); |
| log("Passed all tests: " + !(failedAnyExpectedVisibleTest || failedAnyExpectedObscuredTest)); |
| |
| // Remove the plugins so that we don't have tons of whitespace in the output. |
| while(document.body.firstChild && document.body.firstChild.id != "log") { |
| document.body.removeChild(document.body.firstChild); |
| } |
| |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| }, 0); |
| } |
| </script> |
| <style> |
| embed { |
| display: block; |
| width: 500px; |
| height: 500px; |
| } |
| |
| .cover { |
| background-color: green; |
| width: 100%; |
| height: 100%; |
| position: absolute; |
| top: 0; |
| } |
| |
| .container { |
| width: 500px; |
| height: 500px; |
| position: relative; |
| } |
| </style> |
| <body> |
| <embed id="large" class="shouldNotBeObscured" type="application/x-webkit-test-netscape"></embed> |
| <embed id="tooSmall" class="shouldBeObscured" type="application/x-webkit-test-netscape" style="width: 10px; height: 10px;"></embed> |
| <embed id="emptyRect" class="shouldBeObscured" type="application/x-webkit-test-netscape" style="width: 0; height: 0;"></embed> |
| |
| <!-- Obscured by opacity --> |
| <embed id="lowOpacity" class="shouldBeObscured" type="application/x-webkit-test-netscape" style="opacity: 0.05;"></embed> |
| <div style="opacity: 0.05;"> |
| <embed id="lowOpacityParent" class="shouldBeObscured" type="application/x-webkit-test-netscape"></embed> |
| </div> |
| <div style="opacity: 0.2;"> |
| <div style="opacity: 0.2;"> |
| <embed id="stackedLowOpacityParents" class="shouldBeObscured" type="application/x-webkit-test-netscape"></embed> |
| </div> |
| </div> |
| <div style="opacity: 0.9;"> |
| <div style="opacity: 0.9;"> |
| <embed id="stackedHighOpacityParents" class="shouldNotBeObscured" type="application/x-webkit-test-netscape"></embed> |
| </div> |
| </div> |
| |
| <!-- Clipped by overflow --> |
| <div style="width: 20px; overflow: hidden;"> |
| <embed id="clippedByParent" class="shouldBeObscured" type="application/x-webkit-test-netscape"></embed> |
| </div> |
| <div style="width: 20px; overflow: visible;"> |
| <embed id="notClippedByParent" class="shouldNotBeObscured" type="application/x-webkit-test-netscape"></embed> |
| </div> |
| |
| <!-- Hidden --> |
| <embed id="visibilityHidden" class="shouldBeObscured" type="application/x-webkit-test-netscape" style="visibility: hidden;"></embed> |
| <div style="visibility: hidden;"> |
| <embed id="visibilityHiddenOnParent" class="shouldBeObscured" type="application/x-webkit-test-netscape"></embed> |
| </div> |
| |
| <!-- Clicks blocked via pointer-events: none --> |
| <embed id="pointerEventsBlocked" class="shouldBeObscured" type="application/x-webkit-test-netscape" style="pointer-events: none;"></embed> |
| <div style="pointer-events: none;"> |
| <embed id="pointerEventsBlockedOnParent" class="shouldBeObscured" type="application/x-webkit-test-netscape"></embed> |
| </div> |
| <div class="container"> |
| <embed id="pointerEventsBlockedOnObscuringSibling" class="shouldBeObscured" type="application/x-webkit-test-netscape"></embed> |
| <div class="cover" style="pointer-events: none;"></div> |
| </div> |
| |
| <!-- Obscured by siblings --> |
| <div class="container"> |
| <embed id="leftHalfObscured" class="shouldBeObscured" type="application/x-webkit-test-netscape"></embed> |
| <div class="cover" style="width: 50%;"></div> |
| </div> |
| <div class="container"> |
| <embed id="rightHalfObscured" class="shouldBeObscured" type="application/x-webkit-test-netscape"></embed> |
| <div class="cover" style="width: 50%; left: 50%;"></div> |
| </div> |
| <div class="container"> |
| <embed id="topHalfObscured" class="shouldBeObscured" type="application/x-webkit-test-netscape"></embed> |
| <div class="cover" style="height: 50%;"></div> |
| </div> |
| <div class="container"> |
| <embed id="bottomHalfObscured" class="shouldBeObscured" type="application/x-webkit-test-netscape"></embed> |
| <div class="cover" style="height: 50%; top: 50%;"></div> |
| </div> |
| <div class="container"> |
| <embed id="topQuarterObscured" class="shouldNotBeObscured" type="application/x-webkit-test-netscape"></embed> |
| <div class="cover" style="height: 25%;"></div> |
| </div> |
| <div class="container"> |
| <embed id="bottomQuarterObscured" class="shouldNotBeObscured" type="application/x-webkit-test-netscape"></embed> |
| <div class="cover" style="height: 25%; top: 75%;"></div> |
| </div> |
| <div class="container"> |
| <embed id="centerObscured" class="shouldBeObscured" type="application/x-webkit-test-netscape"></embed> |
| <div class="cover" style="width: 20%; height: 20%; top: 40%; left: 40%;"></div> |
| </div> |
| |
| <!-- Obscured by scroll clipping --> |
| <embed id="offScreenTopLeft" class="shouldBeObscured" type="application/x-webkit-test-netscape" style="position: absolute; top: -1000px; left: -1000px;"></embed> |
| <embed id="offScreenTop" class="shouldBeObscured" type="application/x-webkit-test-netscape" style="position: absolute; top: -1000px; left: 0;"></embed> |
| <embed id="offScreenLeft" class="shouldBeObscured" type="application/x-webkit-test-netscape" style="position: absolute; top: 0; left: -1000px;"></embed> |
| |
| <!-- Obscured by overflow clipping --> |
| <div style="overflow: scroll; width: 100px; height: 100px;"> |
| <embed id="overflowScrollObscured" class="shouldBeObscured" type="application/x-webkit-test-netscape"></embed> |
| </div> |
| |
| <!-- Obscured by iframe clipping --> |
| <iframe id="smallIFrame" src="resources/plugin-page.html" style="width: 100px; height: 100px;" class="shouldBeObscured"></iframe> |
| <iframe id="largeIFrame" src="resources/plugin-page.html" style="width: 500px; height: 500px;" class="shouldNotBeObscured"></iframe> |
| |
| <div id="log"></div> |
| </body> |
| </html> |