Index: third_party/WebKit/LayoutTests/imported/wpt/clear-site-data/navigation.html |
diff --git a/third_party/WebKit/LayoutTests/imported/wpt/clear-site-data/navigation.html b/third_party/WebKit/LayoutTests/imported/wpt/clear-site-data/navigation.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..cd0f83e17f02567522624968d1ac62f029d126eb |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/imported/wpt/clear-site-data/navigation.html |
@@ -0,0 +1,66 @@ |
+<!DOCTYPE html> |
+<html> |
+ <head> |
+ <script src="/resources/testharness.js"></script> |
+ <script src="/resources/testharnessreport.js"></script> |
+ <script src="support/test_utils.js"></script> |
+ </head> |
+ |
+ <body> |
+ <script> |
+ /** Ensures that all datatypes are nonempty. */ |
+ function populateDatatypes() { |
+ return Promise.all(TestUtils.DATATYPES.map(function(datatype) { |
+ return datatype.add().then(datatype.isEmpty().then(function(isEmpty) { |
+ assert_false( |
+ isEmpty, |
+ datatype.name + " has to be nonempty before the test starts."); |
+ })); |
+ })); |
+ } |
+ |
+ /** |
+ * @param Array.<Array.<Datatype>> combination A combination of datatypes. |
+ * @param Dict.<string, boolean> report A map between a datatype name and |
+ * whether it is empty. |
+ * @return boolean Whether all datatypes are empty if and only if they are |
+ * included in the |combination|. |
+ */ |
+ function verifyDatatypes(combination, report) { |
+ TestUtils.DATATYPES.forEach(function(datatype) { |
+ if (combination.indexOf(datatype) != -1) { |
+ assert_true( |
+ report[datatype.name], |
+ datatype.name + " should have been cleared."); |
+ } else { |
+ assert_false( |
+ report[datatype.name], |
+ datatype.name + " should NOT have been cleared."); |
+ } |
+ }) |
+ } |
+ |
+ TestUtils.COMBINATIONS.forEach(function(combination) { |
+ var test_name = |
+ "Clear datatypes on navigation: " + |
+ combination.map(function(e) { return e.name; }).join(", "); |
+ |
+ promise_test(function(test) { |
+ return populateDatatypes() |
+ .then(function() { |
+ // Navigate to a resource with a Clear-Site-Data header in an |
+ // iframe, then verify that the correct types have been deleted. |
+ return new Promise(function(resolve, reject) { |
+ window.addEventListener("message", resolve); |
+ var iframe = document.createElement("iframe"); |
+ iframe.src = TestUtils.getClearSiteDataUrl(combination); |
+ document.body.appendChild(iframe); |
+ }).then(function(messageEvent) { |
+ verifyDatatypes(combination, messageEvent.data); |
+ }); |
+ }); |
+ }, test_name); |
+ }); |
+ </script> |
+ </body> |
+</html> |