1*6777b538SAndroid Build Coastguard Worker // Copyright 2012 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #include "net/base/test_completion_callback.h" 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker #include "base/compiler_specific.h" 8*6777b538SAndroid Build Coastguard Worker #include "base/functional/bind.h" 9*6777b538SAndroid Build Coastguard Worker #include "base/functional/callback_helpers.h" 10*6777b538SAndroid Build Coastguard Worker #include "base/run_loop.h" 11*6777b538SAndroid Build Coastguard Worker #include "net/base/io_buffer.h" 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Worker namespace net { 14*6777b538SAndroid Build Coastguard Worker 15*6777b538SAndroid Build Coastguard Worker namespace internal { 16*6777b538SAndroid Build Coastguard Worker DidSetResult()17*6777b538SAndroid Build Coastguard Workervoid TestCompletionCallbackBaseInternal::DidSetResult() { 18*6777b538SAndroid Build Coastguard Worker have_result_ = true; 19*6777b538SAndroid Build Coastguard Worker if (run_loop_) 20*6777b538SAndroid Build Coastguard Worker run_loop_->Quit(); 21*6777b538SAndroid Build Coastguard Worker } 22*6777b538SAndroid Build Coastguard Worker WaitForResult()23*6777b538SAndroid Build Coastguard Workervoid TestCompletionCallbackBaseInternal::WaitForResult() { 24*6777b538SAndroid Build Coastguard Worker DCHECK(!run_loop_); 25*6777b538SAndroid Build Coastguard Worker if (!have_result_) { 26*6777b538SAndroid Build Coastguard Worker run_loop_ = std::make_unique<base::RunLoop>( 27*6777b538SAndroid Build Coastguard Worker base::RunLoop::Type::kNestableTasksAllowed); 28*6777b538SAndroid Build Coastguard Worker run_loop_->Run(); 29*6777b538SAndroid Build Coastguard Worker run_loop_.reset(); 30*6777b538SAndroid Build Coastguard Worker DCHECK(have_result_); 31*6777b538SAndroid Build Coastguard Worker } 32*6777b538SAndroid Build Coastguard Worker have_result_ = false; // Auto-reset for next callback. 33*6777b538SAndroid Build Coastguard Worker } 34*6777b538SAndroid Build Coastguard Worker 35*6777b538SAndroid Build Coastguard Worker TestCompletionCallbackBaseInternal::TestCompletionCallbackBaseInternal() = 36*6777b538SAndroid Build Coastguard Worker default; 37*6777b538SAndroid Build Coastguard Worker 38*6777b538SAndroid Build Coastguard Worker TestCompletionCallbackBaseInternal::~TestCompletionCallbackBaseInternal() = 39*6777b538SAndroid Build Coastguard Worker default; 40*6777b538SAndroid Build Coastguard Worker 41*6777b538SAndroid Build Coastguard Worker } // namespace internal 42*6777b538SAndroid Build Coastguard Worker 43*6777b538SAndroid Build Coastguard Worker TestClosure::~TestClosure() = default; 44*6777b538SAndroid Build Coastguard Worker 45*6777b538SAndroid Build Coastguard Worker TestCompletionCallback::~TestCompletionCallback() = default; 46*6777b538SAndroid Build Coastguard Worker 47*6777b538SAndroid Build Coastguard Worker TestInt64CompletionCallback::~TestInt64CompletionCallback() = default; 48*6777b538SAndroid Build Coastguard Worker ReleaseBufferCompletionCallback(IOBuffer * buffer)49*6777b538SAndroid Build Coastguard WorkerReleaseBufferCompletionCallback::ReleaseBufferCompletionCallback( 50*6777b538SAndroid Build Coastguard Worker IOBuffer* buffer) : buffer_(buffer) { 51*6777b538SAndroid Build Coastguard Worker } 52*6777b538SAndroid Build Coastguard Worker 53*6777b538SAndroid Build Coastguard Worker ReleaseBufferCompletionCallback::~ReleaseBufferCompletionCallback() = default; 54*6777b538SAndroid Build Coastguard Worker SetResult(int result)55*6777b538SAndroid Build Coastguard Workervoid ReleaseBufferCompletionCallback::SetResult(int result) { 56*6777b538SAndroid Build Coastguard Worker if (!buffer_->HasOneRef()) 57*6777b538SAndroid Build Coastguard Worker result = ERR_FAILED; 58*6777b538SAndroid Build Coastguard Worker TestCompletionCallback::SetResult(result); 59*6777b538SAndroid Build Coastguard Worker } 60*6777b538SAndroid Build Coastguard Worker 61*6777b538SAndroid Build Coastguard Worker } // namespace net 62