|  | // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef NET_SPDY_SPDY_SESSION_TEST_UTIL_H_ | 
|  | #define NET_SPDY_SPDY_SESSION_TEST_UTIL_H_ | 
|  |  | 
|  | #include <string> | 
|  |  | 
|  | #include "base/basictypes.h" | 
|  | #include "base/message_loop/message_loop.h" | 
|  | #include "base/pending_task.h" | 
|  |  | 
|  | namespace net { | 
|  |  | 
|  | // SpdySessionTestTaskObserver is a MessageLoop::TaskObserver that monitors the | 
|  | // completion of all tasks executed by the current MessageLoop, recording the | 
|  | // number of tasks that refer to a specific function and filename. | 
|  | class SpdySessionTestTaskObserver : public base::MessageLoop::TaskObserver { | 
|  | public: | 
|  | // Creates a SpdySessionTaskObserver that will record all tasks that are | 
|  | // executed that were posted by the function named by |function_name|, located | 
|  | // in the file |file_name|. | 
|  | // Example: | 
|  | //  file_name = "foo.cc" | 
|  | //  function = "DoFoo" | 
|  | SpdySessionTestTaskObserver(const std::string& file_name, | 
|  | const std::string& function_name); | 
|  | ~SpdySessionTestTaskObserver() override; | 
|  |  | 
|  | // Implements MessageLoop::TaskObserver. | 
|  | void WillProcessTask(const base::PendingTask& pending_task) override; | 
|  | void DidProcessTask(const base::PendingTask& pending_task) override; | 
|  |  | 
|  | // Returns the number of tasks posted by the given function and file. | 
|  | uint16 executed_count() const { return executed_count_; } | 
|  |  | 
|  | private: | 
|  | uint16 executed_count_; | 
|  | std::string file_name_; | 
|  | std::string function_name_; | 
|  | }; | 
|  |  | 
|  | }  // namespace net | 
|  |  | 
|  | #endif  // NET_SPDY_SPDY_SESSION_TEST_UTIL_H_ |