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

Side by Side Diff: content/browser/storage_partition_impl.cc

Issue 852463002: Keep track of ServiceWorkerContext's BrowserContext and expose it. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@nullptr
Patch Set: Created 5 years, 11 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 (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
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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 ->message_loop_proxy().get() 463 ->message_loop_proxy().get()
462 : NULL; 464 : NULL;
463 scoped_refptr<IndexedDBContextImpl> indexed_db_context = 465 scoped_refptr<IndexedDBContextImpl> indexed_db_context =
464 new IndexedDBContextImpl(path, 466 new IndexedDBContextImpl(path,
465 context->GetSpecialStoragePolicy(), 467 context->GetSpecialStoragePolicy(),
466 quota_manager->proxy(), 468 quota_manager->proxy(),
467 idb_task_runner); 469 idb_task_runner);
468 470
469 scoped_refptr<ServiceWorkerContextWrapper> service_worker_context = 471 scoped_refptr<ServiceWorkerContextWrapper> service_worker_context =
470 new ServiceWorkerContextWrapper(context); 472 new ServiceWorkerContextWrapper(context);
471 service_worker_context->Init( 473 // Init() requires |storage_partition| so is done after the object is created.
michaeln 2015/01/13 21:27:32 To avoid having to alter construction ordering, it
mlamouri (slow - plz ping) 2015/01/14 15:46:24 Ok. I guess we will never know if there are some s
472 path, quota_manager->proxy(), context->GetSpecialStoragePolicy());
473 474
474 scoped_refptr<ChromeAppCacheService> appcache_service = 475 scoped_refptr<ChromeAppCacheService> appcache_service =
475 new ChromeAppCacheService(quota_manager->proxy()); 476 new ChromeAppCacheService(quota_manager->proxy());
476 477
477 scoped_refptr<WebRTCIdentityStore> webrtc_identity_store( 478 scoped_refptr<WebRTCIdentityStore> webrtc_identity_store(
478 new WebRTCIdentityStore(path, context->GetSpecialStoragePolicy())); 479 new WebRTCIdentityStore(path, context->GetSpecialStoragePolicy()));
479 480
480 scoped_refptr<storage::SpecialStoragePolicy> special_storage_policy( 481 scoped_refptr<storage::SpecialStoragePolicy> special_storage_policy(
481 context->GetSpecialStoragePolicy()); 482 context->GetSpecialStoragePolicy());
482 483
483 scoped_refptr<GeofencingManager> geofencing_manager = 484 scoped_refptr<GeofencingManager> geofencing_manager =
484 new GeofencingManager(service_worker_context); 485 new GeofencingManager(service_worker_context);
485 geofencing_manager->Init(); 486 geofencing_manager->Init();
486 487
487 scoped_refptr<HostZoomLevelContext> host_zoom_level_context( 488 scoped_refptr<HostZoomLevelContext> host_zoom_level_context(
488 new HostZoomLevelContext( 489 new HostZoomLevelContext(
489 context->CreateZoomLevelDelegate(partition_path))); 490 context->CreateZoomLevelDelegate(partition_path)));
490 491
491 scoped_refptr<NavigatorConnectContext> navigator_connect_context = 492 scoped_refptr<NavigatorConnectContext> navigator_connect_context =
492 new NavigatorConnectContext(service_worker_context); 493 new NavigatorConnectContext(service_worker_context);
493 494
494 return new StoragePartitionImpl( 495 StoragePartitionImpl* storage_partition = new StoragePartitionImpl(
495 partition_path, quota_manager.get(), appcache_service.get(), 496 context, partition_path, quota_manager.get(), appcache_service.get(),
496 filesystem_context.get(), database_tracker.get(), 497 filesystem_context.get(), database_tracker.get(),
497 dom_storage_context.get(), indexed_db_context.get(), 498 dom_storage_context.get(), indexed_db_context.get(),
498 service_worker_context.get(), webrtc_identity_store.get(), 499 service_worker_context.get(), webrtc_identity_store.get(),
499 special_storage_policy.get(), geofencing_manager.get(), 500 special_storage_policy.get(), geofencing_manager.get(),
500 host_zoom_level_context.get(), navigator_connect_context.get()); 501 host_zoom_level_context.get(), navigator_connect_context.get());
502
503 service_worker_context->Init(storage_partition,
504 path,
505 quota_manager->proxy(),
506 context->GetSpecialStoragePolicy());
507
508 return storage_partition;
501 } 509 }
502 510
503 base::FilePath StoragePartitionImpl::GetPath() { 511 base::FilePath StoragePartitionImpl::GetPath() {
504 return partition_path_; 512 return partition_path_;
505 } 513 }
506 514
507 net::URLRequestContextGetter* StoragePartitionImpl::GetURLRequestContext() { 515 net::URLRequestContextGetter* StoragePartitionImpl::GetURLRequestContext() {
508 return url_request_context_.get(); 516 return url_request_context_.get();
509 } 517 }
510 518
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 const base::Time end, 854 const base::Time end,
847 const base::Closure& callback) { 855 const base::Closure& callback) {
848 ClearDataImpl(remove_mask, quota_storage_remove_mask, storage_origin, 856 ClearDataImpl(remove_mask, quota_storage_remove_mask, storage_origin,
849 origin_matcher, GetURLRequestContext(), begin, end, callback); 857 origin_matcher, GetURLRequestContext(), begin, end, callback);
850 } 858 }
851 859
852 WebRTCIdentityStore* StoragePartitionImpl::GetWebRTCIdentityStore() { 860 WebRTCIdentityStore* StoragePartitionImpl::GetWebRTCIdentityStore() {
853 return webrtc_identity_store_.get(); 861 return webrtc_identity_store_.get();
854 } 862 }
855 863
864 BrowserContext* StoragePartitionImpl::browser_context() const {
865 return browser_context_;
866 }
867
856 void StoragePartitionImpl::OverrideQuotaManagerForTesting( 868 void StoragePartitionImpl::OverrideQuotaManagerForTesting(
857 storage::QuotaManager* quota_manager) { 869 storage::QuotaManager* quota_manager) {
858 quota_manager_ = quota_manager; 870 quota_manager_ = quota_manager;
859 } 871 }
860 872
861 void StoragePartitionImpl::OverrideSpecialStoragePolicyForTesting( 873 void StoragePartitionImpl::OverrideSpecialStoragePolicyForTesting(
862 storage::SpecialStoragePolicy* special_storage_policy) { 874 storage::SpecialStoragePolicy* special_storage_policy) {
863 special_storage_policy_ = special_storage_policy; 875 special_storage_policy_ = special_storage_policy;
864 } 876 }
865 877
866 void StoragePartitionImpl::SetURLRequestContext( 878 void StoragePartitionImpl::SetURLRequestContext(
867 net::URLRequestContextGetter* url_request_context) { 879 net::URLRequestContextGetter* url_request_context) {
868 url_request_context_ = url_request_context; 880 url_request_context_ = url_request_context;
869 } 881 }
870 882
871 void StoragePartitionImpl::SetMediaURLRequestContext( 883 void StoragePartitionImpl::SetMediaURLRequestContext(
872 net::URLRequestContextGetter* media_url_request_context) { 884 net::URLRequestContextGetter* media_url_request_context) {
873 media_url_request_context_ = media_url_request_context; 885 media_url_request_context_ = media_url_request_context;
874 } 886 }
875 887
876 } // namespace content 888 } // namespace content
OLDNEW
« content/browser/storage_partition_impl.h ('K') | « content/browser/storage_partition_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698