1// Copyright (c) 2006-2008 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.
4
5#ifndef NET_BASE_TEST_COMPLETION_CALLBACK_H_
6#define NET_BASE_TEST_COMPLETION_CALLBACK_H_
7#pragma once
8
9#include "base/callback.h"
10
11//-----------------------------------------------------------------------------
12// completion callback helper
13
14// A helper class for completion callbacks, designed to make it easy to run
15// tests involving asynchronous operations.  Just call WaitForResult to wait
16// for the asynchronous operation to complete.
17//
18// NOTE: Since this runs a message loop to wait for the completion callback,
19// there could be other side-effects resulting from WaitForResult.  For this
20// reason, this class is probably not ideal for a general application.
21//
22class TestCompletionCallback : public CallbackRunner< Tuple1<int> > {
23 public:
24  TestCompletionCallback();
25  virtual ~TestCompletionCallback();
26
27  int WaitForResult();
28
29  int GetResult(int result);
30
31  bool have_result() const { return have_result_; }
32
33  virtual void RunWithParams(const Tuple1<int>& params);
34
35 private:
36  int result_;
37  bool have_result_;
38  bool waiting_for_result_;
39};
40
41#endif  // NET_BASE_TEST_COMPLETION_CALLBACK_H_
42