mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1145445
- Add a test for CacheStorage; r=bkelly
This commit is contained in:
parent
55e8be4ca2
commit
07650e2251
2
dom/cache/test/mochitest/mochitest.ini
vendored
2
dom/cache/test/mochitest/mochitest.ini
vendored
@ -14,6 +14,7 @@ support-files =
|
||||
mirror.sjs
|
||||
test_cache_match_vary.js
|
||||
vary.sjs
|
||||
test_caches.js
|
||||
|
||||
[test_cache.html]
|
||||
[test_cache_add.html]
|
||||
@ -21,3 +22,4 @@ support-files =
|
||||
[test_cache_matchAll_request.html]
|
||||
[test_cache_overwrite.html]
|
||||
[test_cache_match_vary.html]
|
||||
[test_caches.html]
|
||||
|
4
dom/cache/test/mochitest/test_cache.js
vendored
4
dom/cache/test/mochitest/test_cache.js
vendored
@ -124,6 +124,8 @@ caches.open(name).then(function(openCache) {
|
||||
return caches.has(foobar);
|
||||
}).then(function(hasMissingCache) {
|
||||
ok(!hasMissingCache, 'has should have a result');
|
||||
}).then(function() {
|
||||
return caches.delete(name);
|
||||
}).then(function(deleteResult) {
|
||||
ok(deleteResult, 'delete should succeed');
|
||||
testDone();
|
||||
})
|
||||
|
@ -170,5 +170,8 @@ function testRequest(request1, request2, request3, unknownRequest,
|
||||
return cache.matchAll();
|
||||
}).then(function(r) {
|
||||
is(r.length, 0, "Searching in the cache after deletion should not succeed");
|
||||
return caches.delete(name);
|
||||
}).then(function(deleted) {
|
||||
ok(deleted, "The cache should be deleted successfully");
|
||||
});
|
||||
}
|
||||
|
@ -132,5 +132,8 @@ function testRequest(request, unknownRequest, requestWithAlternateQueryString,
|
||||
return cache.match(request);
|
||||
}).then(function(r) {
|
||||
is(typeof r, "undefined", "Searching in the cache after deletion should not succeed");
|
||||
return caches.delete(name);
|
||||
}).then(function(deleted) {
|
||||
ok(deleted, "The cache should be deleted successfully");
|
||||
});
|
||||
}
|
||||
|
@ -40,5 +40,8 @@ fetch(new Request(requestURL, {headers: {"Mirror": "bar"}})).then(function(r) {
|
||||
is(r.length, 1, "Only one request should be in the cache");
|
||||
return checkResponse(r[0]);
|
||||
}).then(function() {
|
||||
return caches.delete(name);
|
||||
}).then(function(deleted) {
|
||||
ok(deleted, "The cache should be deleted successfully");
|
||||
testDone();
|
||||
});
|
||||
|
22
dom/cache/test/mochitest/test_caches.html
vendored
Normal file
22
dom/cache/test/mochitest/test_caches.html
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
<!-- Any copyright is dedicated to the Public Domain.
|
||||
- http://creativecommons.org/publicdomain/zero/1.0/ -->
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test the CacheStorage API</title>
|
||||
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
||||
<script type="text/javascript" src="driver.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<iframe id="frame"></iframe>
|
||||
<script class="testbody" type="text/javascript">
|
||||
// These tests can only be run in sequential mode because we need to be able
|
||||
// to rely on the global state of the CacheStorage at all times.
|
||||
runTests("test_caches.js", "sequential")
|
||||
.then(function() {
|
||||
SimpleTest.finish();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
122
dom/cache/test/mochitest/test_caches.js
vendored
Normal file
122
dom/cache/test/mochitest/test_caches.js
vendored
Normal file
@ -0,0 +1,122 @@
|
||||
function arraysHaveSameContent(arr1, arr2) {
|
||||
if (arr1.length != arr2.length) {
|
||||
return false;
|
||||
}
|
||||
return arr1.every(function(value, index) {
|
||||
return arr2[index] === value;
|
||||
});
|
||||
}
|
||||
|
||||
function testHas() {
|
||||
var name = "caches-has" + context;
|
||||
return caches.has(name).then(function(has) {
|
||||
ok(!has, name + " should not exist yet");
|
||||
return caches.open(name);
|
||||
}).then(function(c) {
|
||||
return caches.has(name);
|
||||
}).then(function(has) {
|
||||
ok(has, name + " should now exist");
|
||||
return caches.delete(name);
|
||||
}).then(function(deleted) {
|
||||
ok(deleted, "The deletion should finish successfully");
|
||||
return caches.has(name);
|
||||
}).then(function(has) {
|
||||
ok(!has, name + " should not exist any more");
|
||||
});
|
||||
}
|
||||
|
||||
function testKeys() {
|
||||
var names = [
|
||||
// The names here are intentionally unsorted, to ensure the insertion order
|
||||
// and make sure we don't confuse it with an alphabetically sorted list.
|
||||
"caches-keys4" + context,
|
||||
"caches-keys0" + context,
|
||||
"caches-keys1" + context,
|
||||
"caches-keys3" + context,
|
||||
];
|
||||
return caches.keys().then(function(keys) {
|
||||
is(keys.length, 0, "No keys should exist yet");
|
||||
return Promise.all(names.map(function(name) {
|
||||
return caches.open(name);
|
||||
}));
|
||||
}).then(function() {
|
||||
return caches.keys();
|
||||
}).then(function(keys) {
|
||||
ok(arraysHaveSameContent(keys, names), "Keys must match in insertion order");
|
||||
return Promise.all(names.map(function(name) {
|
||||
return caches.delete(name);
|
||||
}));
|
||||
}).then(function(deleted) {
|
||||
ok(arraysHaveSameContent(deleted, [true, true, true, true]), "All deletions must succeed");
|
||||
return caches.keys();
|
||||
}).then(function(keys) {
|
||||
is(keys.length, 0, "No keys should exist any more");
|
||||
});
|
||||
}
|
||||
|
||||
function testMatchAcrossCaches() {
|
||||
var tests = [
|
||||
// The names here are intentionally unsorted, to ensure the insertion order
|
||||
// and make sure we don't confuse it with an alphabetically sorted list.
|
||||
{
|
||||
name: "caches-xmatch5" + context,
|
||||
request: "//mochi.test:8888/?5" + context,
|
||||
},
|
||||
{
|
||||
name: "caches-xmatch2" + context,
|
||||
request: "//mochi.test:8888/tests/dom/cache/test/mochitest/test_caches.js?2" + context,
|
||||
},
|
||||
{
|
||||
name: "caches-xmatch4" + context,
|
||||
request: "//mochi.test:8888/?4" + context,
|
||||
},
|
||||
];
|
||||
return Promise.all(tests.map(function(test) {
|
||||
return caches.open(test.name).then(function(c) {
|
||||
return c.add(test.request);
|
||||
});
|
||||
})).then(function() {
|
||||
return caches.match("//mochi.test:8888/?5" + context, {ignoreSearch: true});
|
||||
}).then(function(match) {
|
||||
ok(match.url.indexOf("?5") > 0, "Match should come from the first cache");
|
||||
return caches.delete("caches-xmatch2" + context); // This should not change anything!
|
||||
}).then(function(deleted) {
|
||||
ok(deleted, "Deletion should finish successfully");
|
||||
return caches.match("//mochi.test:8888/?" + context, {ignoreSearch: true});
|
||||
}).then(function(match) {
|
||||
ok(match.url.indexOf("?5") > 0, "Match should still come from the first cache");
|
||||
return caches.delete("caches-xmatch5" + context); // This should eliminate the first match!
|
||||
}).then(function(deleted) {
|
||||
ok(deleted, "Deletion should finish successfully");
|
||||
return caches.match("//mochi.test:8888/?" + context, {ignoreSearch: true});
|
||||
}).then(function(match) {
|
||||
ok(match.url.indexOf("?4") > 0, "Match should come from the third cache");
|
||||
return caches.delete("caches-xmatch4" + context); // Game over!
|
||||
}).then(function(deleted) {
|
||||
ok(deleted, "Deletion should finish successfully");
|
||||
return caches.match("//mochi.test:8888/?" + context, {ignoreSearch: true});
|
||||
}).then(function(match) {
|
||||
is(typeof match, "undefined", "No matches should be found");
|
||||
});
|
||||
}
|
||||
|
||||
function testDelete() {
|
||||
return caches.delete("delete" + context).then(function(deleted) {
|
||||
ok(!deleted, "Attempting to delete a non-existing cache should fail");
|
||||
return caches.open("delete" + context);
|
||||
}).then(function() {
|
||||
return caches.delete("delete" + context);
|
||||
}).then(function(deleted) {
|
||||
ok(deleted, "Delete should now succeed");
|
||||
});
|
||||
}
|
||||
|
||||
testHas().then(function() {
|
||||
return testKeys();
|
||||
}).then(function() {
|
||||
return testMatchAcrossCaches();
|
||||
}).then(function() {
|
||||
return testDelete();
|
||||
}).then(function() {
|
||||
testDone();
|
||||
});
|
Loading…
Reference in New Issue
Block a user