OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |