1 // Copyright (c) 2011 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 REMOTING_HOST_PLUGIN_HOST_LOG_HANDLER_H_ 6 #define REMOTING_HOST_PLUGIN_HOST_LOG_HANDLER_H_ 7 8 #include <string> 9 10 namespace remoting { 11 12 class HostNPScriptObject; 13 14 class HostLogHandler { 15 public: 16 // Register the log handler. 17 // These should be called from the plugin init/destroy methods so that they 18 // are only called once per plugin process (not once per plugin instance). 19 static void RegisterLogMessageHandler(); 20 21 // We don't have the corresponding UnregisterLogMessageHandler because it 22 // is not safe to call it when there are multiple threads that might be 23 // logging. 24 25 static void RegisterLoggingScriptObject(HostNPScriptObject* script_object); 26 static void UnregisterLoggingScriptObject(HostNPScriptObject* script_object); 27 28 private: 29 // A Log Message Handler that is called after each LOG message has been 30 // processed. This must be of type LogMessageHandlerFunction defined in 31 // base/logging.h. 32 static bool LogToUI(int severity, const char* file, int line, 33 size_t message_start, const std::string& str); 34 }; 35 36 } // namespace remoting 37 38 #endif // REMOTING_HOST_PLUGIN_HOST_LOG_HANDLER_H_ 39