tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 98d5e7ce92a5436a03dacf644345a8dfbbcdcf19
parent 889fef37653ed5df6efb30fa6c5b140fae381221
Author: Nathan Memmott <memmott@chromium.org>
Date:   Thu, 27 Nov 2025 15:28:21 +0000

Bug 2002649 [wpt PR 56313] - Revert "[Built-In APIs] Enable kAIRelaxUserActivationReqs by default.", a=testonly

Automatic update from web-platform-tests
Revert "[Built-In APIs] Enable kAIRelaxUserActivationReqs by default."

This reverts commit 145c695c20b8f2d96f8238633cf45624ca0439a0.

Reason for revert: Hasn't been approved yet.

Original change's description:
> [Built-In APIs] Enable kAIRelaxUserActivationReqs by default.
>
> This change enables the AIRelaxUserActivationReqs feature flag by
> default, relaxing user activation requirements for Built-In AI APIs. The
> virtual test suite and associated tests designed to verify behavior when
> this feature was disabled have been removed. Existing user activation
> tests are updated to reflect that user activation is now present during
> the test execution.
>
> Bug: 454435239
> Change-Id: Ic4b56d6e09bc8ca91f29619faaad409ba9b9c9ca
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7186624
> Reviewed-by: Reilly Grant <reillyg@chromium.org>
> Reviewed-by: Nathan Memmott <memmott@chromium.org>
> Reviewed-by: Kent Tamura <tkent@chromium.org>
> Commit-Queue: Isaac Ahouma <iahouma@google.com>
> Cr-Commit-Position: refs/heads/main@{#1550111}

Bug: 454435239
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Change-Id: I751b0b2cb9eddf30b3594210df45562b177e3e9d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7205389
Commit-Queue: Nathan Memmott <memmott@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Christian Biesinger <cbiesinger@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1550638}

--

wpt-commits: 54f854a0ea7887cc82a3991421cf78a37a6f64f1
wpt-pr: 56313

Diffstat:
Mtesting/web-platform/tests/ai/language-model/language-model-create-sticky-user-activation.tentative.https.window.js | 4+++-
Atesting/web-platform/tests/ai/language-model/language-model-create-transient-user-activation.tentative.https.window.js | 31+++++++++++++++++++++++++++++++
Mtesting/web-platform/tests/ai/language-model/language-model-create-user-activation.tentative.https.window.js | 7++-----
Mtesting/web-platform/tests/ai/language_detection/detector.https.window.js | 7++-----
Mtesting/web-platform/tests/ai/resources/util.js | 6------
Mtesting/web-platform/tests/ai/rewriter/rewriter-create-user-activation.tentative.https.window.js | 8++------
Mtesting/web-platform/tests/ai/summarizer/summarizer-create-user-activation.tentative.https.window.js | 8++------
Mtesting/web-platform/tests/ai/writer/writer-create-user-activation.tentative.https.window.js | 8++------
8 files changed, 44 insertions(+), 35 deletions(-)

