<!doctype html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/utils.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 () => {
  let module_content = `
    class TestURLSelectionOperation {
      async run(urls, data) {
        if (data && data.hasOwnProperty('mockResult')) {
          return data['mockResult'];
        }

        return -1;
      }
    }

    register('test-url-selection-operation', TestURLSelectionOperation);
  `

  let blob = new Blob([module_content], {type: 'text/javascript'});

  await sharedStorage.worklet.addModule(URL.createObjectURL(blob));

  const ancestor_key = token();
  let url0 = generateURL("/shared-storage/resources/frame0.html",
                         [ancestor_key]);
  let url1 = generateURL("/shared-storage/resources/frame1.html",
                         [ancestor_key]);

  let select_url_result1 = await sharedStorage.selectURL(
    "test-url-selection-operation", [{url: url0}, {url: url1}],
    {data: {'mockResult': 1}, resolveToConfig: true,
     keepAlive: true});
  assert_true(validateSelectURLResult(select_url_result1, /*resolve_to_config=*/true));
  attachFencedFrame(select_url_result1, 'opaque-ads');
  const result1 = await nextValueFromServer(ancestor_key);
  assert_equals(result1, "frame1_loaded");
}, 'addModule() with a Blob URL');

</script>
</body>
