| <!DOCTYPE html> |
| <body> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/resources/testdriver.js"></script> |
| <script src="/resources/testdriver-vendor.js"></script> |
| <script src="support/clear-cache-helper.sub.js"></script> |
| <script> |
| "use strict"; |
| |
| const CLEAR_ORIGIN_CACHE = { |
| clear: "cache", |
| } |
| |
| promise_test(test => { |
| const TEST_SITE = { |
| iframe: { |
| cache: true, |
| } |
| } |
| return testCacheClear(test, [TEST_SITE, CLEAR_ORIGIN_CACHE, TEST_SITE], assert_not_equals); |
| }, "same site data also gets cleared in iframe"); |
| |
| promise_test(test => { |
| const TEST_SITE = { |
| iframe: { |
| cache: true, |
| secondOrigin: true, |
| } |
| } |
| return testCacheClear(test, [TEST_SITE, CLEAR_ORIGIN_CACHE, TEST_SITE], assert_equals); |
| }, "cross origin iframe data doesn't get cleared"); |
| |
| promise_test(test => { |
| const TEST_SITE = { |
| cache: true, |
| } |
| const CLEAR_ORIGIN_CACHE = { |
| iframe: { |
| clear: "cache", |
| secondOrigin: true, |
| } |
| } |
| return testCacheClear(test, [TEST_SITE, CLEAR_ORIGIN_CACHE, TEST_SITE], assert_equals); |
| }, "clear in cross origin iframe doesn't affect embedder"); |
| |
| promise_test(test => { |
| const TEST_SITE = { |
| cache: true, |
| subdomain: true, |
| } |
| return testCacheClear(test, [TEST_SITE, CLEAR_ORIGIN_CACHE, TEST_SITE], assert_equals); |
| }, "clearing cache doesn't affect subdomain"); |
| |
| promise_test(test => { |
| const TEST_SITE = { |
| iframe: { |
| secondOrigin: true, |
| cache: true, |
| } |
| } |
| const TEST_SITE_CLEAR_IFRAME = { |
| iframe: { |
| secondOrigin: true, |
| clear: "all", |
| } |
| } |
| return testCacheClear(test, [TEST_SITE, TEST_SITE_CLEAR_IFRAME, TEST_SITE], assert_not_equals); |
| }, "clear in cross origin iframe clears data from that iframe"); |
| |
| promise_test(test => { |
| const TEST_SITE = { |
| cache: true |
| }; |
| const TEST_SITE_CLEAR_IFRAME = { |
| secondOrigin: true, |
| iframe: { |
| clear: "cache", |
| } |
| } |
| return testCacheClear(test, [TEST_SITE, TEST_SITE_CLEAR_IFRAME, TEST_SITE], assert_equals); |
| }, "clear in cross origin iframe doesn't clear unpartitioned data from that cross origin"); |
| |
| promise_test(test => { |
| const TEST_SITE = { |
| secondOrigin: true, |
| iframe: { |
| cache: true, |
| } |
| } |
| |
| const TEST_SITE_CLEAR_IFRAME = { |
| clear: "cache" |
| }; |
| return testCacheClear(test, [TEST_SITE, TEST_SITE_CLEAR_IFRAME, TEST_SITE], assert_equals); |
| }, "clear in unpartitioned context doesn't clear partitioned data"); |
| |
| promise_test(test => { |
| const TEST_SITE = { |
| iframe: { |
| secondOrigin: true, |
| iframe: { |
| cache: true, |
| } |
| } |
| } |
| return testCacheClear(test, [TEST_SITE, CLEAR_ORIGIN_CACHE, TEST_SITE], assert_equals); |
| }, "clear in unpartitioned context doesn't clear double partitioned data with intermediate cross origin"); |
| |
| promise_test(test => { |
| const TEST_SITE = { |
| cache: true, |
| }; |
| |
| const TEST_CLEAR_IFRAME_IFRAME = { |
| iframe: { |
| secondOrigin: true, |
| iframe: { |
| clear: "cache", |
| } |
| } |
| } |
| return testCacheClear(test, [TEST_SITE, TEST_CLEAR_IFRAME_IFRAME, TEST_SITE], assert_equals); |
| }, "clear in double partitioned with intermediate cross origin context doesn't clear unpartitioned data"); |
| |
| promise_test(test => { |
| const TEST_SITE = { |
| iframe: { |
| secondOrigin: true, |
| iframe: { |
| cache: true, |
| } |
| } |
| } |
| |
| const TEST_CLEAR_IFRAME_IFRAME = { |
| iframe: { |
| secondOrigin: true, |
| iframe: { |
| clear: "cache", |
| } |
| } |
| } |
| return testCacheClear(test, [TEST_SITE, TEST_CLEAR_IFRAME_IFRAME, TEST_SITE], assert_not_equals); |
| }, "clear double partitioned context with intermediate cross origin clears that partitioned data"); |
| |
| </script> |
| </body> |
| </html> |