Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(124)

Unified Diff: third_party/WebKit/Source/bindings/core/v8/custom/V8ConsoleBaseCustom.cpp

Issue 1859293002: [DevTools] Move Console to v8_inspector (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/bindings/core/v8/custom/V8ConsoleBaseCustom.cpp
diff --git a/third_party/WebKit/Source/bindings/core/v8/custom/V8ConsoleBaseCustom.cpp b/third_party/WebKit/Source/bindings/core/v8/custom/V8ConsoleBaseCustom.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..312489fe93fccbcc9c2af887ac1ee7dc17ce2ab6
--- /dev/null
+++ b/third_party/WebKit/Source/bindings/core/v8/custom/V8ConsoleBaseCustom.cpp
@@ -0,0 +1,328 @@
+// Copyright 2016 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.
+
+#include "bindings/core/v8/V8ConsoleBase.h"
+
+#include "bindings/core/v8/ExceptionState.h"
+#include "bindings/core/v8/ScriptCallStack.h"
+#include "bindings/core/v8/ScriptState.h"
+#include "core/frame/Deprecation.h"
+#include "core/inspector/ConsoleMessage.h"
+#include "core/inspector/InspectorConsoleInstrumentation.h"
+#include "core/inspector/InspectorTraceEvents.h"
+#include "core/inspector/ScriptArguments.h"
+
+namespace blink {
+
+static String toString(v8::Local<v8::Value> value)
+{
+ if (value.IsEmpty() || !value->IsString())
+ return String();
+ return v8StringToWebCoreString<String>(value.As<v8::String>(), DoNotExternalize);
+}
+
+static void internalAddMessage(MessageType type, MessageLevel level, const v8::FunctionCallbackInfo<v8::Value>& info, bool allowEmptyArguments, int firstArg)
+{
+ if (!allowEmptyArguments && !info.Length())
+ return;
+ ScriptState* scriptState = ScriptState::current(info.GetIsolate());
+ RawPtr<ScriptArguments> scriptArguments(ScriptArguments::create(scriptState, info, firstArg));
+ if (scriptState && !scriptState->contextIsValid())
+ scriptArguments.clear();
+ String message;
+ if (scriptArguments)
+ scriptArguments->getFirstArgumentAsString(message);
+
+ ConsoleMessage* consoleMessage = ConsoleMessage::create(ConsoleAPIMessageSource, level, message);
+ consoleMessage->setType(type);
+ consoleMessage->setScriptState(scriptState);
+ consoleMessage->setScriptArguments(scriptArguments.release());
+ consoleMessage->setCallStack(ScriptCallStack::captureForConsole());
+
+ ConsoleBase* console = V8ConsoleBase::toImplWithTypeCheck(info.GetIsolate(), info.Data());
+ if (!console)
+ return;
+ console->reportMessageToConsole(consoleMessage);
+}
+
+static void debugFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ internalAddMessage(LogMessageType, DebugMessageLevel, info, false, 0);
+}
+
+void V8ConsoleBase::debugAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), debugFunction, info.Holder()));
dgozman 2016/04/06 15:51:33 Is it fine to create new function for each call? W
kozy 2016/04/06 17:45:20 I've compared perfomance: https://docs.google.com/
+}
+
+static void errorFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ internalAddMessage(LogMessageType, ErrorMessageLevel, info, false, 0);
+}
+
+void V8ConsoleBase::errorAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), errorFunction, info.Holder()));
+}
+
+static void infoFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ internalAddMessage(LogMessageType, InfoMessageLevel, info, false, 0);
+}
+
+void V8ConsoleBase::infoAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), infoFunction, info.Holder()));
+}
+
+static void logFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ internalAddMessage(LogMessageType, LogMessageLevel, info, false, 0);
+}
+
+void V8ConsoleBase::logAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), logFunction, info.Holder()));
+}
+
+static void warnFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ internalAddMessage(LogMessageType, WarningMessageLevel, info, false, 0);
+}
+
+void V8ConsoleBase::warnAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), warnFunction, info.Holder()));
+}
+
+static void dirFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ internalAddMessage(DirMessageType, LogMessageLevel, info, false, 0);
+}
+
+void V8ConsoleBase::dirAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), dirFunction, info.Holder()));
+}
+
+static void dirxmlFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ internalAddMessage(DirXMLMessageType, LogMessageLevel, info, false, 0);
+}
+
+void V8ConsoleBase::dirxmlAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), dirxmlFunction, info.Holder()));
+}
+
+static void tableFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ internalAddMessage(TableMessageType, LogMessageLevel, info, false, 0);
+}
+
+void V8ConsoleBase::tableAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), tableFunction, info.Holder()));
+}
+
+static void traceFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ internalAddMessage(TraceMessageType, LogMessageLevel, info, true, 0);
+}
+
+void V8ConsoleBase::traceAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), traceFunction, info.Holder()));
+}
+
+static void groupFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ internalAddMessage(StartGroupMessageType, LogMessageLevel, info, true, 0);
+}
+
+void V8ConsoleBase::groupAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), groupFunction, info.Holder()));
+}
+
+static void groupCollapsedFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ internalAddMessage(StartGroupCollapsedMessageType, LogMessageLevel, info, true, 0);
+}
+
+void V8ConsoleBase::groupCollapsedAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), groupCollapsedFunction, info.Holder()));
+}
+
+static void groupEndFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ internalAddMessage(EndGroupMessageType, LogMessageLevel, info, true, 0);
+}
+
+void V8ConsoleBase::groupEndAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), groupEndFunction, info.Holder()));
+}
+
+static void clearFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ internalAddMessage(ClearMessageType, LogMessageLevel, info, true, 0);
+}
+
+void V8ConsoleBase::clearAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), clearFunction, info.Holder()));
+}
+
+static void countFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ ConsoleBase* console = V8ConsoleBase::toImplWithTypeCheck(info.GetIsolate(), info.Data());
+ if (!console)
+ return;
+ ScriptState* scriptState = ScriptState::current(info.GetIsolate());
+ RawPtr<ScriptArguments> scriptArguments(ScriptArguments::create(scriptState, info, 0));
+ console->count(scriptState, scriptArguments.release());
+}
+
+void V8ConsoleBase::countAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), countFunction, info.Holder()));
+}
+
+static void assertFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ ExceptionState exceptionState(ExceptionState::ExecutionContext, "assert", "ConsoleBase", info.Holder(), info.GetIsolate());
+ bool condition = false;
+ if (info.Length() > 0) {
+ condition = toBoolean(info.GetIsolate(), info[0], exceptionState);
+ if (exceptionState.throwIfNeeded())
+ return;
+ }
+ if (condition)
+ return;
+ internalAddMessage(AssertMessageType, ErrorMessageLevel, info, true, 1);
+}
+
+void V8ConsoleBase::assertAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), assertFunction, info.Holder()));
+}
+
+static void markTimelineFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ Deprecation::countDeprecationIfNotPrivateScript(info.GetIsolate(), currentExecutionContext(info.GetIsolate()), UseCounter::ConsoleMarkTimeline);
+ String title = info.Length() > 0 ? toString(info[0]) : String();
+ TRACE_EVENT_INSTANT1("devtools.timeline", "TimeStamp", TRACE_EVENT_SCOPE_THREAD, "data", InspectorTimeStampEvent::data(currentExecutionContext(info.GetIsolate()), title));
+}
+
+void V8ConsoleBase::markTimelineAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), markTimelineFunction, info.Holder()));
+}
+
+static void profileFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ ConsoleBase* console = V8ConsoleBase::toImplWithTypeCheck(info.GetIsolate(), info.Data());
+ if (!console)
+ return;
+ String title = info.Length() > 0 ? toString(info[0]) : String();
+ InspectorInstrumentation::consoleProfile(currentExecutionContext(info.GetIsolate()), title);
+}
+
+void V8ConsoleBase::profileAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), profileFunction, info.Holder()));
+}
+
+static void profileEndFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ ConsoleBase* console = V8ConsoleBase::toImplWithTypeCheck(info.GetIsolate(), info.Data());
+ if (!console)
+ return;
+ String title = info.Length() > 0 ? toString(info[0]) : String();
+ InspectorInstrumentation::consoleProfileEnd(currentExecutionContext(info.GetIsolate()), title);
+}
+
+void V8ConsoleBase::profileEndAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), profileEndFunction, info.Holder()));
+}
+
+static String formatTimelineTitle(const String& title)
+{
+ return String::format("Timeline '%s'", title.utf8().data());
+}
+
+static void timelineFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ Deprecation::countDeprecationIfNotPrivateScript(info.GetIsolate(), currentExecutionContext(info.GetIsolate()), UseCounter::ConsoleTimeline);
+ ConsoleBase* console = V8ConsoleBase::toImplWithTypeCheck(info.GetIsolate(), info.Data());
+ if (!console)
+ return;
+ String title = info.Length() > 0 ? toString(info[0]) : String();
+ TRACE_EVENT_COPY_ASYNC_BEGIN0("blink.console", formatTimelineTitle(title).utf8().data(), console);
+}
+
+void V8ConsoleBase::timelineAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), timelineFunction, info.Holder()));
+}
+
+static void timelineEndFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ Deprecation::countDeprecationIfNotPrivateScript(info.GetIsolate(), currentExecutionContext(info.GetIsolate()), UseCounter::ConsoleTimelineEnd);
+ ConsoleBase* console = V8ConsoleBase::toImplWithTypeCheck(info.GetIsolate(), info.Data());
+ if (!console)
+ return;
+ String title = info.Length() > 0 ? toString(info[0]) : String();
+ TRACE_EVENT_COPY_ASYNC_END0("blink.console", formatTimelineTitle(title).utf8().data(), console);
+}
+
+void V8ConsoleBase::timelineEndAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), timelineEndFunction, info.Holder()));
+}
+
+static void timeFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ ConsoleBase* console = V8ConsoleBase::toImplWithTypeCheck(info.GetIsolate(), info.Data());
+ if (!console)
+ return;
+ String title = info.Length() > 0 ? toString(info[0]) : String();
+ console->time(title);
+}
+
+void V8ConsoleBase::timeAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), timeFunction, info.Holder()));
+}
+
+static void timeEndFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ ConsoleBase* console = V8ConsoleBase::toImplWithTypeCheck(info.GetIsolate(), info.Data());
+ if (!console)
+ return;
+ String title = info.Length() > 0 ? toString(info[0]) : String();
+ ScriptState* scriptState = ScriptState::current(info.GetIsolate());
+ console->timeEnd(scriptState, title);
+}
+
+void V8ConsoleBase::timeEndAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), timeEndFunction, info.Holder()));
+}
+
+static void timeStampFunction(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ String title = info.Length() > 0 ? toString(info[0]) : String();
+ TRACE_EVENT_INSTANT1("devtools.timeline", "TimeStamp", TRACE_EVENT_SCOPE_THREAD, "data", InspectorTimeStampEvent::data(currentExecutionContext(info.GetIsolate()), title));
+}
+
+void V8ConsoleBase::timeStampAttributeGetterCustom(const v8::FunctionCallbackInfo<v8::Value>& info)
+{
+ info.GetReturnValue().Set(v8::Function::New(info.GetIsolate(), timeStampFunction, info.Holder()));
+}
+
+} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698