From 7b47eec88cd017d1a202a2a34309c855cf3b0639 Mon Sep 17 00:00:00 2001 From: "jsbell@chromium.org" Date: Fri, 2 May 2014 18:13:25 +0000 Subject: Revert 267850 "ServiceWorker: Create sequenced task runner for d..." unit_tests failing a DCHECK, e.g.: out/Debug/unit_tests --gtest_filter='*BrowsingData*.*' [32145:32145:0502/110725:1563688322251:FATAL:ref_counted.cc(32)] Check failed: !in_dtor_. #0 0x7f45e6b227de base::debug::StackTrace::StackTrace() #1 0x7f45e6bb0a85 logging::LogMessage::~LogMessage() #2 0x7f45e6bcc063 base::subtle::RefCountedThreadSafeBase::AddRef() #3 0x7f45da6ad895 base::RefCountedThreadSafe<>::AddRef() #4 0x7f45daec3be2 scoped_refptr<>::scoped_refptr() #5 0x7f45daf0048b content::ServiceWorkerStorage::ServiceWorkerStorage() #6 0x7f45daea61e8 content::ServiceWorkerContextCore::ServiceWorkerContextCore() ... > ServiceWorker: Create sequenced task runner for database > > > BUG=369464 > TEST=pass all existing tests (no behavioral change) > NOTRY=true > > Review URL: https://codereview.chromium.org/265743012 TBR=nhiroki@chromium.org Review URL: https://codereview.chromium.org/262973002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267870 0039d316-1c4b-4281-b951-d872f2087c98 --- .../service_worker/embedded_worker_test_helper.cc | 4 +- .../service_worker/service_worker_context_core.cc | 5 +- .../service_worker/service_worker_context_core.h | 2 - .../service_worker_context_wrapper.cc | 54 +++++++--------------- .../service_worker_context_wrapper.h | 9 ---- .../service_worker_provider_host_unittest.cc | 1 - .../service_worker_registration_unittest.cc | 1 - .../service_worker/service_worker_storage.cc | 4 -- .../service_worker/service_worker_storage.h | 6 --- .../service_worker_storage_unittest.cc | 1 - 10 files changed, 19 insertions(+), 68 deletions(-) (limited to 'content/browser/service_worker') diff --git a/content/browser/service_worker/embedded_worker_test_helper.cc b/content/browser/service_worker/embedded_worker_test_helper.cc index e6f8ce5..698e260d 100644 --- a/content/browser/service_worker/embedded_worker_test_helper.cc +++ b/content/browser/service_worker/embedded_worker_test_helper.cc @@ -23,9 +23,7 @@ EmbeddedWorkerTestHelper::EmbeddedWorkerTestHelper(int mock_render_process_id) : wrapper_(new ServiceWorkerContextWrapper(NULL)), next_thread_id_(0), weak_factory_(this) { - wrapper_->InitForTesting(base::FilePath(), - base::MessageLoopProxy::current(), - NULL); + wrapper_->Init(base::FilePath(), NULL); scoped_ptr process_manager( new ServiceWorkerProcessManager(wrapper_)); process_manager->SetProcessRefcountOpsForTest(base::Bind(AlwaysTrue), diff --git a/content/browser/service_worker/service_worker_context_core.cc b/content/browser/service_worker/service_worker_context_core.cc index 7a8e386..d654661 100644 --- a/content/browser/service_worker/service_worker_context_core.cc +++ b/content/browser/service_worker/service_worker_context_core.cc @@ -77,12 +77,11 @@ void ServiceWorkerContextCore::ProviderHostIterator::Initialize() { ServiceWorkerContextCore::ServiceWorkerContextCore( const base::FilePath& path, - base::SequencedTaskRunner* database_task_runner, quota::QuotaManagerProxy* quota_manager_proxy, ObserverListThreadSafe* observer_list, scoped_ptr process_manager) - : storage_(new ServiceWorkerStorage( - path, AsWeakPtr(), database_task_runner, quota_manager_proxy)), + : storage_( + new ServiceWorkerStorage(path, AsWeakPtr(), quota_manager_proxy)), embedded_worker_registry_(new EmbeddedWorkerRegistry(AsWeakPtr())), job_coordinator_(new ServiceWorkerJobCoordinator(AsWeakPtr())), process_manager_(process_manager.Pass()), diff --git a/content/browser/service_worker/service_worker_context_core.h b/content/browser/service_worker/service_worker_context_core.h index 54dcc9d..55d64ae 100644 --- a/content/browser/service_worker/service_worker_context_core.h +++ b/content/browser/service_worker/service_worker_context_core.h @@ -25,7 +25,6 @@ class GURL; namespace base { class FilePath; -class SequencedTaskRunner; } namespace quota { @@ -87,7 +86,6 @@ class CONTENT_EXPORT ServiceWorkerContextCore // be called on the thread which called AddObserver() of |observer_list|. ServiceWorkerContextCore( const base::FilePath& user_data_directory, - base::SequencedTaskRunner* database_task_runner, quota::QuotaManagerProxy* quota_manager_proxy, ObserverListThreadSafe* observer_list, scoped_ptr process_manager); diff --git a/content/browser/service_worker/service_worker_context_wrapper.cc b/content/browser/service_worker/service_worker_context_wrapper.cc index 4acbed5..e6a9004 100644 --- a/content/browser/service_worker/service_worker_context_wrapper.cc +++ b/content/browser/service_worker/service_worker_context_wrapper.cc @@ -5,7 +5,6 @@ #include "content/browser/service_worker/service_worker_context_wrapper.h" #include "base/files/file_path.h" -#include "base/threading/sequenced_worker_pool.h" #include "content/browser/service_worker/service_worker_context_core.h" #include "content/browser/service_worker/service_worker_context_observer.h" #include "content/browser/service_worker/service_worker_process_manager.h" @@ -27,12 +26,22 @@ ServiceWorkerContextWrapper::~ServiceWorkerContextWrapper() { void ServiceWorkerContextWrapper::Init( const base::FilePath& user_data_directory, quota::QuotaManagerProxy* quota_manager_proxy) { - base::SequencedTaskRunner* database_task_runner = - BrowserThread::GetBlockingPool()-> - GetSequencedTaskRunnerWithShutdownBehavior( - BrowserThread::GetBlockingPool()->GetSequenceToken(), - base::SequencedWorkerPool::SKIP_ON_SHUTDOWN); - InitInternal(user_data_directory, database_task_runner, quota_manager_proxy); + if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { + BrowserThread::PostTask( + BrowserThread::IO, + FROM_HERE, + base::Bind(&ServiceWorkerContextWrapper::Init, + this, + user_data_directory, + make_scoped_refptr(quota_manager_proxy))); + return; + } + DCHECK(!context_core_); + context_core_.reset(new ServiceWorkerContextCore( + user_data_directory, + quota_manager_proxy, + observer_list_, + make_scoped_ptr(new ServiceWorkerProcessManager(this)))); } void ServiceWorkerContextWrapper::Shutdown() { @@ -128,35 +137,4 @@ void ServiceWorkerContextWrapper::RemoveObserver( observer_list_->RemoveObserver(observer); } -void ServiceWorkerContextWrapper::InitForTesting( - const base::FilePath& user_data_directory, - base::SequencedTaskRunner* database_task_runner, - quota::QuotaManagerProxy* quota_manager_proxy) { - InitInternal(user_data_directory, database_task_runner, quota_manager_proxy); -} - -void ServiceWorkerContextWrapper::InitInternal( - const base::FilePath& user_data_directory, - base::SequencedTaskRunner* database_task_runner, - quota::QuotaManagerProxy* quota_manager_proxy) { - if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { - BrowserThread::PostTask( - BrowserThread::IO, - FROM_HERE, - base::Bind(&ServiceWorkerContextWrapper::InitInternal, - this, - user_data_directory, - make_scoped_refptr(database_task_runner), - make_scoped_refptr(quota_manager_proxy))); - return; - } - DCHECK(!context_core_); - context_core_.reset(new ServiceWorkerContextCore( - user_data_directory, - database_task_runner, - quota_manager_proxy, - observer_list_, - make_scoped_ptr(new ServiceWorkerProcessManager(this)))); -} - } // namespace content diff --git a/content/browser/service_worker/service_worker_context_wrapper.h b/content/browser/service_worker/service_worker_context_wrapper.h index 6b5b841..6d53549 100644 --- a/content/browser/service_worker/service_worker_context_wrapper.h +++ b/content/browser/service_worker/service_worker_context_wrapper.h @@ -16,7 +16,6 @@ namespace base { class FilePath; -class SequencedTaskRunner; } namespace quota { @@ -62,17 +61,9 @@ class CONTENT_EXPORT ServiceWorkerContextWrapper private: friend class base::RefCountedThreadSafe; - friend class EmbeddedWorkerTestHelper; friend class ServiceWorkerProcessManager; virtual ~ServiceWorkerContextWrapper(); - void InitForTesting(const base::FilePath& user_data_directory, - base::SequencedTaskRunner* database_task_runner, - quota::QuotaManagerProxy* quota_manager_proxy); - void InitInternal(const base::FilePath& user_data_directory, - base::SequencedTaskRunner* database_task_runner, - quota::QuotaManagerProxy* quota_manager_proxy); - const scoped_refptr > observer_list_; // Cleared in Shutdown(): diff --git a/content/browser/service_worker/service_worker_provider_host_unittest.cc b/content/browser/service_worker/service_worker_provider_host_unittest.cc index 5da54fb..03c513a 100644 --- a/content/browser/service_worker/service_worker_provider_host_unittest.cc +++ b/content/browser/service_worker/service_worker_provider_host_unittest.cc @@ -25,7 +25,6 @@ class ServiceWorkerProviderHostTest : public testing::Test { virtual void SetUp() OVERRIDE { context_.reset(new ServiceWorkerContextCore( base::FilePath(), - base::MessageLoopProxy::current(), NULL, NULL, scoped_ptr())); diff --git a/content/browser/service_worker/service_worker_registration_unittest.cc b/content/browser/service_worker/service_worker_registration_unittest.cc index f0c546f..d1015b2 100644 --- a/content/browser/service_worker/service_worker_registration_unittest.cc +++ b/content/browser/service_worker/service_worker_registration_unittest.cc @@ -23,7 +23,6 @@ class ServiceWorkerRegistrationTest : public testing::Test { virtual void SetUp() OVERRIDE { context_.reset(new ServiceWorkerContextCore( base::FilePath(), - base::MessageLoopProxy::current(), NULL, NULL, scoped_ptr())); diff --git a/content/browser/service_worker/service_worker_storage.cc b/content/browser/service_worker/service_worker_storage.cc index 692e9be..7d1712f 100644 --- a/content/browser/service_worker/service_worker_storage.cc +++ b/content/browser/service_worker/service_worker_storage.cc @@ -5,9 +5,7 @@ #include "content/browser/service_worker/service_worker_storage.h" #include - #include "base/message_loop/message_loop.h" -#include "base/sequenced_task_runner.h" #include "content/browser/service_worker/service_worker_context_core.h" #include "content/browser/service_worker/service_worker_info.h" #include "content/browser/service_worker/service_worker_registration.h" @@ -48,14 +46,12 @@ const base::FilePath::CharType kServiceWorkerDirectory[] = ServiceWorkerStorage::ServiceWorkerStorage( const base::FilePath& path, base::WeakPtr context, - base::SequencedTaskRunner* database_task_runner, quota::QuotaManagerProxy* quota_manager_proxy) : last_registration_id_(0), last_version_id_(0), last_resource_id_(0), simulated_lazy_initted_(false), context_(context), - database_task_runner_(database_task_runner), quota_manager_proxy_(quota_manager_proxy) { if (!path.empty()) path_ = path.Append(kServiceWorkerDirectory); diff --git a/content/browser/service_worker/service_worker_storage.h b/content/browser/service_worker/service_worker_storage.h index ee524e0..3932a72 100644 --- a/content/browser/service_worker/service_worker_storage.h +++ b/content/browser/service_worker/service_worker_storage.h @@ -18,10 +18,6 @@ #include "content/common/service_worker/service_worker_status_code.h" #include "url/gurl.h" -namespace base { -class SequencedTaskRunner; -} - namespace quota { class QuotaManagerProxy; } @@ -50,7 +46,6 @@ class CONTENT_EXPORT ServiceWorkerStorage { ServiceWorkerStorage(const base::FilePath& path, base::WeakPtr context, - base::SequencedTaskRunner* database_task_runner, quota::QuotaManagerProxy* quota_manager_proxy); ~ServiceWorkerStorage(); @@ -142,7 +137,6 @@ class CONTENT_EXPORT ServiceWorkerStorage { base::FilePath path_; base::WeakPtr context_; - scoped_refptr database_task_runner_; scoped_refptr quota_manager_proxy_; DISALLOW_COPY_AND_ASSIGN(ServiceWorkerStorage); diff --git a/content/browser/service_worker/service_worker_storage_unittest.cc b/content/browser/service_worker/service_worker_storage_unittest.cc index 6d8b30f..80ee8af 100644 --- a/content/browser/service_worker/service_worker_storage_unittest.cc +++ b/content/browser/service_worker/service_worker_storage_unittest.cc @@ -74,7 +74,6 @@ class ServiceWorkerStorageTest : public testing::Test { virtual void SetUp() OVERRIDE { context_.reset(new ServiceWorkerContextCore( base::FilePath(), - base::MessageLoopProxy::current(), NULL, NULL, scoped_ptr())); -- cgit v1.1