00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00018
00019 #ifndef NET_INSTAWEB_UTIL_PUBLIC_MOCK_MESSAGE_HANDLER_H_
00020 #define NET_INSTAWEB_UTIL_PUBLIC_MOCK_MESSAGE_HANDLER_H_
00021
00022 #include <cstdarg>
00023 #include <map>
00024
00025 #include "base/scoped_ptr.h"
00026 #include "net/instaweb/util/public/basictypes.h"
00027 #include "net/instaweb/util/public/google_message_handler.h"
00028 #include "net/instaweb/util/public/message_handler.h"
00029
00030 namespace net_instaweb {
00031
00032 class AbstractMutex;
00033
00036 class MockMessageHandler : public GoogleMessageHandler {
00037 public:
00038 MockMessageHandler();
00039 virtual ~MockMessageHandler();
00040
00042 int MessagesOfType(MessageType type) const;
00043
00045 int TotalMessages() const;
00046
00048 int SeriousMessages() const;
00049
00050 protected:
00051 virtual void MessageVImpl(MessageType type, const char* msg, va_list args);
00052
00053 virtual void FileMessageVImpl(MessageType type, const char* filename,
00054 int line, const char* msg, va_list args);
00055
00056 private:
00057 typedef std::map<MessageType, int> MessageCountMap;
00058
00060 int TotalMessagesImpl() const;
00061 int MessagesOfTypeImpl(MessageType type) const;
00062
00063 scoped_ptr<AbstractMutex> mutex_;
00064 MessageCountMap message_counts_;
00065 DISALLOW_COPY_AND_ASSIGN(MockMessageHandler);
00066 };
00067
00068 }
00069
00070 #endif ///< NET_INSTAWEB_UTIL_PUBLIC_MOCK_MESSAGE_HANDLER_H_