| Index: third_party/WebKit/LayoutTests/http/tests/cache/resources/location-reload-window.html
|
| diff --git a/third_party/WebKit/LayoutTests/http/tests/cache/resources/location-reload-window.html b/third_party/WebKit/LayoutTests/http/tests/cache/resources/location-reload-window.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..71b5970d6961f1fdc3d6e978c7cdb7af22da8a0c
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/http/tests/cache/resources/location-reload-window.html
|
| @@ -0,0 +1,48 @@
|
| +<!DOCTYPE html>
|
| +<html>
|
| +<body>
|
| +<h1>random</h1>
|
| +<script src="./random-cached.cgi"></script>
|
| +<script>
|
| +const lastRandomNumberKey = "lastRandomNumber";
|
| +
|
| +window.addEventListener("message", e => {
|
| + if (e.data != "START") {
|
| + window.opener.postMessage("FAIL: unknown; " + e.data, location.origin);
|
| + } else {
|
| + // window.top.randomNumber should be set by random-cached.cgi.
|
| + if (window.top === undefined || window.top.randomNumber === undefined) {
|
| + window.opener.postMessage("FAIL: randomNumber isn't defined",
|
| + location.origin);
|
| + return;
|
| + }
|
| +
|
| + // If location.reload() is already triggered, lastRandomNumberKey should be
|
| + // stored in the sessionStorage. Otherwise, this is the first load.
|
| + const lastRandomNumberString = sessionStorage.getItem(lastRandomNumberKey);
|
| + if (lastRandomNumberString !== null) {
|
| + // sessionStorage returns DOMString and need to be converted to Number.
|
| + const lastRandomNumber = Number(lastRandomNumberString);
|
| +
|
| + // Because the random-cached.cgi is a sub-resource, and set HTTP headers
|
| + // to allow caching, location.reload() should follow the cache-protocol to
|
| + // reuse the cached resource. That is to say the randomNumber should not
|
| + // be changed on the reload.
|
| + window.opener.postMessage(lastRandomNumber == top.randomNumber
|
| + ? "PASS"
|
| + : "FAIL: randomNumber was changed",
|
| + location.origin);
|
| + } else {
|
| + // Store the first randomNumber to the sessionStorage, and call reload().
|
| + // This window will send "READY" again, then receive "START".
|
| + sessionStorage.setItem(lastRandomNumberKey, top.randomNumber);
|
| + location.reload();
|
| + }
|
| + }
|
| +}, false);
|
| +
|
| +// Send "READY" message first so that parent window can ensure to send messages.
|
| +window.opener.postMessage("READY", location.origin);
|
| +</script>
|
| +</body>
|
| +</html>
|
|
|