Commit 372a389b authored by Nathan Memmott's avatar Nathan Memmott Committed by aborovova@mozilla.com
Browse files

Bug 1966782 [wpt PR 52579] - Translator: Composite instance method abort...

Bug 1966782 [wpt PR 52579] - Translator: Composite instance method abort signals with the create abort signal,

Automatic update from web-platform-tests
Translator: Composite instance method abort signals with the create abort signal

This composites Translator's translate, translateStreaming, and
measureInputUsage's abort signals with the abort signal used to create
the Translator. As part of this, the destroy signal is aligned with spec
and rejects with AbortError instead of InvalidStateError.

Fixed: 399693771
Change-Id: I245082364c1f8a51ce7781027c04d941e0e4efb1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6553208


Reviewed-by: default avatarChristine Hollingsworth <christinesm@chromium.org>
Commit-Queue: Nathan Memmott <memmott@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1460965}

--

wpt-commits: 0b3673275ec1c3545c266a8ad32229e2de100bec
wpt-pr: 52579

Differential Revision: https://phabricator.services.mozilla.com/D250641
parent d7b08a83
Loading
Loading
Loading
Loading
+37 −8
Original line number Diff line number Diff line
@@ -57,14 +57,6 @@ promise_test(async t => {
  assert_equals(translator.targetLanguage, 'ja');
}, 'Translator: sourceLanguage and targetLanguage are equal to their respective option passed in to Translator.create.');

promise_test(async (t) => {
  const translator =
      await createTranslator({sourceLanguage: 'en', targetLanguage: 'ja'});
  translator.destroy();
  await promise_rejects_dom(
      t, 'InvalidStateError', translator.translate('hello'));
}, 'Translator.translate() fails after destroyed');

promise_test(async t => {
  const controller = new AbortController();
  controller.abort();
@@ -102,6 +94,43 @@ promise_test(async t => {
  });
}, 'Aborting Translator.translate().');

promise_test(async t => {
  const translator =
      await createTranslator({sourceLanguage: 'en', targetLanguage: 'ja'});

  const text = 'this string is in English';
  const promises =
      [translator.translate(text), translator.measureInputUsage(text)];

  translator.destroy();

  promises.push(translator.translate(text), translator.measureInputUsage(text));

  for (const promise of promises) {
    await promise_rejects_dom(t, 'AbortError', promise);
  }
}, 'Calling Translator.destroy() aborts calls to translate and measureInputUsage.');

promise_test(async t => {
  const controller = new AbortController();
  const translator = await createTranslator(
      {sourceLanguage: 'en', targetLanguage: 'ja', signal: controller.signal});

  const text = 'this string is in English';
  const promises =
      [translator.translate(text), translator.measureInputUsage(text)];

  const error = new Error('The create abort signal was aborted.');
  controller.abort(error);

  promises.push(translator.translate(text), translator.measureInputUsage(text));

  for (const promise of promises) {
    await promise_rejects_exactly(t, error, promise);
  }
}, 'Translator.create()\'s abort signal destroys its Translator after creation.');


promise_test(async t => {
  await testMonitor(
      createTranslator, {sourceLanguage: 'en', targetLanguage: 'ja'});