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 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 | 128 |
129 } // namespace | 129 } // namespace |
130 | 130 |
131 //////////////////////////////////////////////////////////////////////////////// | 131 //////////////////////////////////////////////////////////////////////////////// |
132 // TabManager | 132 // TabManager |
133 | 133 |
134 TabManager::TabManager() | 134 TabManager::TabManager() |
135 : discard_count_(0), | 135 : discard_count_(0), |
136 recent_tab_discard_(false), | 136 recent_tab_discard_(false), |
137 discard_once_(false), | 137 discard_once_(false), |
| 138 minimum_protection_time_(base::TimeDelta::FromMinutes(10)), |
138 browser_tab_strip_tracker_(this, nullptr, nullptr), | 139 browser_tab_strip_tracker_(this, nullptr, nullptr), |
139 test_tick_clock_(nullptr), | 140 test_tick_clock_(nullptr), |
140 under_memory_pressure_(false), | 141 under_memory_pressure_(false), |
141 weak_ptr_factory_(this) { | 142 weak_ptr_factory_(this) { |
142 #if defined(OS_CHROMEOS) | 143 #if defined(OS_CHROMEOS) |
143 delegate_.reset(new TabManagerDelegate(weak_ptr_factory_.GetWeakPtr())); | 144 delegate_.reset(new TabManagerDelegate(weak_ptr_factory_.GetWeakPtr())); |
144 #endif | 145 #endif |
145 browser_tab_strip_tracker_.Init( | 146 browser_tab_strip_tracker_.Init( |
146 BrowserTabStripTracker::InitWith::ALL_BROWERS); | 147 BrowserTabStripTracker::InitWith::ALL_BROWERS); |
147 | 148 |
148 // Set up default callbacks. These may be overridden post-construction as | 149 // Set up default callbacks. These may be overridden post-construction as |
149 // testing seams. | 150 // testing seams. |
150 get_current_pressure_level_ = base::Bind(&GetCurrentPressureLevel); | 151 get_current_pressure_level_ = base::Bind(&GetCurrentPressureLevel); |
151 notify_renderer_process_ = base::Bind(&NotifyRendererProcess); | 152 notify_renderer_process_ = base::Bind(&NotifyRendererProcess); |
152 } | 153 } |
153 | 154 |
154 TabManager::~TabManager() { | 155 TabManager::~TabManager() { |
155 Stop(); | 156 Stop(); |
156 } | 157 } |
157 | 158 |
158 void TabManager::Start() { | 159 void TabManager::Start() { |
159 #if defined(OS_WIN) || defined(OS_MACOSX) | 160 #if defined(OS_WIN) || defined(OS_MACOSX) |
160 // If the feature is not enabled, do nothing. | 161 // Note that discarding is now enabled by default. This check is kept as a |
| 162 // kill switch. |
| 163 // TODO(georgesak): remote this when deemed not needed anymore. |
161 if (!base::FeatureList::IsEnabled(features::kAutomaticTabDiscarding)) | 164 if (!base::FeatureList::IsEnabled(features::kAutomaticTabDiscarding)) |
162 return; | 165 return; |
163 | 166 |
164 // Check the variation parameter to see if a tab is to be protected for an | 167 // Check the variation parameter to see if a tab is to be protected for an |
165 // amount of time after being backgrounded. The value is in seconds. | 168 // amount of time after being backgrounded. The value is in seconds. Default |
| 169 // is 10 minutes if the variation is absent. |
166 std::string minimum_protection_time_string = | 170 std::string minimum_protection_time_string = |
167 variations::GetVariationParamValue(features::kAutomaticTabDiscarding.name, | 171 variations::GetVariationParamValue(features::kAutomaticTabDiscarding.name, |
168 "MinimumProtectionTime"); | 172 "MinimumProtectionTime"); |
169 if (!minimum_protection_time_string.empty()) { | 173 if (!minimum_protection_time_string.empty()) { |
170 unsigned int minimum_protection_time_seconds = 0; | 174 unsigned int minimum_protection_time_seconds = 0; |
171 if (base::StringToUint(minimum_protection_time_string, | 175 if (base::StringToUint(minimum_protection_time_string, |
172 &minimum_protection_time_seconds)) { | 176 &minimum_protection_time_seconds)) { |
173 if (minimum_protection_time_seconds > 0) | 177 if (minimum_protection_time_seconds > 0) |
174 minimum_protection_time_ = | 178 minimum_protection_time_ = |
175 base::TimeDelta::FromSeconds(minimum_protection_time_seconds); | 179 base::TimeDelta::FromSeconds(minimum_protection_time_seconds); |
(...skipping 759 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
935 // platform. | 939 // platform. |
936 std::string allow_multiple_discards = variations::GetVariationParamValue( | 940 std::string allow_multiple_discards = variations::GetVariationParamValue( |
937 features::kAutomaticTabDiscarding.name, "AllowMultipleDiscards"); | 941 features::kAutomaticTabDiscarding.name, "AllowMultipleDiscards"); |
938 return (allow_multiple_discards != "true"); | 942 return (allow_multiple_discards != "true"); |
939 #else | 943 #else |
940 return false; | 944 return false; |
941 #endif | 945 #endif |
942 } | 946 } |
943 | 947 |
944 } // namespace memory | 948 } // namespace memory |
OLD | NEW |