// Copyright 2014 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 EXTENSIONS_RENDERER_CONSOLE_H_
#define EXTENSIONS_RENDERER_CONSOLE_H_

#include <string>

#include "content/public/common/console_message_level.h"
#include "v8/include/v8.h"

namespace extensions {
class ScriptContext;

// Utility for logging console messages.
namespace console {

// Adds |message| to the console of of the |script_context|. If |script_context|
// is null, LOG()s the message instead.
void AddMessage(ScriptContext* script_context,
                content::ConsoleMessageLevel level,
                const std::string& message);

// Logs an Error then crashes the current process.
void Fatal(ScriptContext* context, const std::string& message);

// Returns a new v8::Object with each standard log method (Debug/Log/Warn/Error)
// bound to respective debug/log/warn/error methods. This is a direct drop-in
// replacement for the standard devtools console.* methods usually accessible
// from JS.
v8::Local<v8::Object> AsV8Object(v8::Isolate* isolate);

}  // namespace console

}  // namespace extensions

#endif  // EXTENSIONS_RENDERER_CONSOLE_H_
