Index: chrome/browser/sessions/session_restore.cc |
diff --git a/chrome/browser/sessions/session_restore.cc b/chrome/browser/sessions/session_restore.cc |
index 98708651d0277a09c6280b2421149f3345f1250c..43b9aacedfd32543d26918e40688129de177fa4f 100644 |
--- a/chrome/browser/sessions/session_restore.cc |
+++ b/chrome/browser/sessions/session_restore.cc |
@@ -732,7 +732,11 @@ class SessionRestoreImpl : public content::NotificationObserver { |
100); |
if (windows->empty()) { |
- // Restore was unsuccessful. |
+ // Restore was unsuccessful. The DOM storage system can also delete its |
+ // data, since no session restore will happen at a later point in time. |
+ content::DOMStorageContext* dom_storage_context = |
+ content::BrowserContext::GetDOMStorageContext(profile_); |
+ dom_storage_context->StartScavengingUnusedSessionStorage(); |
return FinishedTabCreation(false, false); |
} |
@@ -821,6 +825,13 @@ class SessionRestoreImpl : public content::NotificationObserver { |
Browser* finished_browser = FinishedTabCreation(true, has_tabbed_browser); |
if (finished_browser) |
last_browser = finished_browser; |
+ |
+ // sessionStorages needed for the session restore have now been recreated |
+ // by RestoreTab. Now it's safe for the DOM storage system to start |
+ // deleting leftover data. |
+ content::DOMStorageContext* dom_storage_context = |
+ content::BrowserContext::GetDOMStorageContext(profile_); |
+ dom_storage_context->StartScavengingUnusedSessionStorage(); |
return last_browser; |
} |