Skip to content

Commit

Permalink
Centralize on a single garbage collection helper
Browse files Browse the repository at this point in the history
  • Loading branch information
domenic authored Nov 18, 2022
1 parent ac893a3 commit e97fac4
Show file tree
Hide file tree
Showing 138 changed files with 1,307 additions and 1,444 deletions.
2 changes: 1 addition & 1 deletion FileAPI/blob/Blob-stream.any.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// META: title=Blob Stream
// META: script=../support/Blob.js
// META: script=../../streams/resources/test-utils.js
// META: script=/common/gc.js
'use strict';

// Helper function that triggers garbage collection while reading a chunk
Expand Down
18 changes: 1 addition & 17 deletions FileAPI/url/url-with-fetch.any.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,5 @@
// META: script=resources/fetch-tests.js

function garbageCollect() {
if (self.TestUtils?.gc) return TestUtils.gc();
if (self.gc) return self.gc();
// Present in some WebKit development environments
if (self.GCController) return GCController.collect();

for (var i = 0; i < 1000; i++) gcRec(10);

function gcRec(n) {
if (n < 1) return {};
let temp = { i: "ab" + i + i / 100000 };
temp += "foo";
gcRec(n - 1);
}
}

// META: script=/common/gc.js

function fetch_should_succeed(test, request) {
return fetch(request).then(response => response.text());
Expand Down
3 changes: 2 additions & 1 deletion audio-output/removeTrack-after-setSinkId.https.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="/common/gc.js"></script>
<script>
'use strict';
// This could be a crashtest, except that testdriver.bless() is not functional
Expand All @@ -20,7 +21,7 @@
audio.play();
await new Promise(r => t.step_timeout(r, 0));
audio.srcObject.removeTrack(audio.srcObject.getTracks()[0]);
await TestUtils.gc();
await garbageCollect();
});
</script>
</html>
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js

