Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(986)

Unified Diff: content/browser/dom_storage/dom_storage_context_wrapper.cc

Issue 2335933003: Make DOMStorageContextWrapper a client of memory coordinator (Closed)
Patch Set: Address on ssid's review Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/dom_storage/dom_storage_context_wrapper.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/dom_storage/dom_storage_context_wrapper.cc
diff --git a/content/browser/dom_storage/dom_storage_context_wrapper.cc b/content/browser/dom_storage/dom_storage_context_wrapper.cc
index 52e769cf72a1e7bc86c15b670d166ca0fb39e7e0..528f713c79b2818e93491df2cea0f9c53b64280a 100644
--- a/content/browser/dom_storage/dom_storage_context_wrapper.cc
+++ b/content/browser/dom_storage/dom_storage_context_wrapper.cc
@@ -11,6 +11,7 @@
#include "base/bind_helpers.h"
#include "base/files/file_path.h"
#include "base/location.h"
+#include "base/memory/memory_coordinator_client_registry.h"
#include "base/memory/ptr_util.h"
#include "base/memory/weak_ptr.h"
#include "base/single_thread_task_runner.h"
@@ -23,9 +24,11 @@
#include "content/browser/dom_storage/dom_storage_task_runner.h"
#include "content/browser/dom_storage/session_storage_namespace_impl.h"
#include "content/browser/leveldb_wrapper_impl.h"
+#include "content/browser/memory/memory_coordinator.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/local_storage_usage_info.h"
#include "content/public/browser/session_storage_usage_info.h"
+#include "content/public/common/content_features.h"
#include "mojo/common/common_type_converters.h"
#include "services/file/public/cpp/constants.h"
#include "services/file/public/interfaces/file_system.mojom.h"
@@ -284,8 +287,12 @@ DOMStorageContextWrapper::DOMStorageContextWrapper(
worker_pool->GetNamedSequenceToken("dom_storage_commit"),
BrowserThread::GetTaskRunnerForThread(BrowserThread::IO).get()));
- memory_pressure_listener_.reset(new base::MemoryPressureListener(
- base::Bind(&DOMStorageContextWrapper::OnMemoryPressure, this)));
+ if (base::FeatureList::IsEnabled(features::kMemoryCoordinator)) {
+ base::MemoryCoordinatorClientRegistry::GetInstance()->Register(this);
+ } else {
+ memory_pressure_listener_.reset(new base::MemoryPressureListener(
+ base::Bind(&DOMStorageContextWrapper::OnMemoryPressure, this)));
+ }
}
DOMStorageContextWrapper::~DOMStorageContextWrapper() {}
@@ -365,6 +372,10 @@ void DOMStorageContextWrapper::Shutdown() {
FROM_HERE,
DOMStorageTaskRunner::PRIMARY_SEQUENCE,
base::Bind(&DOMStorageContextImpl::Shutdown, context_));
+ if (base::FeatureList::IsEnabled(features::kMemoryCoordinator)) {
+ base::MemoryCoordinatorClientRegistry::GetInstance()->Unregister(this);
+ }
+
}
void DOMStorageContextWrapper::Flush() {
@@ -390,6 +401,33 @@ void DOMStorageContextWrapper::OnMemoryPressure(
base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL) {
purge_option = DOMStorageContextImpl::PURGE_AGGRESSIVE;
}
+ PurgeMemory(purge_option);
+}
+
+void DOMStorageContextWrapper::OnMemoryStateChange(base::MemoryState state) {
+ // TODO(hajimehoshi): As OnMemoryStateChange changes the state, we should
+ // adjust the limitation to the amount of cache, DomStroageContextImpl doesn't
+ // have such limitation so far though.
+ switch (state) {
+ case base::MemoryState::NORMAL:
+ // Don't have to purge memory here.
+ break;
+ case base::MemoryState::THROTTLED:
+ // TOOD(hajimehoshi): We don't have throttling 'level' so far. When we
+ // have such value, let's change the argument accroding to the value.
+ PurgeMemory(DOMStorageContextImpl::PURGE_AGGRESSIVE);
+ break;
+ case base::MemoryState::SUSPENDED:
+ // Note that SUSPENDED never occurs in the main browser process so far.
+ // Fall through.
+ case base::MemoryState::UNKNOWN:
+ NOTREACHED();
+ break;
+ }
+}
+
+void DOMStorageContextWrapper::PurgeMemory(DOMStorageContextImpl::PurgeOption
+ purge_option) {
context_->task_runner()->PostTask(
FROM_HERE,
base::Bind(&DOMStorageContextImpl::PurgeMemory, context_, purge_option));
« no previous file with comments | « content/browser/dom_storage/dom_storage_context_wrapper.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698