| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/memory/tab_manager.h" | 5 #include "chrome/browser/memory/tab_manager.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <set> | 10 #include <set> |
| (...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 411 | 411 |
| 412 bool TabManager::IsTabAutoDiscardable(content::WebContents* contents) const { | 412 bool TabManager::IsTabAutoDiscardable(content::WebContents* contents) const { |
| 413 return GetWebContentsData(contents)->IsAutoDiscardable(); | 413 return GetWebContentsData(contents)->IsAutoDiscardable(); |
| 414 } | 414 } |
| 415 | 415 |
| 416 void TabManager::SetTabAutoDiscardableState(content::WebContents* contents, | 416 void TabManager::SetTabAutoDiscardableState(content::WebContents* contents, |
| 417 bool state) { | 417 bool state) { |
| 418 GetWebContentsData(contents)->SetAutoDiscardableState(state); | 418 GetWebContentsData(contents)->SetAutoDiscardableState(state); |
| 419 } | 419 } |
| 420 | 420 |
| 421 bool TabManager::CanSuspendBackgroundedRenderer(int render_process_id) { |
| 422 // A renderer can be suspended if it's not playing media. |
| 423 auto tab_stats = GetUnsortedTabStats(); |
| 424 for (auto& tab : tab_stats) { |
| 425 if (tab.child_process_host_id != render_process_id) |
| 426 continue; |
| 427 TabStripModel* model; |
| 428 int index = FindTabStripModelById(tab.tab_contents_id, &model); |
| 429 if (index == -1) |
| 430 return false; |
| 431 WebContents* web_contents = model->GetWebContentsAt(index); |
| 432 if (IsMediaTab(web_contents)) |
| 433 return false; |
| 434 } |
| 435 return true; |
| 436 } |
| 437 |
| 421 // static | 438 // static |
| 422 bool TabManager::CompareTabStats(const TabStats& first, | 439 bool TabManager::CompareTabStats(const TabStats& first, |
| 423 const TabStats& second) { | 440 const TabStats& second) { |
| 424 // Being currently selected is most important to protect. | 441 // Being currently selected is most important to protect. |
| 425 if (first.is_selected != second.is_selected) | 442 if (first.is_selected != second.is_selected) |
| 426 return first.is_selected; | 443 return first.is_selected; |
| 427 | 444 |
| 428 // Non auto-discardable tabs are more important to protect. | 445 // Non auto-discardable tabs are more important to protect. |
| 429 if (first.is_auto_discardable != second.is_auto_discardable) | 446 if (first.is_auto_discardable != second.is_auto_discardable) |
| 430 return !first.is_auto_discardable; | 447 return !first.is_auto_discardable; |
| (...skipping 509 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 940 // platform. | 957 // platform. |
| 941 std::string allow_multiple_discards = variations::GetVariationParamValue( | 958 std::string allow_multiple_discards = variations::GetVariationParamValue( |
| 942 features::kAutomaticTabDiscarding.name, "AllowMultipleDiscards"); | 959 features::kAutomaticTabDiscarding.name, "AllowMultipleDiscards"); |
| 943 return (allow_multiple_discards != "true"); | 960 return (allow_multiple_discards != "true"); |
| 944 #else | 961 #else |
| 945 return false; | 962 return false; |
| 946 #endif | 963 #endif |
| 947 } | 964 } |
| 948 | 965 |
| 949 } // namespace memory | 966 } // namespace memory |
| OLD | NEW |