Expand All @@ -18,7 +19,7 @@ bluetooth_test(async () => {
iframe.remove();
// Set iframe to null to ensure that the GC cleans up as much as possible.
iframe = null;
await runGarbageCollection();
await garbageCollect();

try {
await characteristic.getDescriptor(user_description.name);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,28 +1,22 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py
'use strict';
const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
const expected = new DOMException(
'GATT Characteristic no longer exists.', 'InvalidStateError');
const expected = new DOMException('GATT Characteristic no longer exists.',
'InvalidStateError');
let fake_peripheral, characteristic, fake_characteristic;

bluetooth_test(
() =>
getMeasurementIntervalCharacteristic()
.then(
_ => (
{fake_peripheral, characteristic, fake_characteristic} = _))
.then(() => characteristic.getDescriptor(user_description.name))
.then(
() => null,
(e) => assert_unreached('Caught error unexpectedly.', e))
.then(() => fake_characteristic.remove())
.then(() => fake_peripheral.simulateGATTServicesChanged())
.then(
() => assert_promise_rejects_with_message(
characteristic.getDescriptor(user_description.name),
expected)),
bluetooth_test(() => getMeasurementIntervalCharacteristic()
.then(_ => ({fake_peripheral, characteristic, fake_characteristic} = _))
.then(() => characteristic.getDescriptor(user_description.name))
.then(() => null, (e) => assert_unreached('Caught error unexpectedly.', e))
.then(() => fake_characteristic.remove())
.then(() => fake_peripheral.simulateGATTServicesChanged())
.then(() => assert_promise_rejects_with_message(
characteristic.getDescriptor(user_description.name), expected)),
test_desc);

Original file line number Diff line number Diff line change
@@ -1,38 +1,36 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py
'use strict';
const test_desc = 'Calls to getDescriptor should return the same object.';
let characteristic;

bluetooth_test(
() => getMeasurementIntervalCharacteristic()
.then(_ => ({characteristic} = _))
.then(() => Promise.all([
characteristic.getDescriptor(user_description.alias),
characteristic.getDescriptor(user_description.name),
characteristic.getDescriptor(user_description.uuid)
]))
.then(descriptors_arrays => {
assert_true(descriptors_arrays.length > 0)
bluetooth_test(() => getMeasurementIntervalCharacteristic()
.then(_ => ({characteristic} = _))
.then(() => Promise.all([
characteristic.getDescriptor(user_description.alias),
characteristic.getDescriptor(user_description.name),
characteristic.getDescriptor(user_description.uuid)
]))
.then(descriptors_arrays => {
assert_true(descriptors_arrays.length > 0)

// Convert to arrays if necessary.
for (let i = 0; i < descriptors_arrays.length; i++) {
descriptors_arrays[i] = [].concat(descriptors_arrays[i]);
}
// Convert to arrays if necessary.
for (let i = 0; i < descriptors_arrays.length; i++) {
descriptors_arrays[i] = [].concat(descriptors_arrays[i]);
}

for (let i = 1; i < descriptors_arrays.length; i++) {
assert_equals(
descriptors_arrays[0].length,
descriptors_arrays[i].length);
}
for (let i = 1; i < descriptors_arrays.length; i++) {
assert_equals(descriptors_arrays[0].length,
descriptors_arrays[i].length);
}

let base_set = new Set(descriptors_arrays[0]);
for (let descriptors of descriptors_arrays) {
descriptors.forEach(descriptor => assert_true(base_set.has(descriptor)));
}
}), test_desc);

let base_set = new Set(descriptors_arrays[0]);
for (let descriptors of descriptors_arrays) {
descriptors.forEach(
descriptor => assert_true(base_set.has(descriptor)));
}
}),
test_desc);
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py
// TODO(https://crbug.com/672127) Use this test case to test the rest of
// characteristic functions.
'use strict';
const test_desc = 'Service is removed. Reject with InvalidStateError.';
const expected =
new DOMException('GATT Service no longer exists.', 'InvalidStateError');
const expected = new DOMException('GATT Service no longer exists.',
'InvalidStateError');
let characteristic, fake_peripheral, fake_service;

bluetooth_test(
() => getMeasurementIntervalCharacteristic()
.then(_ => ({characteristic, fake_peripheral, fake_service} = _))
.then(() => fake_service.remove())
.then(() => fake_peripheral.simulateGATTServicesChanged())
.then(
() => assert_promise_rejects_with_message(
characteristic.getDescriptor(user_description.name),
expected, 'Service got removed.')),
bluetooth_test(() => getMeasurementIntervalCharacteristic()
.then(_ => ({characteristic, fake_peripheral, fake_service} = _))
.then(() => fake_service.remove())
.then(() => fake_peripheral.simulateGATTServicesChanged())
.then(() => assert_promise_rejects_with_message(
characteristic.getDescriptor(user_description.name),
expected,
'Service got removed.')),
test_desc);

Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js

Expand All @@ -18,7 +19,7 @@ bluetooth_test(async () => {
iframe.remove();
// Set iframe to null to ensure that the GC cleans up as much as possible.
iframe = null;
await runGarbageCollection();
await garbageCollect();

try {
await characteristic.getDescriptors(user_description.name);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,28 +1,22 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py
'use strict';
const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
const expected = new DOMException(
'GATT Characteristic no longer exists.', 'InvalidStateError');
const expected = new DOMException('GATT Characteristic no longer exists.',
'InvalidStateError');
let fake_peripheral, characteristic, fake_characteristic;

bluetooth_test(
() =>
getMeasurementIntervalCharacteristic()
.then(
_ => (
{fake_peripheral, characteristic, fake_characteristic} = _))
.then(() => characteristic.getDescriptor(user_description.name))
.then(
() => null,
(e) => assert_unreached('Caught error unexpectedly.', e))
.then(() => fake_characteristic.remove())
.then(() => fake_peripheral.simulateGATTServicesChanged())
.then(
() => assert_promise_rejects_with_message(
characteristic.getDescriptors(user_description.name),
expected)),
bluetooth_test(() => getMeasurementIntervalCharacteristic()
.then(_ => ({fake_peripheral, characteristic, fake_characteristic} = _))
.then(() => characteristic.getDescriptor(user_description.name))
.then(() => null, (e) => assert_unreached('Caught error unexpectedly.', e))
.then(() => fake_characteristic.remove())
.then(() => fake_peripheral.simulateGATTServicesChanged())
.then(() => assert_promise_rejects_with_message(
characteristic.getDescriptors(user_description.name), expected)),
test_desc);

Original file line number Diff line number Diff line change
@@ -1,27 +1,22 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py
'use strict';
const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
const expected = new DOMException(
'GATT Characteristic no longer exists.', 'InvalidStateError');
const expected = new DOMException('GATT Characteristic no longer exists.',
'InvalidStateError');
let fake_peripheral, characteristic, fake_characteristic;

bluetooth_test(
() =>
getMeasurementIntervalCharacteristic()
.then(
_ => (
{fake_peripheral, characteristic, fake_characteristic} = _))
.then(() => characteristic.getDescriptor(user_description.name))
.then(
() => null,
(e) => assert_unreached('Caught error unexpectedly.', e))
.then(() => fake_characteristic.remove())
.then(() => fake_peripheral.simulateGATTServicesChanged())
.then(
() => assert_promise_rejects_with_message(
characteristic.getDescriptors(), expected)),
bluetooth_test(() => getMeasurementIntervalCharacteristic()
.then(_ => ({fake_peripheral, characteristic, fake_characteristic} = _))
.then(() => characteristic.getDescriptor(user_description.name))
.then(() => null, (e) => assert_unreached('Caught error unexpectedly.', e))
.then(() => fake_characteristic.remove())
.then(() => fake_peripheral.simulateGATTServicesChanged())
.then(() => assert_promise_rejects_with_message(
characteristic.getDescriptors(), expected)),
test_desc);

Original file line number Diff line number Diff line change
@@ -1,38 +1,36 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py
'use strict';
const test_desc = 'Calls to getDescriptors should return the same object.';
let characteristic;

bluetooth_test(
() => getMeasurementIntervalCharacteristic()
.then(_ => ({characteristic} = _))
.then(() => Promise.all([
characteristic.getDescriptors(user_description.alias),
characteristic.getDescriptors(user_description.name),
characteristic.getDescriptors(user_description.uuid)
]))
.then(descriptors_arrays => {
assert_true(descriptors_arrays.length > 0)
bluetooth_test(() => getMeasurementIntervalCharacteristic()
.then(_ => ({characteristic} = _))
.then(() => Promise.all([
characteristic.getDescriptors(user_description.alias),
characteristic.getDescriptors(user_description.name),
characteristic.getDescriptors(user_description.uuid)
]))
.then(descriptors_arrays => {
assert_true(descriptors_arrays.length > 0)

// Convert to arrays if necessary.
for (let i = 0; i < descriptors_arrays.length; i++) {
descriptors_arrays[i] = [].concat(descriptors_arrays[i]);
}
// Convert to arrays if necessary.
for (let i = 0; i < descriptors_arrays.length; i++) {
descriptors_arrays[i] = [].concat(descriptors_arrays[i]);
}

for (let i = 1; i < descriptors_arrays.length; i++) {
assert_equals(
descriptors_arrays[0].length,
descriptors_arrays[i].length);
}
for (let i = 1; i < descriptors_arrays.length; i++) {
assert_equals(descriptors_arrays[0].length,
descriptors_arrays[i].length);
}

let base_set = new Set(descriptors_arrays[0]);
for (let descriptors of descriptors_arrays) {
descriptors.forEach(descriptor => assert_true(base_set.has(descriptor)));
}
}), test_desc);

let base_set = new Set(descriptors_arrays[0]);
for (let descriptors of descriptors_arrays) {
descriptors.forEach(
descriptor => assert_true(base_set.has(descriptor)));
}
}),
test_desc);
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver-vendor.js
// META: script=/common/gc.js
// META: script=/bluetooth/resources/bluetooth-test.js
// META: script=/bluetooth/resources/bluetooth-fake-devices.js
// Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py
// TODO(https://crbug.com/672127) Use this test case to test the rest of
// characteristic functions.
'use strict';
const test_desc = 'Service is removed. Reject with InvalidStateError.';
const expected =
new DOMException('GATT Service no longer exists.', 'InvalidStateError');
const expected = new DOMException('GATT Service no longer exists.',
'InvalidStateError');
let characteristic, fake_peripheral, fake_service;

bluetooth_test(
() => getMeasurementIntervalCharacteristic()
.then(_ => ({characteristic, fake_peripheral, fake_service} = _))
.then(() => fake_service.remove())
.then(() => fake_peripheral.simulateGATTServicesChanged())
.then(
() => assert_promise_rejects_with_message(
characteristic.getDescriptors(user_description.uuid),
expected, 'Service got removed.')),
bluetooth_test(() => getMeasurementIntervalCharacteristic()
.then(_ => ({characteristic, fake_peripheral, fake_service} = _))
.then(() => fake_service.remove())
.then(() => fake_peripheral.simulateGATTServicesChanged())
.then(() => assert_promise_rejects_with_message(
characteristic.getDescriptors(user_description.uuid),
expected,
'Service got removed.')),
test_desc);

Loading

0 comments on commit e97fac4

Please sign in to comment.