Automatic update from web-platform-tests WebMCP: Remove the ModelContextTesting API This CL removes the ModelContextTesting API. It's a reland of https://crrev.com/c/7895790, which was reverted in https://crrev.com/c/7959699. The CL was reverted due to the `virtual/webmcp/inspector-protocol/webmcp/log-tool-calls.js` timing out on overloaded bots. That test originally asserted that the modelContextTesting API could abort a long-running (10 second!) tool. Since aborting a tool call for the production modelContext API is still in progress (see https://crbug.com/481899636), any CL replacing usages of modelContextTesting with modelContext has to accept that the long-running tool will run to completion, instead of being aborted correctly. On particularly busy bots, the 10-second tool could exceed the bot's timeout window, and fail with a timeout. This CL adjusts the 10-second tool to a 50-ms tool, so that it runs quickly. This is kind of fudging that particular inspector test, but the timeout will be reverted back to its long 10-second timeout once https://crrev.com/c/8025300 lands, implementing tool abort support for the production modelContext API. R=beaufort.francois@gmail.com, nasko Bug: 515272366 Change-Id: I695ad7479d1b90de3d1edb705e71532e4b160957 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8062045 Reviewed-by: Fr <beaufort.francois@gmail.com> Reviewed-by: Dave Tapuska <dtapuska@chromium.org> Commit-Queue: Dominic Farolino <dom@chromium.org> Cr-Commit-Position: refs/heads/main@{#1658818} -- wpt-commits: ed76dd926b0ca18aafb188452f9ccf746be8bff4 wpt-pr: 61137
60 lines
1.7 KiB
HTML
60 lines
1.7 KiB
HTML
<!DOCTYPE html>
|
|
<title>WebMCP: executeTool on <select multiple> dispatches events</title>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="/webmcp/resources/helpers.js"></script>
|
|
|
|
<!-- We'll submit the form to this frame. -->
|
|
<iframe name=hidden_iframe style="display:none"></iframe>
|
|
|
|
<form
|
|
toolname=select_fruits
|
|
tooldescription="Select fruits you like"
|
|
toolautosubmit
|
|
target=hidden_iframe
|
|
action="about:blank">
|
|
<select id=fruits name=fruits multiple>
|
|
<option value=apple>Apple</option>
|
|
<option value=orange>Orange</option>
|
|
<option value=banana>Banana</option>
|
|
</select>
|
|
<input type=submit>
|
|
</form>
|
|
|
|
<script>
|
|
promise_test(async t => {
|
|
const tool = await waitForTool('select_fruits');
|
|
assert_true(!!tool, 'Tool should be registered');
|
|
|
|
let fruits = document.getElementById('fruits');
|
|
let inputEventCount = 0;
|
|
let changeEventCount = 0;
|
|
|
|
fruits.addEventListener('input', () => {
|
|
inputEventCount++;
|
|
});
|
|
fruits.addEventListener('change', () => {
|
|
changeEventCount++;
|
|
});
|
|
|
|
let inputArgs = JSON.stringify({ fruits: ['apple', 'banana'] });
|
|
|
|
// This should dispatch events.
|
|
await document.modelContext.executeTool(tool, inputArgs);
|
|
|
|
assert_true(fruits.options[0].selected);
|
|
assert_false(fruits.options[1].selected);
|
|
assert_true(fruits.options[2].selected);
|
|
|
|
assert_equals(inputEventCount, 1);
|
|
assert_equals(changeEventCount, 1);
|
|
|
|
// Executing with the same arguments again does not trigger events.
|
|
await document.modelContext.executeTool(tool, inputArgs);
|
|
|
|
assert_equals(inputEventCount, 1);
|
|
assert_equals(changeEventCount, 1);
|
|
}, 'executeTool() on a <select multiple> dispatches input and change events');
|
|
|
|
</script>
|