Chromium Code Reviews| Index: components/gcm_driver/instance_id/instance_id_impl.cc |
| diff --git a/components/gcm_driver/instance_id/instance_id_impl.cc b/components/gcm_driver/instance_id/instance_id_impl.cc |
| index 013ddbff354b17dbb939a99a5990cfd39a905bab..56a0cbed8d2c16e43743480ea3feea22dcd0710c 100644 |
| --- a/components/gcm_driver/instance_id/instance_id_impl.cc |
| +++ b/components/gcm_driver/instance_id/instance_id_impl.cc |
| @@ -15,6 +15,7 @@ |
| #include "base/memory/ptr_util.h" |
| #include "base/message_loop/message_loop.h" |
| #include "base/strings/string_number_conversions.h" |
| +#include "base/threading/thread_task_runner_handle.h" |
| #include "components/gcm_driver/gcm_driver.h" |
| #include "crypto/random.h" |
| @@ -67,15 +68,8 @@ InstanceIDImpl::~InstanceIDImpl() { |
| } |
| void InstanceIDImpl::GetID(const GetIDCallback& callback) { |
| - if (!delayed_task_controller_.CanRunTaskWithoutDelay()) { |
| - delayed_task_controller_.AddTask( |
| - base::Bind(&InstanceIDImpl::DoGetID, |
| - weak_ptr_factory_.GetWeakPtr(), |
| - callback)); |
| - return; |
| - } |
| - |
| - DoGetID(callback); |
| + RunWhenReady(base::Bind(&InstanceIDImpl::DoGetID, |
| + weak_ptr_factory_.GetWeakPtr(), callback)); |
| } |
| void InstanceIDImpl::DoGetID(const GetIDCallback& callback) { |
| @@ -84,15 +78,8 @@ void InstanceIDImpl::DoGetID(const GetIDCallback& callback) { |
| } |
| void InstanceIDImpl::GetCreationTime(const GetCreationTimeCallback& callback) { |
| - if (!delayed_task_controller_.CanRunTaskWithoutDelay()) { |
| - delayed_task_controller_.AddTask( |
| - base::Bind(&InstanceIDImpl::DoGetCreationTime, |
| - weak_ptr_factory_.GetWeakPtr(), |
| - callback)); |
| - return; |
| - } |
| - |
| - DoGetCreationTime(callback); |
| + RunWhenReady(base::Bind(&InstanceIDImpl::DoGetCreationTime, |
| + weak_ptr_factory_.GetWeakPtr(), callback)); |
| } |
| void InstanceIDImpl::DoGetCreationTime( |
| @@ -108,18 +95,9 @@ void InstanceIDImpl::GetToken( |
| DCHECK(!authorized_entity.empty()); |
| DCHECK(!scope.empty()); |
| - if (!delayed_task_controller_.CanRunTaskWithoutDelay()) { |
| - delayed_task_controller_.AddTask( |
| - base::Bind(&InstanceIDImpl::DoGetToken, |
| - weak_ptr_factory_.GetWeakPtr(), |
| - authorized_entity, |
| - scope, |
| - options, |
| - callback)); |
| - return; |
| - } |
| - |
| - DoGetToken(authorized_entity, scope, options, callback); |
| + RunWhenReady(base::Bind(&InstanceIDImpl::DoGetToken, |
| + weak_ptr_factory_.GetWeakPtr(), authorized_entity, |
| + scope, options, callback)); |
| } |
| void InstanceIDImpl::DoGetToken( |
| @@ -142,14 +120,9 @@ void InstanceIDImpl::ValidateToken(const std::string& authorized_entity, |
| DCHECK(!scope.empty()); |
| DCHECK(!token.empty()); |
| - if (!delayed_task_controller_.CanRunTaskWithoutDelay()) { |
| - delayed_task_controller_.AddTask(base::Bind( |
| - &InstanceIDImpl::DoValidateToken, weak_ptr_factory_.GetWeakPtr(), |
| - authorized_entity, scope, token, callback)); |
| - return; |
| - } |
| - |
| - DoValidateToken(authorized_entity, scope, token, callback); |
| + RunWhenReady(base::Bind(&InstanceIDImpl::DoValidateToken, |
| + weak_ptr_factory_.GetWeakPtr(), authorized_entity, |
| + scope, token, callback)); |
| } |
| void InstanceIDImpl::DoValidateToken(const std::string& authorized_entity, |
| @@ -170,17 +143,9 @@ void InstanceIDImpl::DeleteTokenImpl(const std::string& authorized_entity, |
| DCHECK(!authorized_entity.empty()); |
| DCHECK(!scope.empty()); |
| - if (!delayed_task_controller_.CanRunTaskWithoutDelay()) { |
| - delayed_task_controller_.AddTask( |
| - base::Bind(&InstanceIDImpl::DoDeleteToken, |
| - weak_ptr_factory_.GetWeakPtr(), |
| - authorized_entity, |
| - scope, |
| - callback)); |
| - return; |
| - } |
| - |
| - DoDeleteToken(authorized_entity, scope, callback); |
| + RunWhenReady(base::Bind(&InstanceIDImpl::DoDeleteToken, |
| + weak_ptr_factory_.GetWeakPtr(), authorized_entity, |
| + scope, callback)); |
| } |
| void InstanceIDImpl::DoDeleteToken( |
| @@ -199,15 +164,8 @@ void InstanceIDImpl::DoDeleteToken( |
| } |
| void InstanceIDImpl::DeleteIDImpl(const DeleteIDCallback& callback) { |
| - if (!delayed_task_controller_.CanRunTaskWithoutDelay()) { |
| - delayed_task_controller_.AddTask( |
| - base::Bind(&InstanceIDImpl::DoDeleteID, |
| - weak_ptr_factory_.GetWeakPtr(), |
| - callback)); |
| - return; |
| - } |
| - |
| - DoDeleteID(callback); |
| + RunWhenReady(base::Bind(&InstanceIDImpl::DoDeleteID, |
| + weak_ptr_factory_.GetWeakPtr(), callback)); |
| } |
| void InstanceIDImpl::DoDeleteID(const DeleteIDCallback& callback) { |
| @@ -305,4 +263,11 @@ gcm::InstanceIDHandler* InstanceIDImpl::Handler() { |
| return handler; |
| } |
| +void InstanceIDImpl::RunWhenReady(base::Closure task) { |
| + if (!delayed_task_controller_.CanRunTaskWithoutDelay()) |
| + delayed_task_controller_.AddTask(task); |
| + else |
| + base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, task); |
|
Peter Beverloo
2017/04/03 17:45:01
It's a bit unfortunate that this makes things asyn
johnme
2017/04/03 17:50:43
Acknowledged :)
|
| +} |
| + |
| } // namespace instance_id |