diff options
Diffstat (limited to 'components/browser_context_keyed_service/refcounted_browser_context_keyed_service.cc')
-rw-r--r-- | components/browser_context_keyed_service/refcounted_browser_context_keyed_service.cc | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/components/browser_context_keyed_service/refcounted_browser_context_keyed_service.cc b/components/browser_context_keyed_service/refcounted_browser_context_keyed_service.cc new file mode 100644 index 0000000..da92a6d --- /dev/null +++ b/components/browser_context_keyed_service/refcounted_browser_context_keyed_service.cc @@ -0,0 +1,34 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/browser_context_keyed_service/refcounted_browser_context_keyed_service.h" + +namespace impl { + +// static +void RefcountedProfileKeyedServiceTraits::Destruct( + const RefcountedProfileKeyedService* obj) { + if (obj->requires_destruction_on_thread_ && + !content::BrowserThread::CurrentlyOn(obj->thread_id_)) { + content::BrowserThread::DeleteSoon(obj->thread_id_, FROM_HERE, obj); + } else { + delete obj; + } +} + +} // namespace impl + +RefcountedProfileKeyedService::RefcountedProfileKeyedService() + : requires_destruction_on_thread_(false), + thread_id_(content::BrowserThread::UI) { +} + +RefcountedProfileKeyedService::RefcountedProfileKeyedService( + const content::BrowserThread::ID thread_id) + : requires_destruction_on_thread_(true), + thread_id_(thread_id) { +} + +RefcountedProfileKeyedService::~RefcountedProfileKeyedService() {} + |