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

Side by Side Diff: content/browser/dom_storage/dom_storage_context_wrapper.cc

Issue 1953703004: Purge browser cache for dom storage in a smarter way (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@dom_storage
Patch Set: Fix limit and description for UMA. Created 4 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "content/browser/dom_storage/dom_storage_context_wrapper.h" 5 #include "content/browser/dom_storage/dom_storage_context_wrapper.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 : data_path.AppendASCII(kLocalStorageDirectory), 278 : data_path.AppendASCII(kLocalStorageDirectory),
279 data_path.empty() ? data_path 279 data_path.empty() ? data_path
280 : data_path.AppendASCII(kSessionStorageDirectory), 280 : data_path.AppendASCII(kSessionStorageDirectory),
281 special_storage_policy, 281 special_storage_policy,
282 new DOMStorageWorkerPoolTaskRunner( 282 new DOMStorageWorkerPoolTaskRunner(
283 worker_pool, 283 worker_pool,
284 worker_pool->GetNamedSequenceToken("dom_storage_primary"), 284 worker_pool->GetNamedSequenceToken("dom_storage_primary"),
285 worker_pool->GetNamedSequenceToken("dom_storage_commit"), 285 worker_pool->GetNamedSequenceToken("dom_storage_commit"),
286 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO) 286 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO)
287 .get())); 287 .get()));
288
289 memory_pressure_listener_.reset(new base::MemoryPressureListener(
290 base::Bind(&DOMStorageContextWrapper::OnMemoryPressure, this)));
288 } 291 }
289 292
290 DOMStorageContextWrapper::~DOMStorageContextWrapper() {} 293 DOMStorageContextWrapper::~DOMStorageContextWrapper() {}
291 294
292 void DOMStorageContextWrapper::GetLocalStorageUsage( 295 void DOMStorageContextWrapper::GetLocalStorageUsage(
293 const GetLocalStorageUsageCallback& callback) { 296 const GetLocalStorageUsageCallback& callback) {
294 DCHECK(context_.get()); 297 DCHECK(context_.get());
295 context_->task_runner()->PostShutdownBlockingTask( 298 context_->task_runner()->PostShutdownBlockingTask(
296 FROM_HERE, DOMStorageTaskRunner::PRIMARY_SEQUENCE, 299 FROM_HERE, DOMStorageTaskRunner::PRIMARY_SEQUENCE,
297 base::Bind(&GetLocalStorageUsageHelper, 300 base::Bind(&GetLocalStorageUsageHelper,
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 DCHECK(context_.get()); 355 DCHECK(context_.get());
353 context_->task_runner()->PostShutdownBlockingTask( 356 context_->task_runner()->PostShutdownBlockingTask(
354 FROM_HERE, 357 FROM_HERE,
355 DOMStorageTaskRunner::PRIMARY_SEQUENCE, 358 DOMStorageTaskRunner::PRIMARY_SEQUENCE,
356 base::Bind(&DOMStorageContextImpl::SetForceKeepSessionState, context_)); 359 base::Bind(&DOMStorageContextImpl::SetForceKeepSessionState, context_));
357 } 360 }
358 361
359 void DOMStorageContextWrapper::Shutdown() { 362 void DOMStorageContextWrapper::Shutdown() {
360 DCHECK(context_.get()); 363 DCHECK(context_.get());
361 mojo_state_.reset(); 364 mojo_state_.reset();
365 memory_pressure_listener_.reset();
362 context_->task_runner()->PostShutdownBlockingTask( 366 context_->task_runner()->PostShutdownBlockingTask(
363 FROM_HERE, 367 FROM_HERE,
364 DOMStorageTaskRunner::PRIMARY_SEQUENCE, 368 DOMStorageTaskRunner::PRIMARY_SEQUENCE,
365 base::Bind(&DOMStorageContextImpl::Shutdown, context_)); 369 base::Bind(&DOMStorageContextImpl::Shutdown, context_));
366 } 370 }
367 371
368 void DOMStorageContextWrapper::Flush() { 372 void DOMStorageContextWrapper::Flush() {
369 DCHECK(context_.get()); 373 DCHECK(context_.get());
370 context_->task_runner()->PostShutdownBlockingTask( 374 context_->task_runner()->PostShutdownBlockingTask(
371 FROM_HERE, DOMStorageTaskRunner::PRIMARY_SEQUENCE, 375 FROM_HERE, DOMStorageTaskRunner::PRIMARY_SEQUENCE,
372 base::Bind(&DOMStorageContextImpl::Flush, context_)); 376 base::Bind(&DOMStorageContextImpl::Flush, context_));
373 } 377 }
374 378
375 void DOMStorageContextWrapper::OpenLocalStorage( 379 void DOMStorageContextWrapper::OpenLocalStorage(
376 const url::Origin& origin, 380 const url::Origin& origin,
377 mojom::LevelDBObserverPtr observer, 381 mojom::LevelDBObserverPtr observer,
378 mojom::LevelDBWrapperRequest request) { 382 mojom::LevelDBWrapperRequest request) {
379 mojo_state_->OpenLocalStorage( 383 mojo_state_->OpenLocalStorage(
380 origin, std::move(observer), std::move(request)); 384 origin, std::move(observer), std::move(request));
381 } 385 }
382 386
387 void DOMStorageContextWrapper::OnMemoryPressure(
388 base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level) {
389 DOMStorageContextImpl::PurgeOption purge_option =
390 DOMStorageContextImpl::PURGE_UNOPENED;
391 if (memory_pressure_level ==
392 base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL) {
393 purge_option = DOMStorageContextImpl::PURGE_AGGRESSIVE;
394 }
395 context_->task_runner()->PostTask(
396 FROM_HERE,
397 base::Bind(&DOMStorageContextImpl::PurgeMemory, context_, purge_option));
398 }
399
383 } // namespace content 400 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/dom_storage/dom_storage_context_wrapper.h ('k') | content/browser/dom_storage/dom_storage_database.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698