• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 //
22 class TestCompletionCallback : public CallbackRunner< Tuple1<int> > {
23  public:
24   TestCompletionCallback();
25   virtual ~TestCompletionCallback();
26 
27   int WaitForResult();
28 
29   int GetResult(int result);
30 
have_result()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