| Index: content/browser/plugin_service_impl.cc
|
| diff --git a/content/browser/plugin_service_impl.cc b/content/browser/plugin_service_impl.cc
|
| index 7e6afb105aad13a5cfa1d0d32ff5ac624db59c01..86859ca85b67499051504ce257cf0d0b88274787 100644
|
| --- a/content/browser/plugin_service_impl.cc
|
| +++ b/content/browser/plugin_service_impl.cc
|
| @@ -11,11 +11,13 @@
|
| #include "base/compiler_specific.h"
|
| #include "base/files/file_path.h"
|
| #include "base/location.h"
|
| +#include "base/logging.h"
|
| #include "base/metrics/histogram_macros.h"
|
| #include "base/single_thread_task_runner.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "base/synchronization/waitable_event.h"
|
| +#include "base/threading/sequenced_worker_pool.h"
|
| #include "base/threading/thread.h"
|
| #include "build/build_config.h"
|
| #include "content/browser/ppapi_plugin_process_host.h"
|
| @@ -49,10 +51,8 @@ enum FlashUsage {
|
|
|
| // Callback set on the PluginList to assert that plugin loading happens on the
|
| // correct thread.
|
| -void WillLoadPluginsCallback(
|
| - base::SequencedWorkerPool::SequenceToken token) {
|
| - CHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread(
|
| - token));
|
| +void WillLoadPluginsCallback(base::SequenceChecker* sequence_checker) {
|
| + DCHECK(sequence_checker->CalledOnValidSequence());
|
| }
|
|
|
| } // namespace
|
| @@ -79,6 +79,8 @@ PluginServiceImpl* PluginServiceImpl::GetInstance() {
|
|
|
| PluginServiceImpl::PluginServiceImpl()
|
| : filter_(NULL) {
|
| + plugin_list_sequence_checker_.DetachFromSequence();
|
| +
|
| // Collect the total number of browser processes (which create
|
| // PluginServiceImpl objects, to be precise). The number is used to normalize
|
| // the number of processes which start at least one NPAPI/PPAPI Flash process.
|
| @@ -94,9 +96,13 @@ PluginServiceImpl::~PluginServiceImpl() {
|
| }
|
|
|
| void PluginServiceImpl::Init() {
|
| - plugin_list_token_ = base::SequencedWorkerPool::GetSequenceToken();
|
| + plugin_list_task_runner_ =
|
| + BrowserThread::GetBlockingPool()
|
| + ->GetSequencedTaskRunnerWithShutdownBehavior(
|
| + base::SequencedWorkerPool::GetSequenceToken(),
|
| + base::SequencedWorkerPool::SKIP_ON_SHUTDOWN);
|
| PluginList::Singleton()->set_will_load_plugins_callback(
|
| - base::Bind(&WillLoadPluginsCallback, plugin_list_token_));
|
| + base::Bind(&WillLoadPluginsCallback, &plugin_list_sequence_checker_));
|
|
|
| RegisterPepperPlugins();
|
| }
|
| @@ -305,18 +311,16 @@ void PluginServiceImpl::GetPlugins(const GetPluginsCallback& callback) {
|
| scoped_refptr<base::SingleThreadTaskRunner> target_task_runner(
|
| base::ThreadTaskRunnerHandle::Get());
|
|
|
| - BrowserThread::GetBlockingPool()->PostSequencedWorkerTaskWithShutdownBehavior(
|
| - plugin_list_token_, FROM_HERE,
|
| + plugin_list_task_runner_->PostTask(
|
| + FROM_HERE,
|
| base::Bind(&PluginServiceImpl::GetPluginsInternal, base::Unretained(this),
|
| - base::RetainedRef(target_task_runner), callback),
|
| - base::SequencedWorkerPool::SKIP_ON_SHUTDOWN);
|
| + base::RetainedRef(target_task_runner), callback));
|
| }
|
|
|
| void PluginServiceImpl::GetPluginsInternal(
|
| base::SingleThreadTaskRunner* target_task_runner,
|
| const PluginService::GetPluginsCallback& callback) {
|
| - DCHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread(
|
| - plugin_list_token_));
|
| + DCHECK(plugin_list_sequence_checker_.CalledOnValidSequence());
|
|
|
| std::vector<WebPluginInfo> plugins;
|
| PluginList::Singleton()->GetPlugins(&plugins);
|
|
|