| <!doctype html> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/common/utils.js"></script> |
| <script src="/common/get-host-info.sub.js"></script> |
| <script src="/shared-storage/resources/util.js"></script> |
| <script src="/fenced-frame/resources/utils.js"></script> |
| |
| <body> |
| <script> |
| 'use strict'; |
| |
| promise_test(async () => { |
| const ancestorKey = token(); |
| |
| let fencedFrameConfig0 = await runSelectURL( |
| "/shared-storage/resources/embedder-context-inner.https.html", |
| [ancestorKey], true); |
| assert_true(validateSelectURLResult(fencedFrameConfig0, true)); |
| |
| fencedFrameConfig0.setSharedStorageContext("here is some context"); |
| |
| attachFencedFrame(fencedFrameConfig0, 'opaque-ads'); |
| const result0 = await nextValueFromServer(ancestorKey); |
| assert_equals(result0, "embedder_context_inner_loaded"); |
| |
| let url0 = generateURL("/shared-storage/resources/frame0.html", [ancestorKey]); |
| let url1 = generateURL("/shared-storage/resources/frame1.html", [ancestorKey]); |
| |
| let fencedFrameConfig1 = await sharedStorage.selectURL( |
| "verify-key-value", [{url: url0}, {url: url1}], |
| {data: {'expectedKey': ancestorKey, |
| 'expectedValue': 'here is some context'}, |
| resolveToConfig: true, |
| keepAlive: true}); |
| assert_true(validateSelectURLResult(fencedFrameConfig1, true)); |
| |
| attachFencedFrame(fencedFrameConfig1, 'opaque-ads'); |
| const result1 = await nextValueFromServer(ancestorKey); |
| assert_equals(result1, "frame1_loaded"); |
| }, 'embedder sharedStorage.context'); |
| |
| promise_test(async () => { |
| const ancestorKey = token(); |
| |
| let fencedFrameConfig0 = await runSelectURL( |
| "/shared-storage/resources/embedder-context-inner.https.html", |
| [ancestorKey], true); |
| assert_true(validateSelectURLResult(fencedFrameConfig0, true)); |
| |
| attachFencedFrame(fencedFrameConfig0, 'opaque-ads'); |
| const result0 = await nextValueFromServer(ancestorKey); |
| assert_equals(result0, "embedder_context_inner_loaded"); |
| |
| let url0 = generateURL("/shared-storage/resources/frame0.html", [ancestorKey]); |
| let url1 = generateURL("/shared-storage/resources/frame1.html", [ancestorKey]); |
| |
| let fencedFrameConfig1 = await sharedStorage.selectURL( |
| "verify-key-value", [{url: url0}, {url: url1}], |
| {data: {'expectedKey': ancestorKey, 'expectedValue': 'undefined'}, |
| resolveToConfig: true, |
| keepAlive: true}); |
| assert_true(validateSelectURLResult(fencedFrameConfig1, true)); |
| |
| attachFencedFrame(fencedFrameConfig1, 'opaque-ads'); |
| const result1 = await nextValueFromServer(ancestorKey); |
| assert_equals(result1, "frame1_loaded"); |
| }, 'undefined embedder sharedStorage.context'); |
| |
| promise_test(async () => { |
| const outerKey = token(); |
| const innerKey0 = token(); |
| const innerKey1 = token(); |
| |
| let fencedFrameConfig0 = await runSelectURL( |
| "/shared-storage/resources/embedder-context-nested-inner.https.html", |
| [outerKey, innerKey0, innerKey1], true); |
| assert_true(validateSelectURLResult(fencedFrameConfig0, true)); |
| |
| fencedFrameConfig0.setSharedStorageContext("here is some context"); |
| |
| attachFencedFrame(fencedFrameConfig0, 'opaque-ads'); |
| const result0 = await nextValueFromServer(outerKey); |
| assert_equals(result0, "embedder_context_nested_inner_loaded"); |
| |
| let url0 = generateURL("/shared-storage/resources/frame0.html", [outerKey]); |
| let url1 = generateURL("/shared-storage/resources/frame1.html", [outerKey]); |
| |
| let fencedFrameConfig1 = await sharedStorage.selectURL( |
| "verify-key-value", [{url: url0}, {url: url1}], |
| {data: {'expectedKey': innerKey0, |
| 'expectedValue': 'here is some context'}, |
| resolveToConfig: true}); |
| assert_true(validateSelectURLResult(fencedFrameConfig1, true)); |
| |
| attachFencedFrame(fencedFrameConfig1, 'opaque-ads'); |
| const result1 = await nextValueFromServer(outerKey); |
| assert_equals(result1, "frame1_loaded"); |
| |
| let iframeURL = |
| generateURL("/shared-storage/resources/embedder-context-nested-iframe.https.html", |
| [outerKey, innerKey1]); |
| iframeURL = getRemoteOriginURL(iframeURL); |
| attachIFrame(iframeURL); |
| const result2 = await nextValueFromServer(outerKey); |
| assert_equals(result2, "embedder_context_nested_iframe_loaded"); |
| }, 'embedder sharedStorage.context with nested iframes'); |
| </script> |
| </body> |