Roll src/third_party/WebKit 8121bc6:918aba1 (svn 188871:188878)
[chromium-blink-merge.git] / net / base / test_completion_callback.cc
blob7094592d1dd1d03ce56007d9122e9f30b0a5ce8e
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "net/base/test_completion_callback.h"
7 #include "base/bind.h"
8 #include "base/bind_helpers.h"
9 #include "base/compiler_specific.h"
10 #include "base/message_loop/message_loop.h"
11 #include "net/base/io_buffer.h"
13 namespace net {
15 namespace internal {
17 void TestCompletionCallbackBaseInternal::DidSetResult() {
18 have_result_ = true;
19 if (waiting_for_result_)
20 base::MessageLoop::current()->Quit();
23 void TestCompletionCallbackBaseInternal::WaitForResult() {
24 DCHECK(!waiting_for_result_);
25 while (!have_result_) {
26 waiting_for_result_ = true;
27 base::MessageLoop::current()->Run();
28 waiting_for_result_ = false;
30 have_result_ = false; // Auto-reset for next callback.
33 TestCompletionCallbackBaseInternal::TestCompletionCallbackBaseInternal()
34 : have_result_(false),
35 waiting_for_result_(false) {
38 TestCompletionCallbackBaseInternal::~TestCompletionCallbackBaseInternal() {
41 } // namespace internal
43 TestClosure::TestClosure()
44 : closure_(base::Bind(&TestClosure::DidSetResult, base::Unretained(this))) {
47 TestClosure::~TestClosure() {
50 TestCompletionCallback::TestCompletionCallback()
51 : callback_(base::Bind(&TestCompletionCallback::SetResult,
52 base::Unretained(this))) {
55 TestCompletionCallback::~TestCompletionCallback() {
58 TestInt64CompletionCallback::TestInt64CompletionCallback()
59 : callback_(base::Bind(&TestInt64CompletionCallback::SetResult,
60 base::Unretained(this))) {
63 TestInt64CompletionCallback::~TestInt64CompletionCallback() {
66 ReleaseBufferCompletionCallback::ReleaseBufferCompletionCallback(
67 IOBuffer* buffer) : buffer_(buffer) {
70 ReleaseBufferCompletionCallback::~ReleaseBufferCompletionCallback() {
73 void ReleaseBufferCompletionCallback::SetResult(int result) {
74 if (!buffer_->HasOneRef())
75 result = net::ERR_FAILED;
76 TestCompletionCallback::SetResult(result);
79 } // namespace net