diff options
author | jsbell@chromium.org <jsbell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-02 18:13:25 +0000 |
---|---|---|
committer | jsbell@chromium.org <jsbell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-02 18:13:25 +0000 |
commit | 7b47eec88cd017d1a202a2a34309c855cf3b0639 (patch) | |
tree | 0f8ae12188a7f56eedb609ba4874c050a116ecb5 /content/browser/service_worker | |
parent | 8814a7a9781d8a0ba026665f44aa6395a60d9d97 (diff) | |
download | chromium_src-7b47eec88cd017d1a202a2a34309c855cf3b0639.zip chromium_src-7b47eec88cd017d1a202a2a34309c855cf3b0639.tar.gz chromium_src-7b47eec88cd017d1a202a2a34309c855cf3b0639.tar.bz2 |
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
Diffstat (limited to 'content/browser/service_worker')
10 files changed, 19 insertions, 68 deletions
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<ServiceWorkerProcessManager> 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<ServiceWorkerContextObserver>* observer_list, scoped_ptr<ServiceWorkerProcessManager> 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<ServiceWorkerContextObserver>* observer_list, scoped_ptr<ServiceWorkerProcessManager> 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<ServiceWorkerContextWrapper>; - 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<ObserverListThreadSafe<ServiceWorkerContextObserver> > 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<ServiceWorkerProcessManager>())); 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<ServiceWorkerProcessManager>())); 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 <string> - #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<ServiceWorkerContextCore> 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<ServiceWorkerContextCore> 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<ServiceWorkerContextCore> context_; - scoped_refptr<base::SequencedTaskRunner> database_task_runner_; scoped_refptr<quota::QuotaManagerProxy> 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<ServiceWorkerProcessManager>())); |