diff --git a/testing/web-platform/tests/ai/language-model/language-model-create-sticky-user-activation.tentative.https.window.js b/testing/web-platform/tests/ai/language-model/language-model-create-sticky-user-activation.tentative.https.window.js @@ -21,7 +21,9 @@ promise_test(async t => { await test_driver.bless('Enable LanguageModel create()'); // Consume transient activation. - consumeTransientUserActivation(); + const win = window.open('about:blank', '_blank'); + if (win) + win.close(); assert_true(navigator.userActivation.hasBeenActive); assert_false(navigator.userActivation.isActive); diff --git a/testing/web-platform/tests/ai/language-model/language-model-create-transient-user-activation.tentative.https.window.js b/testing/web-platform/tests/ai/language-model/language-model-create-transient-user-activation.tentative.https.window.js @@ -0,0 +1,31 @@ +// META: title=LanguageModel.create() User Activation Tests +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +// META: script=../resources/util.js +// META: timeout=long + +'use strict'; + +promise_test(async t => { + assert_implements_optional( + await LanguageModel.availability() == 'downloadable'); + assert_false(navigator.userActivation.isActive); + return promise_rejects_dom( + t, 'NotAllowedError', LanguageModel.create(), + 'LanguageModel.create() should fail without any user activation.'); +}, 'Create fails without user activation'); + +promise_test(async t => { + assert_implements_optional( + await LanguageModel.availability() == 'downloadable'); + + await test_driver.bless('Enable LanguageModel create()'); + + // Consume transient activation. + const win = window.open('about:blank', '_blank'); + win.close(); + assert_true(navigator.userActivation.hasBeenActive); + assert_false(navigator.userActivation.isActive); + + return promise_rejects_dom(t, 'NotAllowedError', LanguageModel.create()); +}, 'Create fails with sticky activation when availability is "downloadable"'); diff --git a/testing/web-platform/tests/ai/language-model/language-model-create-user-activation.tentative.https.window.js b/testing/web-platform/tests/ai/language-model/language-model-create-user-activation.tentative.https.window.js @@ -15,12 +15,9 @@ promise_test(async t => { assert_false(navigator.userActivation.isActive); await promise_rejects_dom(t, 'NotAllowedError', LanguageModel.create()); await test_driver.bless('LanguageModel.create', LanguageModel.create); - // User activation is not consumed by the create call. - assert_true(navigator.userActivation.isActive); - consumeTransientUserActivation(); - // Create does not require transient user activation. + // Create does not require user activation when availability is 'available'. assert_equals(await LanguageModel.availability(), 'available'); assert_false(navigator.userActivation.isActive); await LanguageModel.create(); -}, 'Create requires sticky user activation when availability is "downloadable"'); +}, 'Create requires user activation when availability is "downloadable"'); diff --git a/testing/web-platform/tests/ai/language_detection/detector.https.window.js b/testing/web-platform/tests/ai/language_detection/detector.https.window.js @@ -15,15 +15,12 @@ promise_test(async t => { assert_false(navigator.userActivation.isActive); await promise_rejects_dom(t, 'NotAllowedError', LanguageDetector.create()); await test_driver.bless('LanguageDetector.create', LanguageDetector.create); - // User activation is not consumed by the create call. - assert_true(navigator.userActivation.isActive); - consumeTransientUserActivation(); - // Create does not require transient user activation. + // Create does not require user activation when availability is 'available'. assert_equals(await LanguageDetector.availability(), 'available'); assert_false(navigator.userActivation.isActive); await LanguageDetector.create(); -}, 'Create requires sticky user activation when availability is "downloadable"'); +}, 'Create requires user activation when availability is "downloadable"'); promise_test(async t => { const detector = await createLanguageDetector(); diff --git a/testing/web-platform/tests/ai/resources/util.js b/testing/web-platform/tests/ai/resources/util.js @@ -287,9 +287,3 @@ async function testCreateAbort(t, createMethod, options, instanceMethods) { await promise_rejects_exactly(t, error, promise); } } - -function consumeTransientUserActivation() { - const win = window.open('about:blank', '_blank'); - if (win) - win.close(); -} diff --git a/testing/web-platform/tests/ai/rewriter/rewriter-create-user-activation.tentative.https.window.js b/testing/web-platform/tests/ai/rewriter/rewriter-create-user-activation.tentative.https.window.js @@ -1,6 +1,5 @@ // META: title=Rewriter Create User Activation // META: script=/resources/testdriver.js -// META: script=../resources/util.js // META: timeout=long 'use strict'; @@ -14,12 +13,9 @@ promise_test(async t => { assert_false(navigator.userActivation.isActive); await promise_rejects_dom(t, 'NotAllowedError', Rewriter.create()); await test_driver.bless('Rewriter.create', Rewriter.create); - // User activation is not consumed by the first create call. - assert_true(navigator.userActivation.isActive); - consumeTransientUserActivation(); - // Create does not require transient user activation. + // Create does not require user activation when availability is 'available'. assert_equals(await Rewriter.availability(), 'available'); assert_false(navigator.userActivation.isActive); await Rewriter.create(); -}, 'Create requires sticky user activation when availability is "downloadable"'); +}, 'Create requires user activation when availability is "downloadable"'); diff --git a/testing/web-platform/tests/ai/summarizer/summarizer-create-user-activation.tentative.https.window.js b/testing/web-platform/tests/ai/summarizer/summarizer-create-user-activation.tentative.https.window.js @@ -1,6 +1,5 @@ // META: title=Summarizer Create User Activation // META: script=/resources/testdriver.js -// META: script=../resources/util.js // META: timeout=long 'use strict'; @@ -14,12 +13,9 @@ promise_test(async t => { assert_false(navigator.userActivation.isActive); await promise_rejects_dom(t, 'NotAllowedError', Summarizer.create()); await test_driver.bless('Summarizer.create', Summarizer.create); - // User activation is not consumed by the create call. - assert_true(navigator.userActivation.isActive); - consumeTransientUserActivation(); - // Create does not require transient user activation. + // Create does not require user activation when availability is 'available'. assert_equals(await Summarizer.availability(), 'available'); assert_false(navigator.userActivation.isActive); await Summarizer.create(); -}, 'Create requires sticky user activation when availability is "downloadable"'); +}, 'Create requires user activation when availability is "downloadable"'); diff --git a/testing/web-platform/tests/ai/writer/writer-create-user-activation.tentative.https.window.js b/testing/web-platform/tests/ai/writer/writer-create-user-activation.tentative.https.window.js @@ -1,6 +1,5 @@ // META: title=Writer Create User Activation // META: script=/resources/testdriver.js -// META: script=../resources/util.js // META: timeout=long 'use strict'; @@ -14,12 +13,9 @@ promise_test(async t => { assert_false(navigator.userActivation.isActive); await promise_rejects_dom(t, 'NotAllowedError', Writer.create()); await test_driver.bless('Writer.create', Writer.create); - // User activation is not consumed by the create call. - assert_true(navigator.userActivation.isActive); - consumeTransientUserActivation(); - // Create does not require transient user activation. + // Create does not require user activation when availability is 'available'. assert_equals(await Writer.availability(), 'available'); assert_false(navigator.userActivation.isActive); await Writer.create(); -}, 'Create requires sticky user activation when availability is "downloadable"'); +}, 'Create requires user activation when availability is "downloadable"');