| <!doctype html> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script src="/common/utils.js"></script> | |
| <script src="/shared-storage-selecturl-limit/resources/utils.js"></script> | |
| <script src="/shared-storage/resources/util.js"></script> | |
| <script src="/fenced-frame/resources/utils.js"></script> | |
| <body> | |
| <script> | |
| 'use strict'; | |
| async function init() { | |
| const url = new URL(location.href); | |
| const queryName = url.searchParams.get("query") ? | |
| url.searchParams.get("query") : ""; | |
| const mockResult = url.searchParams.get("mockresult") ? | |
| parseInt(url.searchParams.get("mockresult")) : 1; | |
| const numUrls = url.searchParams.get("urlcount") ? | |
| parseInt(url.searchParams.get("urlcount")) : 8; | |
| const moduleName = url.searchParams.get("module") ? | |
| url.searchParams.get("module") : "simple-module"; | |
| const operationName = url.searchParams.get("operation") ? | |
| url.searchParams.get("operation") : "test-url-selection-operation"; | |
| const expectSaved = url.searchParams.get("expectsaved") ? | |
| (url.searchParams.get("expectsaved") !== "false") : false; | |
| const expectSuccess = url.searchParams.get("expectsuccess") ? | |
| (url.searchParams.get("expectsuccess") !== "false") : true; | |
| const innerKey = token(); | |
| let parentOrOpener = window.opener || window.parent; | |
| // Note that we have set the site page bit limit to 6 and the overall page | |
| // bit limit to 12. | |
| const urls = generateUrls(numUrls, "/shared-storage/resources/frame", | |
| [innerKey]); | |
| await sharedStorage.worklet.addModule( | |
| `/shared-storage/resources/${moduleName}.js`); | |
| function processSavedQuery(optionalData) { | |
| return sharedStorage.selectURL( | |
| operationName, urls, | |
| {data: optionalData, resolveToConfig: true, savedQuery: queryName}); | |
| } | |
| const expected_result = expectSuccess ? `frame${mockResult}_loaded` : | |
| `frame0_loaded`; | |
| let frameMessage = {selectURLStatus: `success`, origin: `${location.origin}`, | |
| query: queryName, mockResultIndex: mockResult, | |
| module: moduleName, operation: operationName, | |
| urlCount: numUrls, savedExpected: expectSaved, | |
| successExpected: expectSuccess}; | |
| // When we expect the query to be saved, omit specfying the index to return | |
| // in the data passed to `selectURL`, so that we can see that this data is | |
| // not relevant in the saved case. | |
| const queryData = expectSaved ? {} : {'mockResult': mockResult}; | |
| let config0 = await processSavedQuery(queryData); | |
| assert_true(config0 instanceof FencedFrameConfig); | |
| attachFencedFrame(config0, 'opaque-ads'); | |
| try { | |
| const result0 = await nextValueFromServer(innerKey); | |
| assert_equals(result0, expected_result); | |
| } catch (error) { | |
| frameMessage.selectURLStatus = `${error}`; | |
| parentOrOpener.postMessage(frameMessage, "*"); | |
| return; | |
| } | |
| // No errors were caught, so this portion of the test succeeded. | |
| parentOrOpener.postMessage(frameMessage, "*"); | |
| } | |
| init(); | |
| </script> | |
| </body> |