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 b10451fe0f7e41ede15a901481317a30710b07a9..013ddbff354b17dbb939a99a5990cfd39a905bab 100644 |
--- a/components/gcm_driver/instance_id/instance_id_impl.cc |
+++ b/components/gcm_driver/instance_id/instance_id_impl.cc |
@@ -134,6 +134,36 @@ void InstanceIDImpl::DoGetToken( |
weak_ptr_factory_.GetWeakPtr(), callback)); |
} |
+void InstanceIDImpl::ValidateToken(const std::string& authorized_entity, |
+ const std::string& scope, |
+ const std::string& token, |
+ const ValidateTokenCallback& callback) { |
+ DCHECK(!authorized_entity.empty()); |
+ 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); |
+} |
+ |
+void InstanceIDImpl::DoValidateToken(const std::string& authorized_entity, |
+ const std::string& scope, |
+ const std::string& token, |
+ const ValidateTokenCallback& callback) { |
+ if (id_.empty()) { |
+ callback.Run(false /* is_valid */); |
Peter Beverloo
2017/03/20 23:50:13
nit: this potentially is a synchronous return path
johnme
2017/03/30 18:36:38
The convention in this file seems to be for synchr
|
+ return; |
+ } |
+ |
+ Handler()->ValidateToken(app_id(), authorized_entity, scope, token, callback); |
+} |
+ |
void InstanceIDImpl::DeleteTokenImpl(const std::string& authorized_entity, |
const std::string& scope, |
const DeleteTokenCallback& callback) { |