1 // Copyright (c) 2013 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_SPDY_SPDY_SESSION_TEST_UTIL_H_ 6 #define NET_SPDY_SPDY_SESSION_TEST_UTIL_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "base/message_loop/message_loop.h" 12 #include "base/pending_task.h" 13 14 namespace net { 15 16 // SpdySessionTestTaskObserver is a MessageLoop::TaskObserver that monitors the 17 // completion of all tasks executed by the current MessageLoop, recording the 18 // number of tasks that refer to a specific function and filename. 19 class SpdySessionTestTaskObserver : public base::MessageLoop::TaskObserver { 20 public: 21 // Creates a SpdySessionTaskObserver that will record all tasks that are 22 // executed that were posted by the function named by |function_name|, located 23 // in the file |file_name|. 24 // Example: 25 // file_name = "foo.cc" 26 // function = "DoFoo" 27 SpdySessionTestTaskObserver(const std::string& file_name, 28 const std::string& function_name); 29 virtual ~SpdySessionTestTaskObserver(); 30 31 // Implements MessageLoop::TaskObserver. 32 virtual void WillProcessTask(const base::PendingTask& pending_task) OVERRIDE; 33 virtual void DidProcessTask(const base::PendingTask& pending_task) OVERRIDE; 34 35 // Returns the number of tasks posted by the given function and file. executed_count()36 uint16 executed_count() const { return executed_count_; } 37 38 private: 39 uint16 executed_count_; 40 std::string file_name_; 41 std::string function_name_; 42 }; 43 44 } // namespace net 45 46 #endif // NET_SPDY_SPDY_SESSION_TEST_UTIL_H_ 47