diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /dom/plugins/test/mochitest/test_clear_site_data.html | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'dom/plugins/test/mochitest/test_clear_site_data.html')
-rw-r--r-- | dom/plugins/test/mochitest/test_clear_site_data.html | 242 |
1 files changed, 242 insertions, 0 deletions
diff --git a/dom/plugins/test/mochitest/test_clear_site_data.html b/dom/plugins/test/mochitest/test_clear_site_data.html new file mode 100644 index 000000000..88ba937d5 --- /dev/null +++ b/dom/plugins/test/mochitest/test_clear_site_data.html @@ -0,0 +1,242 @@ +<html> +<head> + <title>NPAPI ClearSiteData/GetSitesWithData Functionality</title> + <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> + <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script> + <script type="application/javascript" src="plugin-utils.js"></script> +</head> +<body> + <script type="application/javascript"> + setTestPluginEnabledState(SpecialPowers.Ci.nsIPluginTag.STATE_ENABLED); + </script> + + <embed id="plugin1" type="application/x-test" width="200" height="200"></embed> + + <script class="testbody" type="application/javascript"> + SimpleTest.waitForExplicitFinish(); + + const pluginHostIface = Components.interfaces.nsIPluginHost; + var pluginHost = Components.classes["@mozilla.org/plugin/host;1"]. + getService(pluginHostIface); + const FLAG_CLEAR_ALL = pluginHostIface.FLAG_CLEAR_ALL; + const FLAG_CLEAR_CACHE = pluginHostIface.FLAG_CLEAR_CACHE; + + var p = document.getElementById("plugin1"); + + // Since we're running with chrome permissions, accessing the plugin wont + // synchronously spawn it -- wait for the async spawning to finish. + SimpleTest.executeSoon(function() { + // Make sure clearing by timerange is supported. + p.setSitesWithDataCapabilities(true); + ok(PluginUtils.withTestPlugin(runTest), "Test plugin found"); + }); + + function stored(needles) { + var something = pluginHost.siteHasData(this.pluginTag, null); + if (!needles) + return something; + + if (!something) + return false; + + for (var i = 0; i < needles.length; ++i) { + if (!pluginHost.siteHasData(this.pluginTag, needles[i])) + return false; + } + return true; + } + + function checkThrows(fn, result) { + try { + fn(); + throw new Error("bad exception"); + } catch (e) { + is(e.result, result, "Correct exception thrown"); + } + } + + function runTest(pluginTag) { + this.pluginTag = pluginTag; + p.setSitesWithData( + "foo.com:0:5," + + "foo.com:0:7," + + "bar.com:0:10," + + "baz.com:0:10," + + "foo.com:1:7," + + "qux.com:1:5," + + "quz.com:1:8" + ); + ok(stored(["foo.com","bar.com","baz.com","qux.com","quz.com"]), + "Data stored for sites"); + + // Clear nothing. + pluginHost.clearSiteData(pluginTag, null, FLAG_CLEAR_ALL, 4, {callback: function() { test1(); }}); + } + function test1() { + ok(stored(["foo.com","bar.com","baz.com","qux.com","quz.com"]), + "Data stored for sites"); + + pluginHost.clearSiteData(pluginTag, null, FLAG_CLEAR_CACHE, 4, {callback: function() { test2(); }}); + } + function test2() { + ok(stored(["foo.com","bar.com","baz.com","qux.com","quz.com"]), + "Data stored for sites"); + + // Clear cache data 5 seconds or older. + pluginHost.clearSiteData(pluginTag, null, FLAG_CLEAR_CACHE, 5, {callback: function() { test3(); }}); + } + function test3() { + ok(stored(["foo.com","bar.com","baz.com","quz.com"]), + "Data stored for sites"); + ok(!stored(["qux.com"]), "Data cleared for qux.com"); + // Clear cache data for foo.com, but leave non-cache data. + pluginHost.clearSiteData(pluginTag, "foo.com", FLAG_CLEAR_CACHE, 20, {callback: function() { test4(); }}); + } + function test4() { + ok(stored(["foo.com","bar.com","baz.com","quz.com"]), + "Data stored for sites"); + + // Clear all data 7 seconds or older. + pluginHost.clearSiteData(pluginTag, null, FLAG_CLEAR_ALL, 7, {callback: function() { test5(); }}); + } + function test5() { + ok(stored(["bar.com","baz.com","quz.com"]), "Data stored for sites"); + ok(!stored(["foo.com"]), "Data cleared for foo.com"); + ok(!stored(["qux.com"]), "Data cleared for qux.com"); + + // Clear all cache data. + pluginHost.clearSiteData(pluginTag, null, FLAG_CLEAR_CACHE, 20, {callback: function() { test6(); }}); + } + function test6() { + ok(stored(["bar.com","baz.com"]), "Data stored for sites"); + ok(!stored(["quz.com"]), "Data cleared for quz.com"); + + // Clear all data for bar.com. + pluginHost.clearSiteData(pluginTag, "bar.com", FLAG_CLEAR_ALL, 20, {callback: function(rv) { test7(rv); }}); + } + function test7(rv) { + ok(stored(["baz.com"]), "Data stored for baz.com"); + ok(!stored(["bar.com"]), "Data cleared for bar.com"); + + // Disable clearing by age. + p.setSitesWithDataCapabilities(false); + + pluginHost.clearSiteData(pluginTag, null, FLAG_CLEAR_ALL, 20, {callback: function(rv) { + is(rv, Components.results.NS_ERROR_PLUGIN_TIME_RANGE_NOT_SUPPORTED); + test8(rv); + }}); + } + function test8(rv) { + pluginHost.clearSiteData(pluginTag, null, FLAG_CLEAR_CACHE, 20, {callback: function(rv) { + is(rv, Components.results.NS_ERROR_PLUGIN_TIME_RANGE_NOT_SUPPORTED); + test9(rv); + }}); + } + function test9(rv) { + pluginHost.clearSiteData(pluginTag, "baz.com", FLAG_CLEAR_ALL, 20, {callback: function(rv) { + is(rv, Components.results.NS_ERROR_PLUGIN_TIME_RANGE_NOT_SUPPORTED); + test10(rv); + }}); + } + function test10(rv) { + pluginHost.clearSiteData(pluginTag, "baz.com", FLAG_CLEAR_CACHE, 20, {callback: function(rv) { + is(rv, Components.results.NS_ERROR_PLUGIN_TIME_RANGE_NOT_SUPPORTED); + test11(); + }}); + } + function test11() { + // Clear cache for baz.com and globally for all ages. + pluginHost.clearSiteData(pluginTag, "baz.com", FLAG_CLEAR_CACHE, -1, {callback: function(rv) { test12()}}); + } + function test12() { + pluginHost.clearSiteData(pluginTag, null, FLAG_CLEAR_CACHE, -1, {callback: function(rv) { test13()}}); + } + function test13() { + // Check that all of the above were no-ops. + ok(stored(["baz.com"]), "Data stored for baz.com"); + + // Clear everything for baz.com. + pluginHost.clearSiteData(pluginTag, "baz.com", FLAG_CLEAR_ALL, -1, {callback: function(rv) { test14()}}); + } + function test14() { + ok(!stored(["baz.com"]), "Data cleared for baz.com"); + ok(!stored(null), "All data cleared"); + + // Set data to test subdomains, IP literals, and 'localhost'-like hosts. + p.setSitesWithData( + "foo.com:0:0," + + "bar.foo.com:0:0," + + "baz.foo.com:0:0," + + "bar.com:0:0," + + "[192.168.1.1]:0:0," + + "localhost:0:0" + ); + ok(stored(["foo.com","nonexistent.foo.com","bar.com","192.168.1.1","localhost"]), + "Data stored for sites"); + + // Clear data for "foo.com" and its subdomains. + pluginHost.clearSiteData(pluginTag, "foo.com", FLAG_CLEAR_ALL, -1, {callback: function(rv) { test15()}}); + } + function test15() { + ok(stored(["bar.com","192.168.1.1","localhost"]), "Data stored for sites"); + ok(!stored(["foo.com"]), "Data cleared for foo.com"); + ok(!stored(["bar.foo.com"]), "Data cleared for subdomains of foo.com"); + + // Clear data for "bar.com" using a subdomain. + pluginHost.clearSiteData(pluginTag, "foo.bar.com", FLAG_CLEAR_ALL, -1, {callback: function(rv) { test16()}}); + } + function test16() { + ok(!stored(["bar.com"]), "Data cleared for bar.com"); + + // Clear data for "192.168.1.1". + pluginHost.clearSiteData(pluginTag, "192.168.1.1", FLAG_CLEAR_ALL, -1, {callback: function(rv) { test17()}}); + } + function test17() { + ok(!stored(["192.168.1.1"]), "Data cleared for 192.168.1.1"); + + // Clear data for "localhost". + pluginHost.clearSiteData(pluginTag, "localhost", FLAG_CLEAR_ALL, -1, {callback: function(rv) { test18()}}); + } + function test18() { + ok(!stored(null), "All data cleared"); + + // Set data to test international domains. + p.setSitesWithData( + "b\u00FCcher.es:0:0," + + "b\u00FCcher.uk:0:0," + + "xn--bcher-kva.NZ:0:0" + ); + // Check that both the ACE and UTF-8 representations register. + ok(stored(["b\u00FCcher.es","xn--bcher-kva.es","b\u00FCcher.uk","xn--bcher-kva.uk"]), + "Data stored for sites"); + + // Clear data for the UTF-8 version. + pluginHost.clearSiteData(pluginTag, "b\u00FCcher.es", FLAG_CLEAR_ALL, -1, {callback: function(rv) { test19()}}); + } + function test19() { + ok(!stored(["b\u00FCcher.es"]), "Data cleared for UTF-8 representation"); + ok(!stored(["xn--bcher-kva.es"]), "Data cleared for ACE representation"); + + // Clear data for the ACE version. + pluginHost.clearSiteData(pluginTag, "xn--bcher-kva.uk", FLAG_CLEAR_ALL, -1, {callback: function(rv) { test20()}}); + } + function test20() { + ok(!stored(["b\u00FCcher.uk"]), "Data cleared for UTF-8 representation"); + ok(!stored(["xn--bcher-kva.uk"]), "Data cleared for ACE representation"); + + // The NPAPI spec requires that the plugin report sites in normalized + // UTF-8. We do happen to normalize the result anyway, so while that's not + // strictly required, we test it here. + ok(stored(["b\u00FCcher.nz","xn--bcher-kva.nz"]), + "Data stored for sites"); + pluginHost.clearSiteData(pluginTag, "b\u00FCcher.nz", FLAG_CLEAR_ALL, -1, {callback: function(rv) { test21()}}); + } + function test21() { + ok(!stored(["b\u00FCcher.nz"]), "Data cleared for UTF-8 representation"); + ok(!stored(["xn--bcher-kva.nz"]), "Data cleared for ACE representation"); + ok(!stored(null), "All data cleared"); + SimpleTest.finish(); + } + </script> +</body> +</html> |