50 lines
1.1 KiB
HTML
50 lines
1.1 KiB
HTML
<!-- webkit-test-runner [ useEphemeralSession=true ] -->
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../resources/js-test.js"></script>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
description("Test IndexedDB IDBKeyRange when we are Out of Memory.");
|
|
|
|
// Since we are low on memory, it is difficult to use the exception test helpers.
|
|
let exceptionString = undefined;
|
|
|
|
const a = [];
|
|
a.length = 2**30;
|
|
a.__proto__ = {};
|
|
Object.defineProperty(a, 0, { get: foo });
|
|
function foo() {
|
|
new Uint8Array(a);
|
|
}
|
|
|
|
try {
|
|
foo();
|
|
} catch { }
|
|
|
|
try {
|
|
for (let timeoutCount = 1000; timeoutCount--;)
|
|
new ArrayBuffer(2**20);
|
|
} catch { }
|
|
|
|
let u8 = new Uint8Array();
|
|
|
|
try {
|
|
IDBKeyRange.only(u8);
|
|
} catch(e) {
|
|
exceptionString = e.toString();
|
|
}
|
|
|
|
// Try to free up some memory to check our exception
|
|
u8 = undefined;
|
|
gc();
|
|
|
|
// Since we can't reliably produce an out of memory everytime, no exception is also a pass.
|
|
shouldBeTrue("exceptionString == undefined || exceptionString === 'DataError: Provided data is inadequate.'");
|
|
|
|
testPassed("IDBKeyRange.only didn't crash");
|
|
</script>
|
|
</body>
|
|
</html>
|