// 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 "third_party/blink/public/mojom/devtools/console_message.mojom.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,
                blink::mojom::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_
