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 "content/browser/storage_partition_impl.h" | 5 #include "content/browser/storage_partition_impl.h" |
6 | 6 |
7 #include "base/sequenced_task_runner.h" | 7 #include "base/sequenced_task_runner.h" |
8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
9 #include "content/browser/browser_main_loop.h" | 9 #include "content/browser/browser_main_loop.h" |
10 #include "content/browser/fileapi/browser_file_system_helper.h" | 10 #include "content/browser/fileapi/browser_file_system_helper.h" |
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
353 new StoragePartitionImpl::QuotaManagedDataDeletionHelper( | 353 new StoragePartitionImpl::QuotaManagedDataDeletionHelper( |
354 remove_mask, | 354 remove_mask, |
355 quota_storage_remove_mask, | 355 quota_storage_remove_mask, |
356 storage_origin, | 356 storage_origin, |
357 callback); | 357 callback); |
358 helper->ClearDataOnIOThread(quota_manager, begin, special_storage_policy, | 358 helper->ClearDataOnIOThread(quota_manager, begin, special_storage_policy, |
359 origin_matcher); | 359 origin_matcher); |
360 } | 360 } |
361 | 361 |
362 StoragePartitionImpl::StoragePartitionImpl( | 362 StoragePartitionImpl::StoragePartitionImpl( |
| 363 BrowserContext* browser_context, |
363 const base::FilePath& partition_path, | 364 const base::FilePath& partition_path, |
364 storage::QuotaManager* quota_manager, | 365 storage::QuotaManager* quota_manager, |
365 ChromeAppCacheService* appcache_service, | 366 ChromeAppCacheService* appcache_service, |
366 storage::FileSystemContext* filesystem_context, | 367 storage::FileSystemContext* filesystem_context, |
367 storage::DatabaseTracker* database_tracker, | 368 storage::DatabaseTracker* database_tracker, |
368 DOMStorageContextWrapper* dom_storage_context, | 369 DOMStorageContextWrapper* dom_storage_context, |
369 IndexedDBContextImpl* indexed_db_context, | 370 IndexedDBContextImpl* indexed_db_context, |
370 ServiceWorkerContextWrapper* service_worker_context, | 371 ServiceWorkerContextWrapper* service_worker_context, |
371 WebRTCIdentityStore* webrtc_identity_store, | 372 WebRTCIdentityStore* webrtc_identity_store, |
372 storage::SpecialStoragePolicy* special_storage_policy, | 373 storage::SpecialStoragePolicy* special_storage_policy, |
373 GeofencingManager* geofencing_manager, | 374 GeofencingManager* geofencing_manager, |
374 HostZoomLevelContext* host_zoom_level_context, | 375 HostZoomLevelContext* host_zoom_level_context, |
375 NavigatorConnectContext* navigator_connect_context) | 376 NavigatorConnectContext* navigator_connect_context) |
376 : partition_path_(partition_path), | 377 : partition_path_(partition_path), |
377 quota_manager_(quota_manager), | 378 quota_manager_(quota_manager), |
378 appcache_service_(appcache_service), | 379 appcache_service_(appcache_service), |
379 filesystem_context_(filesystem_context), | 380 filesystem_context_(filesystem_context), |
380 database_tracker_(database_tracker), | 381 database_tracker_(database_tracker), |
381 dom_storage_context_(dom_storage_context), | 382 dom_storage_context_(dom_storage_context), |
382 indexed_db_context_(indexed_db_context), | 383 indexed_db_context_(indexed_db_context), |
383 service_worker_context_(service_worker_context), | 384 service_worker_context_(service_worker_context), |
384 webrtc_identity_store_(webrtc_identity_store), | 385 webrtc_identity_store_(webrtc_identity_store), |
385 special_storage_policy_(special_storage_policy), | 386 special_storage_policy_(special_storage_policy), |
386 geofencing_manager_(geofencing_manager), | 387 geofencing_manager_(geofencing_manager), |
387 host_zoom_level_context_(host_zoom_level_context), | 388 host_zoom_level_context_(host_zoom_level_context), |
388 navigator_connect_context_(navigator_connect_context) { | 389 navigator_connect_context_(navigator_connect_context), |
| 390 browser_context_(browser_context) { |
389 } | 391 } |
390 | 392 |
391 StoragePartitionImpl::~StoragePartitionImpl() { | 393 StoragePartitionImpl::~StoragePartitionImpl() { |
| 394 browser_context_ = nullptr; |
| 395 |
392 // These message loop checks are just to avoid leaks in unittests. | 396 // These message loop checks are just to avoid leaks in unittests. |
393 if (GetDatabaseTracker() && | 397 if (GetDatabaseTracker() && |
394 BrowserThread::IsMessageLoopValid(BrowserThread::FILE)) { | 398 BrowserThread::IsMessageLoopValid(BrowserThread::FILE)) { |
395 BrowserThread::PostTask( | 399 BrowserThread::PostTask( |
396 BrowserThread::FILE, | 400 BrowserThread::FILE, |
397 FROM_HERE, | 401 FROM_HERE, |
398 base::Bind(&storage::DatabaseTracker::Shutdown, GetDatabaseTracker())); | 402 base::Bind(&storage::DatabaseTracker::Shutdown, GetDatabaseTracker())); |
399 } | 403 } |
400 | 404 |
401 if (GetFileSystemContext()) | 405 if (GetFileSystemContext()) |
402 GetFileSystemContext()->Shutdown(); | 406 GetFileSystemContext()->Shutdown(); |
403 | 407 |
404 if (GetDOMStorageContext()) | 408 if (GetDOMStorageContext()) |
405 GetDOMStorageContext()->Shutdown(); | 409 GetDOMStorageContext()->Shutdown(); |
406 | 410 |
407 if (GetServiceWorkerContext()) | 411 if (GetServiceWorkerContext()) |
408 GetServiceWorkerContext()->Shutdown(); | 412 GetServiceWorkerContext()->Shutdown(); |
409 | 413 |
410 if (GetGeofencingManager()) | 414 if (GetGeofencingManager()) |
411 GetGeofencingManager()->Shutdown(); | 415 GetGeofencingManager()->Shutdown(); |
412 } | 416 } |
413 | 417 |
414 // TODO(ajwong): Break the direct dependency on |context|. We only | |
415 // need 3 pieces of info from it. | |
416 StoragePartitionImpl* StoragePartitionImpl::Create( | 418 StoragePartitionImpl* StoragePartitionImpl::Create( |
417 BrowserContext* context, | 419 BrowserContext* context, |
418 bool in_memory, | 420 bool in_memory, |
419 const base::FilePath& partition_path) { | 421 const base::FilePath& partition_path) { |
420 // Ensure that these methods are called on the UI thread, except for | 422 // Ensure that these methods are called on the UI thread, except for |
421 // unittests where a UI thread might not have been created. | 423 // unittests where a UI thread might not have been created. |
422 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) || | 424 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) || |
423 !BrowserThread::IsMessageLoopValid(BrowserThread::UI)); | 425 !BrowserThread::IsMessageLoopValid(BrowserThread::UI)); |
424 | 426 |
425 // All of the clients have to be created and registered with the | 427 // All of the clients have to be created and registered with the |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
484 new GeofencingManager(service_worker_context); | 486 new GeofencingManager(service_worker_context); |
485 geofencing_manager->Init(); | 487 geofencing_manager->Init(); |
486 | 488 |
487 scoped_refptr<HostZoomLevelContext> host_zoom_level_context( | 489 scoped_refptr<HostZoomLevelContext> host_zoom_level_context( |
488 new HostZoomLevelContext( | 490 new HostZoomLevelContext( |
489 context->CreateZoomLevelDelegate(partition_path))); | 491 context->CreateZoomLevelDelegate(partition_path))); |
490 | 492 |
491 scoped_refptr<NavigatorConnectContext> navigator_connect_context = | 493 scoped_refptr<NavigatorConnectContext> navigator_connect_context = |
492 new NavigatorConnectContext(service_worker_context); | 494 new NavigatorConnectContext(service_worker_context); |
493 | 495 |
494 return new StoragePartitionImpl( | 496 StoragePartitionImpl* storage_partition = new StoragePartitionImpl( |
495 partition_path, quota_manager.get(), appcache_service.get(), | 497 context, partition_path, quota_manager.get(), appcache_service.get(), |
496 filesystem_context.get(), database_tracker.get(), | 498 filesystem_context.get(), database_tracker.get(), |
497 dom_storage_context.get(), indexed_db_context.get(), | 499 dom_storage_context.get(), indexed_db_context.get(), |
498 service_worker_context.get(), webrtc_identity_store.get(), | 500 service_worker_context.get(), webrtc_identity_store.get(), |
499 special_storage_policy.get(), geofencing_manager.get(), | 501 special_storage_policy.get(), geofencing_manager.get(), |
500 host_zoom_level_context.get(), navigator_connect_context.get()); | 502 host_zoom_level_context.get(), navigator_connect_context.get()); |
| 503 |
| 504 service_worker_context->set_storage_partition(storage_partition); |
| 505 |
| 506 return storage_partition; |
501 } | 507 } |
502 | 508 |
503 base::FilePath StoragePartitionImpl::GetPath() { | 509 base::FilePath StoragePartitionImpl::GetPath() { |
504 return partition_path_; | 510 return partition_path_; |
505 } | 511 } |
506 | 512 |
507 net::URLRequestContextGetter* StoragePartitionImpl::GetURLRequestContext() { | 513 net::URLRequestContextGetter* StoragePartitionImpl::GetURLRequestContext() { |
508 return url_request_context_.get(); | 514 return url_request_context_.get(); |
509 } | 515 } |
510 | 516 |
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
846 const base::Time end, | 852 const base::Time end, |
847 const base::Closure& callback) { | 853 const base::Closure& callback) { |
848 ClearDataImpl(remove_mask, quota_storage_remove_mask, storage_origin, | 854 ClearDataImpl(remove_mask, quota_storage_remove_mask, storage_origin, |
849 origin_matcher, GetURLRequestContext(), begin, end, callback); | 855 origin_matcher, GetURLRequestContext(), begin, end, callback); |
850 } | 856 } |
851 | 857 |
852 WebRTCIdentityStore* StoragePartitionImpl::GetWebRTCIdentityStore() { | 858 WebRTCIdentityStore* StoragePartitionImpl::GetWebRTCIdentityStore() { |
853 return webrtc_identity_store_.get(); | 859 return webrtc_identity_store_.get(); |
854 } | 860 } |
855 | 861 |
| 862 BrowserContext* StoragePartitionImpl::browser_context() const { |
| 863 return browser_context_; |
| 864 } |
| 865 |
856 void StoragePartitionImpl::OverrideQuotaManagerForTesting( | 866 void StoragePartitionImpl::OverrideQuotaManagerForTesting( |
857 storage::QuotaManager* quota_manager) { | 867 storage::QuotaManager* quota_manager) { |
858 quota_manager_ = quota_manager; | 868 quota_manager_ = quota_manager; |
859 } | 869 } |
860 | 870 |
861 void StoragePartitionImpl::OverrideSpecialStoragePolicyForTesting( | 871 void StoragePartitionImpl::OverrideSpecialStoragePolicyForTesting( |
862 storage::SpecialStoragePolicy* special_storage_policy) { | 872 storage::SpecialStoragePolicy* special_storage_policy) { |
863 special_storage_policy_ = special_storage_policy; | 873 special_storage_policy_ = special_storage_policy; |
864 } | 874 } |
865 | 875 |
866 void StoragePartitionImpl::SetURLRequestContext( | 876 void StoragePartitionImpl::SetURLRequestContext( |
867 net::URLRequestContextGetter* url_request_context) { | 877 net::URLRequestContextGetter* url_request_context) { |
868 url_request_context_ = url_request_context; | 878 url_request_context_ = url_request_context; |
869 } | 879 } |
870 | 880 |
871 void StoragePartitionImpl::SetMediaURLRequestContext( | 881 void StoragePartitionImpl::SetMediaURLRequestContext( |
872 net::URLRequestContextGetter* media_url_request_context) { | 882 net::URLRequestContextGetter* media_url_request_context) { |
873 media_url_request_context_ = media_url_request_context; | 883 media_url_request_context_ = media_url_request_context; |
874 } | 884 } |
875 | 885 |
876 } // namespace content | 886 } // namespace content |
OLD | NEW |