forked from mirrors/gecko-dev
DOM Storage is a pretty inefficient and memory-hungry storage mechanism. Session Store attempts to record DOM Storage for each tab, which leads to (possibly very large) objects being serialized once to be sent from frame/content to parent and once to be sent from the main thread to the I/O thread. This is a suspect behind a number of crashes (see bug 1106264 for a discussion on the topic). This patch limits the amount of DOM Storage that Session Restore attempts to store. We perform a quick estimate on the amount of memory needed to serialize DOM Storage and prevent storage larger than ~10M chars being sent from frame/content to the parent. Once this patch has landed, we will need to watch FX_SESSION_RESTORE_DOM_STORAGE_SIZE_ESTIMATE_CHARS to find out whether our threshold is meaningful. --HG-- extra : transplant_source : %26%07%ADzjT%A9%E3%B9%B9%EC%9D%97n%23%B5%F2%DAZ%CD
27 lines
846 B
HTML
27 lines
846 B
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>browser_sessionStorage.html</title>
|
|
</head>
|
|
<body>
|
|
<script type="text/javascript;version=1.8">
|
|
let isOuter = window == window.top;
|
|
let args = window.location.search.slice(1).split("&");
|
|
let rand = args[0];
|
|
|
|
if (isOuter) {
|
|
let iframe = document.createElement("iframe");
|
|
let isSecure = args.indexOf("secure") > -1;
|
|
let scheme = isSecure ? "https" : "http";
|
|
iframe.setAttribute("src", scheme + "://example.com" + location.pathname + "?" + rand);
|
|
document.body.appendChild(iframe);
|
|
}
|
|
|
|
if (sessionStorage.length === 0) {
|
|
sessionStorage.test = (isOuter ? "outer" : "inner") + "-value-" + rand;
|
|
document.title = sessionStorage.test;
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|