Index: chrome/browser/memory/tab_manager.cc |
diff --git a/chrome/browser/memory/tab_manager.cc b/chrome/browser/memory/tab_manager.cc |
index 6fa39ad66f4abcae4e9a2b8fd9c2677945db888f..a8137e960c52918d20e85e48efc32b9467f75226 100644 |
--- a/chrome/browser/memory/tab_manager.cc |
+++ b/chrome/browser/memory/tab_manager.cc |
@@ -617,6 +617,10 @@ bool TabManager::CanDiscardTab(int64_t target_web_contents_id) const { |
return false; |
} |
+ // Do not discard a tab that was explicitly disallowed to. |
+ if (!IsTabAutoDiscardable(web_contents)) |
+ return false; |
+ |
return true; |
} |
@@ -906,4 +910,20 @@ void TabManager::OnDiscardedStateChange(content::WebContents* contents, |
OnDiscardedStateChange(contents, is_discarded)); |
} |
+void TabManager::OnAutoDiscardableStateChange(content::WebContents* contents, |
+ bool is_auto_discardable) { |
+ FOR_EACH_OBSERVER( |
+ TabManagerObserver, observers_, |
+ OnAutoDiscardableStateChange(contents, is_auto_discardable)); |
+} |
+ |
+bool TabManager::IsTabAutoDiscardable(content::WebContents* contents) const { |
+ return GetWebContentsData(contents)->IsAutoDiscardable(); |
+} |
+ |
+void TabManager::SetTabAutoDiscardableState(content::WebContents* contents, |
+ bool state) { |
+ GetWebContentsData(contents)->SetAutoDiscardableState(state); |
+} |
+ |
} // namespace memory |