summaryrefslogtreecommitdiffstats
path: root/base
diff options
context:
space:
mode:
authormilanb@chromium.org <milanb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-15 11:56:10 +0000
committermilanb@chromium.org <milanb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-15 11:56:10 +0000
commitb404d3508039b7b186847e20e49a469c0a0997e7 (patch)
treecc69c394f718ce6597ab952208bddc26f2f103a3 /base
parent82ebf8bc50c6acf951c422c33ada6f9738fc86ce (diff)
downloadchromium_src-b404d3508039b7b186847e20e49a469c0a0997e7.zip
chromium_src-b404d3508039b7b186847e20e49a469c0a0997e7.tar.gz
chromium_src-b404d3508039b7b186847e20e49a469c0a0997e7.tar.bz2
Make sure that shutdown blocking SequencedWorkerPool use Critical Closures.
SequencedWorkerPool task that are pushed with the shutdown blocking enum must block shutdown, which means that the task execution is important enough that it has to be executed before going into background. Those tasks are transformed into CriticalTasks. BUG=none Review URL: https://chromiumcodereview.appspot.com/10829318 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@151685 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r--base/threading/sequenced_worker_pool.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/base/threading/sequenced_worker_pool.cc b/base/threading/sequenced_worker_pool.cc
index fb6b247..68127a5 100644
--- a/base/threading/sequenced_worker_pool.cc
+++ b/base/threading/sequenced_worker_pool.cc
@@ -13,6 +13,7 @@
#include "base/atomicops.h"
#include "base/callback.h"
#include "base/compiler_specific.h"
+#include "base/critical_closure.h"
#include "base/logging.h"
#include "base/memory/linked_ptr.h"
#include "base/message_loop_proxy.h"
@@ -490,7 +491,9 @@ bool SequencedWorkerPool::Inner::PostTask(
sequenced.sequence_token_id = sequence_token.id_;
sequenced.shutdown_behavior = shutdown_behavior;
sequenced.posted_from = from_here;
- sequenced.task = task;
+ sequenced.task =
+ shutdown_behavior == BLOCK_SHUTDOWN ?
+ base::MakeCriticalClosure(task) : task;
int create_thread_id = 0;
{